Когда физика встречается с финансами: использование ИИ для решения уравнения Блэка-Шоулза

Вот как использовать физико-информационные нейронные сети для решения финансовых моделей с помощью Python.

Отказ от ответственностиЭто не финансовый совет. У меня есть докторская степень в области аэрокосмической техники, я специализируюсь на машинном обучении: я не Финансовый консультант. Целью данной статьи является демонстрация возможностей нейронных сетей, основанных на физике (PINN), в финансовом контексте.

Когда мне было 16 лет, я влюбился в физику. Причина была простой, но веской: я верил, что физика справедливый.

Я никогда не ошибался в упражнении из-за того, что скорость света изменилась за одну ночь или потому что e внезапно сталоx Отрицательно Каждый раз, когда я читал статью по физике, я думал: «Это не имеет смысла» Да, это так Это я не понял.

Итак, физика всегда справедлива, и вот почему она всегда идеально. Физика демонстрирует это совершенство и справедливость посредством своего набора правил, известных как дифференциальные уравнения.

Самое простое дифференциальное уравнение, которое я знаю, это:

Очень просто: начинаем здесь, х0=0, в момент времени t=0, затем движемся с постоянной скоростью 5 м/с. Это означает, что через 5 секунду мы находимся на расстоянии 10 метров (или миль, если вам так больше нравится) от начала координат; Через 43128 секунды мы находимся в XNUMX метрах от исходной точки; Спустя XNUMX XNUMX секунд... Думаю, вы поняли.

Как говорится, это высечено на камне: идеально, безупречно и не подлежит сомнению. Однако представьте себе это в реальной жизни. Представьте, что вы идете или едете на машине. Даже если вы изо всех сил стараетесь ехать с заданной скоростью, вам никогда не удастся поддерживать ее постоянной. Ваш разум будет метаться в определенных частях; Вы можете отвлечься, остановиться на красный свет светофора, а скорее всего, произойдет и то, и другое. Поэтому, возможно, простого дифференциального уравнения, о котором мы упоминали ранее, недостаточно. Что мы можем сделать, так это попытаться предсказать ваше положение с помощью дифференциального уравнения, Но С помощью Искусственный интеллект. Эта концепция очень важна при моделировании сложных систем.

Эта идея применяется в Нейронные сети, основанные на физике (ПИНН). Мы опишем это подробно позже, но идея в том, что мы пытаемся сопоставить кто бы Данные и то, что мы знаем из дифференциального уравнения, описывающего явление. Это означает, что мы заставляем наше решение в целом удовлетворять тому, что мы ожидаем от физики. Я знаю, это звучит как черная магия, но обещаю, что в этой статье все станет более ясно.

А теперь главный вопрос:

 

Какое отношение финансы имеют к физике и нейронным сетям на ее основе?

Оказывается, дифференциальные уравнения полезны не только тем, кто интересуется законами естественной вселенной, но и тем, кто может быть полезен в Финансовые модели. Например, модель использует Блэк-Скоулз Дифференциальное уравнение для определения цены опциона колл с некоторыми строгими предположениями, чтобы получить Безрисковый портфель.

Цель этого весьма сложного введения была двоякой:

  • Немного запутаю вас, чтобы вы могли продолжить чтение :)
  • Проявите любопытство и посмотрите, к чему все это приведет.

Надеюсь, мне это удалось 😁. Если вы это сделаете, то остальная часть статьи будет посвящена следующим шагам:

  1. Мы обсудим Модель Блэка-Шоулза, его предположения и его дифференциальное уравнение
  2. Мы поговорим о Физические нейронные сети (PINN), откуда он взялся и чем он полезен
  3. Мы разработаем собственный алгоритм, который обучает PINN на основе алгоритма Блэка-Шоулза, используя Питон и факел и ООП.
  4. Мы покажем результаты нашего алгоритма.

Я взволнован! В лабораторию! 🧪

1. Модель Блэка-Шоулза: подробный взгляд

 

