Моделирование методом Монте-Карло ценообразования на экзотические деривативы

Экзотические производные

Ванильные опционы дают держателю право, но не обязательство купить или продать базовый актив в заранее определенный момент времени по фиксированной цене. Говоря более конкретно, эти деривативы представляют собой колл и пут со стандартными выплатами, обычно торгуемыми на биржах. Экзотические деривативы относятся к опционам, которые обладают особыми свойствами, обычно отклоняясь от стандартной выплаты колл и пут. Экзотики обычно продаются на внебиржевом рынке, это далеко не полный список, но давайте рассмотрим некоторые распространенные примеры экзотики ...

Бинарный опцион

Бинарные опционы, иногда называемые «все или ничего» или цифровыми опционами, имеют заранее определенную фиксированную выплату, если срок действия базового актива истекает в деньгах. Есть два основных типа бинарных опционов…

  • Наличные или ничего: если срок действия базового актива истекает в деньгах, выплачивается фиксированная денежная выплата.
  • Актив или ничего: если срок действия базового актива истекает в деньгах, выплата эквивалентна стоимости базового актива.

Барьерный вариант

Барьерные опционы ведут себя как стандартные колл-опционы и пут-опционы, однако у них также есть барьерный уровень. Барьерный уровень - это заранее определенная цена базового актива, аналогичная цене исполнения, которая определяет, активен ли опцион. Некоторые распространенные типы барьеров:

  • Вверх и вниз: цена базового актива должна подняться до уровня барьера, чтобы выбить опцион.
  • Снижение и выход: цена базового актива должна опуститься до уровня барьера, чтобы выбить опцион.
  • вверх и вниз: цена базового актива должна подняться до уровня барьера, чтобы активировать опцию.
  • Вниз и внутрь: цена базового актива должна опуститься до уровня барьера, чтобы активировать опцию.

Если выбран вариант «Вверх / Вниз» и «Аут», он остается активным в течение всего срока его действия, пока базовый актив не достигнет уровня барьера. Если выбран вариант «Вверх / Вниз» и «Вниз», параметр должен достичь уровня барьера, чтобы стать активным.

Вариант выбора

Опция выбора дает держателю возможность выбрать, является ли опцион, который он держит, колл или пут к заранее определенному моменту времени t. Выплатой по опциону будет стандартный колл или пут, в зависимости от выбора держателя, сделанного до t.

Цены Блэка-Шоулза

Модель Блэка-Шоулза - это стандартная модель, используемая для определения стоимости ванильных опций. Та же логика из его вывода может быть применена к экзотике: смоделируйте выигрыш экзотики и найдите решение в замкнутой форме, решив дисконтированный выигрыш, нейтральный к риску. Однако это решение (если оно вообще существует) создает массу проблем для экзотики. Решения в закрытой форме фиксируют параметры в уравнении, такие как волатильность, итоговое ценовое решение действительно только в том случае, если базовый актив реализует параметризованную волатильность. Очевидно, что невозможно узнать, будет ли подразумеваемая волатильность реализованной волатильностью базового актива. Ценообразование Монте-Карло дает возможность изменять (систематически или случайным образом) параметры, что приводит к более надежному ценовому решению.

Стоимость активов

Временная стоимость денег

Вероятно, наиболее важной темой в курсовой работе по традиционным финансам является временная стоимость денег. По ставке дисконтирования можно найти текущую стоимость любого будущего денежного потока. Наиболее прямое применение - это ценообразование на аннуитеты и бессрочные выплаты, поскольку их будущие денежные потоки общеизвестны. Следовательно, стоимость этих инвестиционных инструментов сегодня является дисконтированной суммой их будущих денежных потоков.

Геометрическое броуновское движение

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

Класс ниже моделирует геометрическое броуновское движение в Python, которое будет использоваться для ценообразования ванильных и экзотических производных.

Моделирование Монте-Карло

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

Цены на экзотические производные

Монте-Карло: цены на ванильный звонок

Цена на стандартный вариант может показаться излишним, поскольку уже существуют рыночные цены на стандартные варианты. Вместо этого я хочу использовать результаты моделирования, чтобы проверить понятие ценообразования Монте-Карло. Для этого я возьму истинную рыночную стоимость стандартного опциона колл и сравню ее с итоговой ценой моделирования.

Рассмотрим следующие варианты звонков на SPY:

В частности, обратите внимание на колл со страйком 296 и текущей рыночной стоимостью 8,48 долларов, базовый актив в настоящее время торгуется по цене ~ 295 долларов. Это вариант, который я буду ценить. Разбивка параметров для этих опций следующая ...

  • Цена базового актива: 295 долларов США.
  • Начальная цена: 296 долларов США.
  • Предполагаемая волатильность: 24,35%
  • Предполагаемый дрейф: 0%
  • Ставка дисконтирования (по казначейским облигациям США на 1 год): 0,17%
  • Срок действия: 39/365 (39 дней до истечения срока)
  • Время моделирования: 1/365 (моделировать каждый день до истечения срока)

Рыночная цена опциона на покупку: 8,48 доллара США

Теперь давайте посмотрим на код Python для решения динамического ценообразования Монте-Карло.

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

В этом коде много чего происходит, поэтому давайте разберемся с ним. Сначала генерируется набор случайных процессов, затем для каждого случайного процесса время до истечения срока уменьшается на временной шаг (дни (1/365), недели (1/52), месяцы (1/12), лет (1)), и новая цена базового актива генерируется на основе свойств геометрического броуновского движения. Это эквивалентно созданию пробных путей. Если это сбивает с толку, я настоятельно рекомендую вам перечитать раздел выше, где представлен класс StochasticProcess. (Если возникнет дальнейшая путаница, вы можете прочитать мою статью Мартингалы и марковские процессы.) Затем рассчитывается выигрыш предопределенного европейского вызова для каждого пути выборки и добавляется к набору выплат. Этот набор выплат суммируется и дисконтируется до настоящего времени; в результате чего цена звонка. Чтобы сгенерировать цену Монте-Карло для звонка, запустите следующий код:

print('Monte Carlo Euro Call Price: ', EuroCallSimulation(EuroCall(296), 10000, 295, 0, 1/365, .2435, 39/365, .0017).price)

Откуда параметры для моделирования…

  • EuroCall (296): европейский колл с ценой исполнения 296
  • 10000: количество примеров путей для создания
  • 295: Текущая цена базового актива.
  • 1/365: временной интервал между ценами на активы.
  • 0,2435 (24,35%): подразумеваемая волатильность.
  • 39/365: время до истечения срока
  • .0017: ставка казначейства США за 1 год.

Компиляция и запуск агрегата предыдущего кода дает следующий результат:

Monte Carlo Euro Call Price:  8.67988960151905

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

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

Интуиция в ценообразовании с барьерными опционами

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

Монте-Карло ценообразование на барьер вверх и вниз

Рассмотрим эту маловероятную, но удачную ситуацию - после прочтения приведенной выше информации о распространенных типах экзотики и ценообразовании ванильных опционов Монте-Карло клиент подходит к вам и говорит: «Я заинтересован в покупке 100 000 опционов колл на SPY со страйком на 296 долларов, истекающим 30 июня. , но я считаю, что премия слишком дорогая. Я просто не думаю, что у базового актива [SPY] есть много возможностей, чтобы подняться выше $ 330 ». Что бы вы сказали? Что ж, к счастью, вы прочитали интересную статью об экзотике и интуитивно предложили своему клиенту вариант с верхним и нижним барьером с уровнем барьера в 330 долларов. Единственная оставшаяся проблема заключается в том, что вы не знаете, сколько взимать с клиента за экзотический производный инструмент.

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

Во-первых, давайте смоделируем вариант барьера как класс Python.

Теперь давайте создадим симуляцию Монте-Карло, аналогичную предыдущему европейскому вызову, с ограничением, что выигрыш будет равен нулю, если в любой момент цена базового актива превысит уровень барьера.

print('Monte Carlo Up and Out Call Price: ', CallBarrierOptionUpandOutSimulation(BarrierOption(296, 330), 10000, 295, 0, 1/365, .2435, 39/365, .0017).price)

Откуда параметры для моделирования…

  • BarrierOption (296, 330): вариант барьера со страйком 296 долларов и уровнем барьера 330 долларов.
  • 10000: количество примеров путей для создания
  • 295: Текущая цена базового актива.
  • 1/365: временной интервал между ценами на активы.
  • 0,2435 (24,35%): подразумеваемая волатильность.
  • 39/365: время до истечения срока
  • .0017: ставка казначейства США за 1 год.

Компиляция и запуск агрегата предыдущего кода дает следующий результат:

Monte Carlo Up and Out Call Price:  4.4312724309938805

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

Вместо того, чтобы ваш клиент платил (8,6 * 100 * 100 000 долларов США) или 86 000 000 долларов США за европейские опционы колл, вы предлагаете цену в размере (4,4 * 100 * 100 000 долларов США) или 44 000 000 долларов США за экзотику. Ваш клиент с радостью соглашается, так как экзотика отвечает его спекулятивным потребностям и обеспечивает почти меньшую цену, чем ванильные варианты.

Весь код этого проекта можно найти на моем GitHub.