Блог им. elogunov

Использование Maple для оценивания опционов

В этой статье я продемонстрирую, как можно использовать систему компьютерной математики Maple для построения моделей оценивания опционов, вычисления «греков» и выполнения кодогенерации для быстрого переноса полученных формул в код ваших проектов. Держитесь за стул крепче! ;)

Модель Блэка-Шоулза

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

Полученные формулы можно легко соотнести с известными (в частности, легко увидеть выражения для d1 и d2). Немного запутать может то, что Maple выражает CDF стандартного нормального распределения через функцию ошибок (erf):
Использование Maple для оценивания опционов

Maple (версии 2018) может генерировать код более чем на десяти языках программирования. Я, разумеется, буду генерировать код на языке R:
Использование Maple для оценивания опционов
Использование Maple для оценивания опционов

Разумеется, вручную всё это можно запрограммировать короче и понятнее. С другой стороны — получаемый код в большинстве случаев можно просто взять и начать использовать.

Использование Maple для оценивания опционов
Использование Maple для оценивания опционов
Использование Maple для оценивания опционов
Использование Maple для оценивания опционов

Случай нормально-распределенной цены

Рассмотрим более актуальный (после событий 20 апреля на CLK0/NYMEX) случай базового актива, который может принимать отрицательные значения. А именно: риск-нейтральное распределение цены на момент экспирации будет нормальным, а не лог-нормальным.

Пурпурным цветом будут выделены места, отличия в которых являются ключевыми в данной модели.
Использование Maple для оценивания опционов
Использование Maple для оценивания опционов
Использование Maple для оценивания опционов

Код получился достаточно громоздким, но он может быть значительно упрощён, если ввести moneyness и использовать её при расчёте цены опциона.
Использование Maple для оценивания опционов
Использование Maple для оценивания опционов

Вернёмся к изначальному варианту записи цен, сосчитаем «греки» опционов и сгенерируем код для их вычисления.
Использование Maple для оценивания опционов
Использование Maple для оценивания опционов
Использование Maple для оценивания опционов
Использование Maple для оценивания опционов
Использование Maple для оценивания опционов
Использование Maple для оценивания опционов

Приложение: файлы для скачивания
★21
79 комментариев
я ничего не понял, но это круто!)
Какое у Вас образование?
avatar
Gorizont_*^*_, скорее всего классов 7-8))
Григорий Левченко, вот это поворот, от чего такой вывод
avatar
Gorizont_*^*_, самоучка.
avatar
Gorizont_*^*_, " 
Она читала... Я внимал
То с восхищеньем, то с тоскою...
Нет, смысла я не понимал,
Но впечатленье — колдовское!
avatar
IliaM, ага)
avatar
я тут давно
но редко
это что еще за хрень???)))))
avatar
влад, местный доктор вечерком субботним на досуге по докторской выдает. Жаль, его проверить некому. Может, он просто прикалывается.
avatar
влад, 
я тут давно
но редко
нууиÖпт#, на СЛ уже давно так никто не пишет.
надо что-то в ключе: "λ распределения моей активности на СЛ — величина 6-7 порядка малости ))"
avatar
Я худею! 
avatar
Разумеется, вручную всё это можно запрограммировать короче и понятнее. С другой стороны — получаемый код в большинстве случаев можно просто взять и начать использовать.
 А еще есть github и google где можно просто взять и найти готовую реализацию всего необходимого и начать использовать, это будет и быстрее и понятнее