Если вам интересно прочитать оригинальную исследовательскую работу по модели Блэка-Шоулза, вы можете найти ее здесь. здесь. Определенно стоит прочитать :)

Хорошо, теперь нам нужно понять мир. التمويل Где мы находимся, каковы переменные и какие законы этим управляют. Понимание основ финансов и их связи с законом Блэка-Шоулза имеет решающее значение.

Во-первых, в финансах есть мощный инструмент, который называется Огурец Опцион колл. Опцион колл дает вам право (но не обязательство) купить акции по определенной цене в указанном будущем (например, через год), которая называется ценой исполнения. цена).

Давайте задумаемся об этом на минутку, ладно? Предположим, что цена акций сегодня составляет 100 долларов. Предположим также, что у нас есть опцион колл с ценой исполнения 100 долларов. Теперь предположим, что в течение года цена акций вырастет до 150 долларов. Это потрясающе! Мы можем использовать этот колл-опцион, чтобы купить акции, а затем немедленно продать их обратно! Мы только что получили прибыль в размере 150 долларов - 100 долларов = 50 долларов. С другой стороны, если цена акций упадет до 80 долларов в течение года, мы не сможем этого сделать. На самом деле, нам лучше вообще не пользоваться своим правом покупки, чтобы не терять деньги.

Итак, теперь, когда мы об этом думаем, идея такова: купить акцию и продажа опциона Смотреть Полностью интегрированный. Я имею в виду, что случайность цены акций (тот факт, что она растет и падает) на самом деле может облегчить это Сохраняя правильное количество вариантов. Это то, что называется Дельта-хеджирование. Это фундаментальная стратегия управления рисками.

На основе ряда предположений мы можем вывести справедливая цена опциона Для того, чтобы получить кошелек Без риска. Эта концепция является основополагающей в модели Блэка-Шоулза.

Я не хочу утомлять вас всеми подробностями вывода (честно говоря, в оригинальной статье это несложно понять), но дифференциальное уравнение для безрискового портфеля выглядит следующим образом:

Имя:

  • C цена опциона в момент времени t
  • sigma Это волатильность акций.
  • r Это безрисковая ставка.
  • t время (при t=0 сейчас и T в конечной дате)
  • S текущая цена акций

Из этого уравнения мы можем вывести справедливую цену опциона колл для безрискового портфеля. Уравнение замкнутое и аналитическое и выглядит следующим образом:

с:

где N(x) — кумулятивная функция распределения (CDF) стандартного нормального распределения, K — цена исполнения, а T — дата истечения срока.

Например, это диаграмма. Цена акций (x) مقابل Опцион колл (г), согласно модели Блэка-Шоулза.

Это, конечно, звучит здорово, но какое отношение это имеет к физике и PINN? Уравнение, похоже, аналитическое, так почему же PINN? Почему искусственный интеллект? Зачем я вообще это читаю? Ответ ниже 👇:

 

2. Нейронные сети, основанные на физике

 

Если вас интересуют физико-информированные нейронные сети (PINN), вы можете ознакомиться с оригинальной статьей. здесь. Опять же, стоит прочитать. :)

Теперь уравнение выше АналитическийНо опять же, это уравнение справедливой цены в идеальном сценарии. Что произойдет, если мы на мгновение проигнорируем это и попытаемся угадать цену опциона на основе цены акций и времени? Например, мы можем использовать нейронную сеть прямого распространения и обучать ее с помощью обратного распространения. Этот подход лежит в основе использования нейронных сетей в ценообразовании опционов.

В этом механизме обучения мы минимизируем ошибку:

L = |Estimated C - Real C|:

Это хорошо, и это самый простой подход с использованием нейронной сети, который вы можете реализовать. Проблема здесь в том, что мы полностью игнорируем уравнение Блэка-Шоулза. Так есть ли другой путь? Можем ли мы их объединить?

Конечно, мы можем это сделать, если установим ошибку следующим образом:

L = |Estimated C - Real C|+ PDE(C,S,t)

где PDE(C,S,t) равно:

