Блог им. tashik

Делаем опционный калькулятор по биномиальным моделям оценки в Google Spreadsheet (часть 1)

    • 06 ноября 2021, 17:18
    • |
    • tashik
  • Еще
Модель Блэка-Шоулза, став де-факто индустриальным стандартом оценки опционов, успела навязнуть в зубах. Поэтому в этот славный выходной день мы побалуем себя альтернативным вариантом оценки — на основе моделей на базе биномиальных деревьев. То, что мы в итоге создадим, будет работать для наших маржируемых опционов американского типа с базовым активом-фьючерсом.

Суть биномиальной модели оценки в том, что при тех же вводных, что и у Блэка-Шоулза, она строится на разбиении времени до экспирации на равные временные интервалы (отрезки) (а в МБШ время непрерывно), и движение цены от начала одного отрезка к началу другого может быть либо вверх, либо вниз. Модель упрощает реальность ещё и тем, что в процентах шаг движения цены вверх и шаг движения цены вниз на всех отрезках одинаков, при этом шаг вверх может быть не равен шагу вниз. Размер шага вверх и шага вниз рассчитывается моделью из входных данных. Вероятности на следующем отрезке двигаться вверх или вниз также рассчитываются моделью из входных параметров и так же неизменны. Необязательно это будут вероятности 50/50, может получиться любое соотношение в сумме, дающее 100%.

Критикой моделей и их базовых предпосылок мы тут заниматься не будем. Мы тут будем опционный калькулятор писать.

Открываем Google Spreadsheets (MS Excel тоже подойдет, но у меня лапки MacOS, и Excel у меня там не имеется), создаем новый документ. Первый лист его будет представлять «морду» нашего калькулятора и содержать поля для входных параметров и поле для отображения результата расчета. Самое время эти входные параметры перечислить — вот таким образом (ВНИМАНИЕ! номера строк и буквы столбцов будут дальше иметь значение):

Делаем опционный калькулятор по биномиальным моделям оценки в Google Spreadsheet (часть 1)













Как видите, ничего незнакомого среди входных параметров нет. Волатильность — которая и есть по сути наша ставка, за которую нам платят и с нас берут) — как параметр модели есть, как и в МБШ.
Результат расчета будет выведен в ячейку B13.

Поименуем ячейки, чтобы было проще писать и читать формулы. Я решила остаться в привычной по БШ нотации, где S — текущая цена БА, sigma — волатильность, K — страйк, T — время до экспирации. Для типа опциона буду использовать имя CallPut, для вида опциона (американский или европейский) — AmEur. В Google Spreadsheets поименовать ячейки можно с помощью пункта меню Данные — Настроить именованные диапазоны. Встаем на ячейку, кликаем на пункт и в правой панели Добавить именованный диапазон.

Также введем в ячейки входные параметры — я выбрала опцион call на фьючерс на индекс РТС страйк 185000, ближняя серия (5 дней до экспирации, можно вводить и дробные значения, но для демонстрационных целей мы не будем тут упарываться с долями дней)

Получится так:

Делаем опционный калькулятор по биномиальным моделям оценки в Google Spreadsheet (часть 1)

Красота — страшная сила! Подготовка завершена. Едем дальше.

Начнем с того, что построим биномиальное дерево на произвольных фиксированных шагах и произвольных фиксированных вероятностях. Пусть для простоты шаг вверх будет равен шагу вниз и составит 1%, а вероятности движения цены вверх и вниз будут равными — 50/50. У нас пять дней до экспирации, поэтому количество временных отрезков (шагов) будет равно 5, а временной интервал одного шага будет равен одному дню. Дальше, развивая тему, можете сделать свой калькулятор в часах — смысл тот же. Мне на 5 отрезках проще демонстрировать.

В строке 3 добавим наши 5 шагов, пронумеровав от 0 до 5, где 0 — текущее значение цены БА. В ячейках A15-A18 введем названия шагов и вероятностей, а в ячейках B15-B18 укажем наши выбранные произвольные значения, чтобы получилось вот так:

Делаем опционный калькулятор по биномиальным моделям оценки в Google Spreadsheet (часть 1)
Чтобы получить текущую цену БА в вершине нашего дерева, введем в ячейку E4 формулу =S,  где S — как мы помним, имя ячейки с текущей ценой БА.
На бумаге биномиальное дерево выглядит как этакая не обязательно симметричная, но тут симметричная решетка:

Делаем опционный калькулятор по биномиальным моделям оценки в Google Spreadsheet (часть 1)
У нас в экселе оно будет выглядеть треугольником, чтобы не морочиться с симметрией и пустыми ячейками. Нулевой узел за шаг не считаем. На шаге 1 у нас станет уже два узла — Текущая цена БА * Приращение вверх и Текущая цена БА * Приращение вниз. В виде формул формулах =E4*UpMove и =E4*DownMove. На шаге 2 у нас будет уже три узла, в формулах =F4*UpMove, =F4 * DownMove, = F5 * DownMove. Продлеваем формулы до пятого шага, где у нас получится 6 итоговых точек-узлов.

Делаем опционный калькулятор по биномиальным моделям оценки в Google Spreadsheet (часть 1)

Дерево для БА у нас готово, в последней колонке мы имеем цены на экспирацию. Из них мы посчитаем выплаты нашего целевого 185-го колла на экспирацию. Очевидно, что формула для выплат будет (на примере первой из шести цен на пятом шаге)
=MAX(0;IF(CallPut=1;J4-K;K-J4))
Растягиваем формулу вниз на 6 строк, получаем выплаты на экспирацию по 185-му коллу в каждой точке. Итак имеем на пятом шаге 6 цен выплат, и теперь нам предстоит построить дерево для опционов с конца в начало.

Сколько будет стоить опцион в ячейки I13 на шаге 4? Если бы он был европейским, то чтобы найти цену назад, нам нужно уже привлечь вероятности (а они у нас 50 / 50):
=(J13*UpMoveProb+J14*DownMoveProb)
Но наш опцион американский, а это значит, что он может экспирироваться в любой момент, значит, нужно учесть еще и это. И тогда формула получится для предыдущей цены:
=MAX((J13*UpMoveProb+J14*DownMoveProb);IF(AmEur=1;IF(CallPut=1;I4-K;K-I4);0))
Растягиваем формулу, достраивая дерево назад, соблюдая количество узлов на каждом шаге. В ячейке E13 мы получим текущую цену опциона, значит в ячейке B13 у нас будет формула =E13

Делаем опционный калькулятор по биномиальным моделям оценки в Google Spreadsheet (часть 1)

Цену опциона рассчитали, поняли, как работает оценка через биномиальные деревья — но выше же было обещано, что размер приращения вверх и вниз, а также вероятности движения вверх и вниз модель посчитает сама из входных параметров! И где?!

Господа, все будет. Даже неоднократно ) В этом расчете состоит различие между разными биномиальными моделями оценки. Пришло время назвать и их: модель Кокса-Росса-Рубинштейна (Cox-Ross-Rubinstein, ничего общего с веществами, это фамилии трех человек) и модель Джарроу-Рудда. Так как мы уже хорошо потрудились, предлагаю оставить их для второй части статьи. 

Не переключайте канал! ;)

P.S. Буду признательна за указание на ошибки и неточности.
★9
22 комментария
А что дает смена модели, если на бирже все используют МБШ… а считают теоретику и волу и вовсе по нашим ордерам?
Активный Инвестор, делает кашу в голове пищей для ума )) Ну у меня по крайней мере оно так работает.
avatar
Каждый новый вариант дает дополнительный вариант для сравнения.
avatar
Всегда было «биномиАЛЬное», а не «биномИНАльное».
avatar
Анастасия _, спасибо
avatar
Ничего не понял, но продолжайте 
avatar

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