avatar
Интересно. Надо будет на досуге покрутить. Подскажите, вы юзаете для оценки опционов другие распределения (не нормальные)? Можете что то посоветовать в этой области.
avatar
Это задачи из ЕГЭ? ))
Врач-бондиатОр, 
ОГЭ
оценивание
Обалдеть просто.мегакруто, в смысле ясно, что я ничего не понял, но это здорово, что есть люди которые так подходят к рынку.мегауровень, мегапрофи
avatar
Андрей, давайте не будем делать скоропалительных выводов, а дождёмся и послушаем оппонентов. Вдруг всё в действительности не совсем так, как на самом деле. 
Вестников (Витковский), а смысл обманывать? В любом случае, мне это не проверить.но сам поход по сравнению с 90% темами, вроде-слил, но, но не сдаюсь и тд мне нравится
avatar
Небольшое дополнение. Знание программирования — бесценно, софт Maple — 1000$ 
avatar
IliaM, если бы. Maple 2020 Professional — US$ 2999. могу себе позволить, только вот шаращую голову не прикрутишь ни за какие деньги, это да. 
avatar
wot, я как раз про это
avatar
Теперь медленнно, о4ень медленно объясни мне дyракy..., 4то Все это зна4ило????
avatar
Chirikov Denis / Firetrade, 
Найден Храаль
ААААА это всего то коллайдер 4yвак сталю +
avatar
Chirikov Denis / Firetrade, 
avatar
asfa, о о я про него и говорил)))))
avatar
Chirikov Denis / Firetrade, 
Addition:
special for you from CERN (LHC experiment):
avatar
asfa, сказки братьев Гримм))
avatar
asfa, он настолько большой, что кривизну коридора почти не видно на глазок. Жесть!..
avatar
ch5oh, не знаю как сейчас, но раньше было так:
где-то на сайте ЦЕРНа можно заказать экскурсию. Желательно на группу. Обязательно заранее (срок — немалый, может и пару месяцев). Всё обговаривается.
Приезжают гости, их почти везде водят, всё рассказывают и показывают.
Чтобы было удобно, экскурсию проводит сотрудник на том языке, на котором разговаривают гости.
Экскурсия — БЕСПЛАТНАЯ!

Друзья ездили — всем понравилось. Сам пока не был (но мне особо и не надо).

Неизвестно как изменятся правила после карантина (там сейчас всё тоже не работает).
avatar

asfa, прикольно. Ну, буду жить в тех краях — попробую вписаться. Всё таки столько денег вбухано.

 

А ещё говорят они дают кусочки своих данных добровольцам на обработку. Потому что там с каждого эксперимента несколько сотен терабайт набегает. Сам не пробовал.

avatar
ch5oh, 
Ну, буду жить в тех краях

это не для жителей. Это для любого человека в мире! Для неместных вопрос в визе и расходах на отдых.

А ещё говорят они дают кусочки своих данных добровольцам на обработку. Потому что там с каждого эксперимента несколько сотен терабайт набегает.

не исключено, т.к. сил ЦЕРНа + сил институтов по миру, сотрудничающих с ЦЕРНом, явно недостаточно для обработки всех данных.
Говорят, им сейчас надо лет 5 всё обработать до конца, а не новые эксперименты делать. Однако процесс будет идти, там свои «коррупционеры»…
avatar
Тимофей Мартынов, самоизоляция!
Так бы гуляли на улице и ждали, пока СМЕ выдаст всё в готовом виде 
avatar
Тимофей Мартынов, Тим это не ЗОЖ… это ЖОЗ
avatar
 Парни а 4то ржоте… это коды запyска ракет КНДР
avatar

Друзья, тут ничего сверхъестественного не произошло вовсе.

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

Не понимаю, почему половина комментариев смотрит на это с невероятным восторгом?
По сути это просто превращение математических формул в программный код с помощью конкретного софта.

Отдыхайте, мужики! (© (Лапенко в образе Игоря Катамаранова)

 

avatar
Александр, Y нас тyт 3 класса то, не все закон4или...
avatar
Александр, да делать людям нечего/прикалываются так (наверно)

А именно: риск-нейтральное распределение цены на момент экспирации будет нормальным, а не лог-нормальным.

Не факт, что это верно.
avatar
Автор показал, как с помощью Maple без лишних усилий создать какую угодно модель ценообразования. Но при наличии Maple и диплома мехмата. А так все просто
avatar
Лисицин, это понятно.
Но https://smart-lab.ru/blog/616759.php#comment11096364


avatar
asfa, На момент экспирация цена будет принимать значение в 1 точке без распределения. Там уже не важно какое было распределение всю дорогу до этого. Берётся положительная разница Страйк и спота для опционов в деньгах и все.
avatar
Александр, всё так 
Просто я обратил внимание на "риск-нейтральное распределение цены будет нормальным, а не лог-нормальным", а вы на "момент экспирации".

Сделаем скидку, ведь писалось это в 2-3 часа ночи.
И Евгений вероятно ещё спит, а мы ему уже тут косточки моем... 
avatar

Александр, по стрелочке промазал, сорри...

«В момент экспирации» распределение вырождается в дельта-функцию Дирака.

 

 

Модели ценообразования всё равно какое было распределение «всю дорогу» и каким оно стало «в момент экспирации». Модели важно, какое распределение исходов в первый момент времени с горизонтом оценивания на месяц в будущее.

avatar
Александр, Не понимаю, почему половина комментариев смотрит на это с невероятным восторгом?< здесь 99% форумчан жмут на кнопку БАБЛО в терминале и не думают ни о чем лишнем — как в анекдоте " мужик, может подумаешь? -Да что тут думать! Трясти надо!" )
avatar
YuryDok, простите, а в каком терминале у «99% форумчан» эта кнопочка?
avatar
ch5oh, это была ирония..) кнопка не работает. лица и ники на смартлабе меняются с калейдоскопической быстротой )
avatar
 (сорри, если пропустил)  вопрос, что лучше покурить для оценки волы при отрицательных ценах не рассматривался?