Он должен быть как можно ближе к 0:

Но вопрос все еще остается. Почему это «лучше» простого уравнения Блэка-Шоулза? Почему бы нам просто не использовать дифференциальное уравнение? Ну, потому что иногда в жизни решение дифференциального уравнения не гарантирует вам «истинного» решения. Физика обычно приближает вещи, и делает это таким образом, что может возникнуть разница между тем, что мы ожидаем, и тем, что видим. Вот почему нейронные сети, основанные на физике (PINN), являются таким удивительным и замечательным инструментом: вы пытаетесь соответствовать физике, но вы строго следите за тем, чтобы результаты соответствовали тому, что вы «видите» в своем наборе данных. Именно интеграция физической модели и экспериментальных данных отличает этот подход.

В нашем случае, возможно, для получения безрискового портфеля мы обнаруживаем, что теоретическая модель Блэка-Шоулза не совсем соответствует зашумленным, предвзятым или неполным рыночным данным, которые мы наблюдаем. Возможно, волатильность не является постоянной величиной. Возможно, рынок неэффективен. Возможно, предположения, лежащие в основе уравнения, не выдерживают критики. Вот тут-то и может пригодиться такой подход, как PINN. Мы не только находим решение, удовлетворяющее уравнению Блэка-Шоулза, но и «доверяем» тому, что видим из данных. Это позволяет создать более гибкую модель, которая легко адаптируется к реальным рыночным условиям.

Ладно, хватит теории. Давайте писать код. 👨‍💻

 

3. Практическое применение с использованием Python

Вы можете найти полный код вместе с великолепным файлом README.md, прекрасным блокнотом и предельно понятным шаблонным кодом. здесь. Этот код специально разработан для решения уравнения Блэка-Шоулза с использованием нейронных сетей PINN — передового метода в области финансового моделирования.

Примечание: эта часть будет немного интенсивной (много кода), и если вас не интересует программное обеспечение, смело переходите к следующей главе. Я покажу результаты более простым способом :)

Спасибо большое, что зашли так далеко ❤️
Давайте посмотрим, как это можно реализовать. Давайте теперь рассмотрим, как применять этот метод для решения уравнений Блэка-Шоулза, уделяя особое внимание практическим и детальным аспектам.

3.1 Файл config.json

Весь код можно запустить с помощью очень простого файла конфигурации, который я назвал config.json.

Как мы увидим позже, вы можете разместить его где угодно.

Этот файл имеет важное значение, поскольку он определяет все параметры, управляющие нашим моделированием, генерацией данных и обучением модели. Позвольте мне быстро объяснить, что представляет собой каждое значение:

  • K: Цена исполнения – Цена, по которой опцион дает вам право купить акции в будущем.
  • T: Время до даты платежа, в годах. разрешение T = 1.0 Это означает, что срок действия опциона истекает через одну единицу (например, через год).
  • r: безрисковая процентная ставка Используется для дисконтирования будущих значений. Это процентная ставка, которую мы указываем в нашем моделировании.
  • sigma: колебания Акция, которая определяет, насколько сложно предсказать цену акции или насколько она «рискованна». Опять же, это параметр моделирования.
  • N_data: число синтетические точки данных Который мы хотим создать для обучения. Это также определит размер узора.
  • min_S и max_S: Диапазон цен акций Которые мы хотим использовать при создании синтетических данных. Наша минимальная и максимальная цена акций.
  • bias: К ценам опционов добавлено опционное смещение, чтобы имитировать систематический сдвиг в данных. Это делается для того, чтобы создать контраст между реальным миром и данными Блэка-Шоулза.
  • noise_variance: уровень шума Добавляется к ценам опционов для имитации измерения или рыночного шума. Этот параметр добавлен по той же причине, что и раньше.
  • epochs: число повторения на котором будет обучаться модель.
  • lr: скорость обучения Для благотворителя. Это контролирует скорость обновления модели во время обучения.
  • log_interval:Количество раз (в терминах возраста), которое мы хотим Печать записей Для контроля за ходом обучения.

