Новости
17.05.2023
Книга «Python для финансистов»
Платформы для онлайн-торговли, программное обеспечение с открытым исходным кодом и финансовая информация, находящаяся в свободном доступе, значительно понизили, а то и полностью ликвидировали порог входа на мировые финансовые рынки. Теперь всего за несколько часов обычный человек с ограниченным бюджетом может начать заниматься алгоритмической торговлей. Студенты и преподаватели финансовых дисциплин, немного знающие программирование, могут применить последние инновации в области машинного и глубокого обучения к финансовым данным, пользуясь только ноутбуками, которые у них всегда с собой. Что касается технических средств, то облачные провайдеры с почасовой оплатой и практически неограниченной масштабируемостью за очень небольшую цену предоставляют возможность быстро и качественно вычислять и обрабатывать данные. Сегодня профессиональное финансовое образование лишь частично соответствует этим технологическим тенденциям.
Тем не менее все еще довольно часто основы математики, теория финансов и основы программирования преподаются независимо друг от друга и только в самом конце обучения — в комплексе с финансовой инженерией. В этой книге используется другой подход: финансовые концепции и методы программирования представлены во взаимосвязи с математическими понятиями (например, из линейной алгебры и теории вероятностей). Таким образом, абстрактные математические понятия объясняются с двух различных точек зрения — финансов и программирования. Вдобавок такой подход позволяет получить новый полезный опыт, поскольку и математические, и финансовые понятия могут быть переведены непосредственно в исполняемый код и исследованы в интерактивном режиме.
Несколько человек, прочитавших одну из моих предыдущих книг, «Python для финансовых расчетов», справедливо отметили, что она не подходит тем, кто только начинает знакомство с теорией финансов и программированием на Python. Действительно, предполагается, что читатель той книги имеет хотя бы небольшой опыт в данных сферах. Книга «Python для финансистов» восполняет этот пробел, поскольку фокусируется на основах и тем самым естественным образом подготавливает к прочтению «Python для финансовых расчетов», что в дальнейшем позволит развиваться и совершенствовать навыки работы с Python применительно к финансовым расчетам. Более подробно об этом рассказано в последней главе.
Эта же книга знакомит читателя с данными темами с нуля, и ему нужны лишь базовые знания в области математики, в частности математического анализа, линейной алгебры и теории вероятностей. Материал содержит практически полную информацию обо всех описанных в нем математических понятиях. Тем не менее может пригодиться вводный учебник математики, например учебник Пембертона и Рау.
Книга предназначена для студентов, ученых и специалистов, которые хотят получить знания по теории финансов, финансовому моделированию и использованию Python в финансовой инженерии. Она также может послужить систематически выстроенной основой для создания более сложных книг и курсов по этим темам.
Даже если читатель не собирается переходить к более сложным темам финансовой инженерии, вычислительных финансов, алгоритмической торговли или управления активами, знания по Python и финансам, которые он почерпнет из этой книги, можно использовать при выполнении стандартных финансовых задач, например, при составлении инвестиционных портфелей в соответствии с современной портфельной теорией (modern portfolio theory, MPT). Книга также рассказывает об оценке опционов и других деривативов с помощью стандартных методов, таких как портфельная репликация или риск-нейтральный подход к ценообразованию.
Эта книга подойдет руководителям, которые хотят узнать о применении Python в области финансов. В то же время она будет полезна тем, кто уже владеет Python или другим языком программирования и хочет узнать, как их можно использовать в данной сфере.
Логарифмическая полезность
В этом разделе представлена функция, которая хорошо подходит для финансового анализа, основанного на максимизирующем полезность агенте, — натуральный логарифм u(x) = ln x. Она удовлетворяет трем условиям, приведенным в предыдущем подразделе, и регулярно используется в финансах для моделирования пользы, которую агент получает от денег (или потребления). При условии, что x ∈ R>0, получается следующее.
Python позволяет графически изобразить три рассмотренные нами функции посредством библиотеки NumPy в сочетании с векторными вычислениями. На рис. 4.2 показан график, сгенерированный следующим кодом:
In [15]: x = np.linspace(0.5, 10, 50) ➊
In [16]: x[:5] ➋
Out[16]: array([0.5 , 0.69388, 0.88776, 1.08163, 1.27551])
In [17]: u = np.log(x) ➌
In [18]: u1 = 1 / x ➍
In [19]: u2 = -1 / x ** 2 ➎
In [20]: plt.figure(figsize=(10, 6)) ➏
plt.plot(x, u, label='$u$') ➐
plt.plot(x, u1, '--', label='$du/dx$') ➑
plt.plot(x, u2, '-.', label='$d^2u/dx^2$') ➑
plt.legend(loc=0); ➓
❶ Создание объекта ndarray с числами с плавающей запятой от 0,5 до 10 и равномерным интервалом для получения 50 значений.
❷ Вывод выборки из полученных чисел.
❸ Вычисление значений для функции полезности.
❹ И для ее первой производной, а также…
❺ …Для второй производной.
❻ Создание нового холста для построения графика и задание параметров размера.
❼ Нанесение на график функции полезности.
❽ Нанесение на график первой производной.
❾ Нанесение на график второй производной.
❿ Размещение условных обозначений в оптимальном месте (loc=0).
Аддитивная полезность относительно времени
С учетом натурального логарифма, использованного в качестве функции для моделирования полезности денег для агента, предпочтения агента относительно планов экономии c = (c0, c1) могут быть описаны как аддитивная функция полезности относительно времени следующего вида:
Предполагается, что κ ∈ R≥0 принимает значения 0 < κ ≤ 1 и представляет собой временные предпочтения агента. Суть данной функции в том, что деньги и потребление сегодня ценятся выше, чем через год: например, 100 долларов сейчас предпочтительнее 100 долларов через год независимо от того, какая точная функция описывает полезность (при условии постоянства предпочтений с течением времени). Ее также можно рассматривать как неденежный коэффициент дисконтирования. Вдобавок на основе частных производных по отношению к c0 и c1 легко убедиться, что эта функция удовлетворяет трем условиям, описанным ранее: она является дважды дифференцируемой, вогнутой и возрастающей.
При наличии у агента первоначального капитала w задача на условный экстремум имеет следующий вид:
таким образом:
или:
Необходимыми условиями оптимальности первого порядка в таком случае являются:
результатом которых становится:
Оптимальный план экономии теперь отражает временные предпочтения в том, что потребление через год c1 — это κ · c0. Также верны равенства:
и
Обязательным условием является бюджетное ограничение:
Следующий код решает задачу на оптимизацию в числовом виде при w = 10. Полученный оптимальный план отражает временные предпочтения агента:
In [21]: import math
In [22]: from scipy.optimize import minimize
In [23]: kappa = 10 / 11
In [24]: def U(c):
return -(math.log(c[0]) + kappa * math.log(c[1])) ❶
In [25]: w = 10
In [26]: cons = ({'type': 'eq', 'fun': lambda c: c[0] + c[1] - w})❷
In [27]: opt = minimize(U, (1, 1), constraints=cons)
In [28]: opt
Out[28]: fun: -3.0747286083026886
jac: array([-0.19091, -0.19091])
message: 'Optimization terminated successfully'
nfev: 18
nit: 6
njev: 6
status: 0
success: True
x: array([5.23811, 4.76189])
In [29]: opt['x'] ❸
Out[29]: array([5.23811, 4.76189])
In [30]: -opt['fun'] ❹
Out[30]: 3.0747286083026886
❶ Функция полезности со знаком минус для достижения максимизации через минимизацию.
❷ Бюджетное ограничение в виде ограничения типа равенства для выполнения функции minimize.
❸ Оптимальный план экономии, отражающий временные предпочтения, при котором c0 больше c1 ровно на 10 %.
❹ Максимальная полезность, получаемая по оптимальному плану.
Ожидаемая полезность
Перейдем к статической экономике с двумя состояниями и неопределенностью. Предположим, что у агента есть некоторый первоначальный капитал w ∈ R>0, пользу от которого он получит только за счет денег, доступных через год. Полезность этих денег разнится в зависимости от того, какое из двух возможных состояний материализуется. Данная ситуация представляет собой задачу на чистую инвестицию, где весь имеющийся первоначальный капитал должен быть вложен в оптимальные торгуемые финансовые активы.
Допустим, что торгуются два финансовых актива: безрисковая облигация с процессом ценообразования:
и рисковая акция с процессом ценообразования:
Финансовые активы являются средством переноса первоначального капитала с сегодняшнего дня на более поздний момент времени. Основная проблема агента при принятии решения заключается в том, чтобы определиться, какая часть денежных средств должна быть расходована в любом из будущих состояний.
Модель инвестиционной задачи, с которой сталкивается агент в условиях неопределенности, задается ожидаемой полезностью для агента, которая должна быть максимизирована с учетом значения w. Функция ожидаемой полезности имеет вид:
С вектором цен агент может распределить свой первоначальный капитал, исходя из следующего условия:
где вторая часть — составленный агентом портфель, содержащий безрисковую облигацию и рисковую акцию. Данное бюджетное ограничение всегда будет обязательным условием из-за бесконечности спроса агента. Помимо этого, запрещены продажи без покрытия («короткие» продажи).
Матрица рыночных выплат представлена как:
Сколько денег будет у агента в любом из состояний через год? Сумма определяется составленным им портфелем:
который можно преобразовать в:
или
Полная задача принятия агентом решений касательно выбора оптимального портфеля может быть представлена в виде задачи условного экстремума:
которую можно упростить до:
Согласно теореме Лагранжа эту задачу можно преобразовать в задачу безусловного экстремума:
где агент выбирает b и s для максимизации ожидаемой полезности с учетом бюджетного ограничения.
Теория ожидаемой полезности
Спустя десятилетия после разработки и внедрения теория ожидаемой полезности (Expected Utility Theory, EUT) все еще остается доминирующей парадигмой принятия финансовых решений, несмотря на то что одно из ее основных допущений — агенты имеют полное представление о возможных будущих состояниях и вероятности их реализации — практически никогда не выполняется в реальности. Тем не менее для многих EUT является интеллектуально привлекательной теоремой с приятными результатами, которые часто легко понять и интерпретировать. Подробнее о проблемах данной парадигмы в финансах можно узнать у Хилпиша (2020, главы 3 и 4).
Более подробно с книгой можно ознакомиться на сайте издательства.
Комментарии: 0
Пока нет комментариев