з.ы
я просто тоже не сторонникне для ставок (!,а для cash-terms котир) юзать простое нормальное распределение
avatar
flextrader, Про способы оценивания волатильности делал большой пост. В принципе многие из них можно применять к разным типам returns: ln(p[t]/p[t-1]), p[t]/p[t-1]-1, p[t]-p[t-1].
avatar
Eugene Logunov, спс. Я к тому, что log варианты на околонулевых тиках будет требовать костылей, скорее всего
avatar
Классно, теперь с этой программой открыв пустой холодильник и правильно посчитав его пустоту я получу кучу еды.
avatar
Dmitry, это при логнормальном распределении… а при нормальном — включаешь первый (2,3,4,5..) канал и тебе вешают лапшу на уши… Следишь за соблюдением «лапша  первого канала/пустой холодильник»  паритета. При увеличении волатильности ора по первому — начинаешь продавать лапшу с ушей и одновременно покупать дешевую пустоту холодильника.
avatar
bohemian rhapsody, Тоже прочитали все его топики? )) Это в молодости было… и что в этом плохого? Поделитесь своим подходом к рынку. Будет интересно.
avatar
Не понимаю, чего все так возбудились на формулы. Да и по теме поста отписался всего 1 человек, и то вскользь.

Если формулы, лежащие в основе используемой модели рынка, сложнее, чем комбинация из 3-х пальцев, при кодировании моделей возникает масса ошибок, иногда глупых, иногда трудноуловимых.
Ибо типичный язык программирования слабо связан с математическим, парадигмы у них разные, ну, возможно, за исключением тривиальной арифметики (объекты — это совсем из другой сферы).

Соответственно, есть 2 варианта
1. Использовать языки, изобразительные средства которых максимально близки к математическим формулам (Matlab, Haskell, Julia)
2. Использовать систему символьных выводов и кодогенератор

Автор подробно с примерами расписал случай 2. В реалии при ручном наборе кода даже такой сложности (ну т.е. относительно невысокой) программа с первого (да и с второго-третьего) раза не заработает никогда.
Так что имеете шанс сэкономить массу времени.

С уважением
ТС показал,
avatar
Мальчик Buybuy, ну вот, от стартового топика многие возбудились, а на этом комменте некоторые и кончили.

Мальчик Buybuy, у автора неповторимый стиль, выгодно выделяющий его на фоне «99% форумчан с уже готовой кнопкой БАБЛО в терминале».

 

Кстати, что-то Вы перестали радовать нас содержательными топиками… Всё в трудах и заботах? =)

 

С уважением,

avatar
ch5oh, Если не секрет, планируете в TSlab добавлять какие-то модели с поддержкой отрицательных цен БА? Можно ли будет в этом случае построить аналог модели улыбки Каленковича или с этим могут быть какие-то трудности?
avatar

Eugene Logunov, 2) С отрицательными ценами и отрицательными страйками проблемы будут многочисленные и неожиданные в самых разных местах. Полагаю, руководство ТСЛаб будет реагировать по факту. Сейчас приоритеты направлены на освоение криптоплощадок. Судя по всему, клиентов крипта интересует намного сильнее, чем опционы.

 

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

 

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