Каждый из этих параметров играет определенную роль: некоторые из них формируют финансовый мир, который мы моделируем, а другие контролируют, как наша нейронная сеть взаимодействует с этим миром. Небольшие изменения здесь могут привести к совершенно иному поведению, делая этот файл одновременно мощным и чувствительным. Изменение значений этого JSON-файла радикально изменит вывод вашего кода.

3.2 main.py (файл main.py)

Теперь давайте посмотрим, как остальная часть кода использует эту конфигурацию на практике.

Основная часть нашего кода исходит из main.pyЧтобы обучить сеть PINN с помощью Torch, черный_схолс.py.

Это файл main.py:

Итак, что вы можете сделать:

  1. Создайте свой собственный файл config.json
  2. Выполнить команду python main.py --config config.json

Файл main.py используется многими другими файлами.

3.3 black_scholes.py и его плагины

Приложение модели Блэка-Шоулза находится в файле. black_scholes.py:

Этот файл можно использовать для построения, обучения, экспорта и прогнозирования модели.
Функция также использует некоторые вспомогательные файлы, такие как data.py, loss.py и model.py.
Внутри файла находится шаблон Torch. модель.py:

Генератор данных (в терминах файла конфигурации) находится внутри файла. данные.py:

Интегральная функция потерь, включающая значение перекоса, имеет вид потеря.py. Эта функция необходима для повышения точности модели.

4. Результаты

Итак, когда мы запускаем main.py, наша нейронная сеть прямого распространения (FFNN) обучается, и мы получаем следующее:

Как видите, ошибка модели не равна точно 0, но уравнение PDE модели намного меньше данных. Это означает, что модель (естественно) заставляет наши прогнозы строго соответствовать дифференциальным уравнениям. Это именно то, о чем мы говорили ранее: мы улучшаем производительность с точки зрения имеющихся у нас данных и с точки зрения модели Блэка-Шоулза.

Мы можем наблюдать качественно высокое соответствие между зашумленным + смещенным (довольно реалистичным) реальным набором данных и сетью PINN.

Это результаты, когда t = 0, а цена акций изменяется вместе с опционом колл при фиксированном значении t. Круто, не правда ли? Но это еще не конец! Вы можете изучить результаты, используя приведенный выше код, двумя способами:

  1. Играя со многими параметры находится в config.json
  2. Посмотреть прогнозы на т>0

Я слушаю! :)

5. Выводы

Большое спасибо, что пришли сюда. На самом деле, это был долгий путь 😅
Вот что мы рассмотрели в этой статье:

  1. Мы начали с физики.и как ее законы, записанные в виде дифференциальных уравнений, справедливы, красивы и (обычно) предсказуемы.
  2. Мы перешли к финансамИ мы познакомились с моделью Блэка-Шоулза — дифференциальным уравнением, целью которого является оценка опционов безрисковым способом.
  3. Мы исследовали нейронные сети, основанные на физике (PINN)., тип нейронной сети, которая не просто подгоняет данные, но и учитывает базовое дифференциальное уравнение. PINN — мощный инструмент для моделирования сложных систем.
  4. Мы все сделали на Python.Использование PyTorch и чистой базы данных эталонных тестов, которая позволяет вам настраивать параметры, генерировать синтетические данные и обучать ваши собственные PINN для решения уравнения Блэка-Шоулза.
  5. Мы сфотографировали результаты. Мы увидели, как сеть научилась соответствовать не только зашумленным данным, но и поведению, ожидаемому от уравнения Блэка-Шоулза.

Я знаю, что нелегко все это сразу осознать. В некоторых областях мне пришлось быть кратким, возможно, даже короче, чем нужно. Однако, если вы хотите увидеть вещи более ясно, еще раз взгляните на: Папка GitHub. Даже если вас не интересует программное обеспечение, есть понятный файл README.md и простой шаблон. пример/BlackScholesModel.ipynb Проект поясняется шаг за шагом.

 

Комментарии закрыты.