avatar
Denis, пожалуйста. Эквитью чего махать в каждом посте — она открыта в профиле ) Кому надо — сходит поглядит.
avatar
tashik, хороший прогресс пошел в эквити, удачи в дальнейшем!
avatar
При всём уважении это Очень Далеко от реального спедшита.
Где брать данные для дерева?
Где простой протокол ввода данных?
Где лично Вы видели подряд хотя бы пять свечек одинакового размера???
avatar
bozon, есть хорошая книжица Модельное мышление, и там вкратце говорится о том, что такое модели. В частности, моделирование идет через упрощение реальности, иногда через предельное — чтобы понять, как подступиться к явлению. Что такое простой протокол ввода данных? Там несколько ячеек для входных параметров. Куда бы проще? Дерево базового актива начинается с текущей цены БА на старте (в тексте об этом есть). Материал разбит на части.

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

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

Найдете ли лично Вы в этом практическое зерно и какое — не знаю, может и никакого не найдете. 
avatar
tashik, девушка, лично у меня есть интересное решение всех этих модельных перепитий. Жаль, что пропал энтузиазм, и нет интереса всё это эксцель-кодить. Могу лично Вам скинуть результат моих трудов за почти 15 лет работы.
avatar
bozon, как приятно, когда говорят девушка )) Буду благодарна, если вообще осилю математически. Я филолог и у меня с этим трудности очевидные. Но разбираться во всем таком очень люблю
avatar
tashik, мне тоже очень приятно общаться с человеческими особями женского пола, тем более на достаточно интимную тему опционов и их «производных». Благо, что взаимно:))
Давайте сделаем так:
— у меня сейчас нет доступа к моим it-наработкам;
— в течении месяца я их сформулирую письменно, и отправлю Вам в личку;
— в ответ буду ждать конструктивной критики моих результатов, может быть даже исправлений и некоторых допущений:))
avatar
bozon, я постараюсь дать конструктивную обратную связь, насколько это будет в моих скромных силах.
avatar
KarL$oH, думаю, мы и так не пересечёмся, я не осиливаю Халла, оставила попытки пока. Вышла на работу — ну как вышла, не езжу, но загружена по времени наравне с коллегами. Торговать снова стала. Халлу не осталось места, а так вот простенько разве что могу.
avatar
tashik, привет! Ты как всегда скромничаешь) отличный результат, всего хорошего тебе!
Модель Блэка-Шоулза, став де-факто индустриальным стандартом оценки опционов, успела навязнуть в зубах. Поэтому в этот славный выходной день мы побалуем себя альтернативным вариантом оценки — на основе моделей на базе биномиальных деревьев.

Ничего там не будет нового. При достаточно малом шаге все сойдется к МБШ один в один, хоть равный шаг вверх и вниз, и вероятности, хоть нет. Потому что существует Центральная Предельная Теорема, согласно которой сумма любых независимых отклонений в конечном счете — Гаусс.

То есть модель не даст вам абсолютно ничего, разве что учет «отрицательных цен», если будет работать не в логарифмическом, а  в натуральном масштабе. Но вы и МБШ можете в натуральном прогнать при желании.

Иными словами, конкретно в дереве «фишек» нет, но они могут быть побочным продуктом выбора другой системы предобработки данных.

 
avatar
Kot_Begemot, 
в конечном счете — Гаусс.
Может в бесконечном счете — Гаусс? А у нас все ограничено — время (кол во испытаний), цена, игроки и прочее…
Хотя это все конечно же частности.

Например как в соседней ветке — игроки во фьючах яндекса не принимают решения чаще чем раз в 5 минут — там ЦПТ работает (работает конечно нооо )?
avatar
Чувствую, что скоро найдут формулу Грааля! 
шикардос

avatar

теги блога tashik

....все тэги



UPDONW
Новый дизайн