avatar
ch5oh, 
Скорее всего это в принципе невозможно.
Просто волатильность будет выражена не в относительных терминах, а в абсолютных. Обычные модели улыбок и их свойства (e.g. критерии безарбитражности) на такую волатильность, скорее всего, переносить будет нельзя, но с понятием улыбки волатильности в целом я проблем не вижу.
avatar

Eugene Logunov, в данном случае буду немного очень зануден. Считаю, что во избежание путаницы само понятие «улыбка волатильности» применять будет нельзя. Если гипотетически предположить переход на модель Башелье (которая хоть и разрешает отрицательные цены, но в обычных условиях очевидно кривая), то нужно будет говорить «привет Башелье» или «попа ЦМЕ»...

 

В общем, как-то это всё даёт много пищи для философских раздумий о будущем… явно не для субботнего утра дня. =)

avatar
ch5oh, да жопа полная, если честно

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

В реалии оказалось, что теория показывает красивый результат только на индикативных потоках котировок (Reuters, Bloomberg вплоть до тиков). На реальных биржах и ECN (worldwide, Россия, крипто) на коротких таймфремах творится лютый невообразимый треш. Вплоть до того, что на минутках и тиках цены бывают персистентными...

Причем этот треш является свойством торговой площадки и представляет собой ее «цифровой отпечаток». При некоторой сноровке можно даже определить, откуда именно взяты котировки ((( Связано это исключительно с особенностями торгового процесса (ликвидность — маркетмейкеры или рибейты, особенности клиринга, модели начисления свопов и т.д.).

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

Хорошо еще, что я начинал свои исследования давно и с почти «идеальных» данных. На ММВБ вообще бы ничего не удалось получить (SBER, к примеру, очень близок к классике, а GAZP — дикий трэш).

Как-то так. Работаем.

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

ну так это «Грааль» для скальперов и не только

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


Вы лучше скажите (если сейчас находитесь в стане натовского супостата) как там дела с заразой?
avatar
asfa, сорри — не смогу

Я в России сейчас 

С уважением 
avatar
Мальчик Buybuy, что такое «модели начисления свопов»?
avatar
aks19, формула и период времени, когда их начисляют

На BitMEX и Deribit торгуются т.н. непрерывные (perpetual) фьючерсы на BTCUSD (и на эфир тоже). По ним есть ставка своп (процентная), которая платится преобладающей стороной (продавцами и покупателями, у кого больше суммарная маржинальная позиция) миноритарной стороне. Такой механизм балансировки.
Формулы у всех разные. На BitMEX начисление своп (коррекция PnL) происходит 3 раза в сутки, на Deribit — рассчитывается каждый минутный бар, начисляется на закрытые сделки.

Как-то так

С уважением
avatar
aks19, на FX проще

Своп ставка (разница процентных ставок овернайт по валютной паре) начисляется раз в сутки. В пн начисляется тройной своп за прошедшие выходные.

С уважением
avatar
Мальчик Buybuy, спасибо.
avatar

Кстати, если сразу взять безрисковую ставку r==0 и строить нормальное распределение центрированным на S_0, то многие выражения значительно упростятся...

Normal( S_0, sigma*sqrt(T) )

но это упражнение можно оставить заинтересованному читателю. =)

avatar
ch5oh, К счастью для читателей, я не стал насиловать их мозг и сразу задал распределение, в отличие от вариантов, в которых задаётся спотовая или форвардная динамика цены

К сожалению, в общем случае Maple не заменяет хорошего знания теорвера и матана, особенно, если распределение сложное. Чтобы сосчитать что-то в таких случаях — приходится хорошенько подумать.
avatar
мне пока alglib в C# хватало. Прочла и… поняла, что горизонты оказывается широки и каждому свое. 
И модельку пока на normal distribution не буду переделывать, но запишу себе, что близко к экспирациям нефть из торгуемых активов нужно исключать.
Спасибо за труд и sharing. Буду знать, что такое есть тоже, да еще и с кодогенерацией.
avatar
Спасибо за наводку на инструмент! Прям игрушка на выходные для меня :)
Сначала не понял стиль подачи с этими :=, а после установки понял как это круто они придумали, пишешь док а он на лету формулы и графики рисует.
avatar

теги блога Eugene Logunov

....все тэги



UPDONW