Блог им. ataden

Платформа OptionSmile. Часть 2. Расчет исторических рыночных цен

    • 20 апреля 2017, 12:56
    • |
    • ataden
  • Еще

Добрый день.

Это второй пост о возможностях системы OptionSmile.

Предыдущие посты:

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

Для этого можно пойти, например, «в лоб»: взять базу исторических котировок контрактов с заданной денежность и сроком экспирации, посчитать среднюю и сравнить со справедливой стоимостью.  Но тут сразу всплывает проблема: котировок слишком мало. Например, по месячным опционам в году их всего 12: сегодняшний контракт с 30-дневной экспирацией завтра уже будет с 29-дневной, т.е. не подойдет для анализа. И вообще, завтра котировки с 30-дневной экспирацией в природе не будет. И так пока следующий контракт не «состарится» до 30 дней.

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

В нашей платформе эта проблема решается «восстановлением» теоретических котировок из индекса волатильности (VX), благо его значения есть на каждый день. Он отражает общую волатильность (например, VIX – это волатильность месячных серий на S&P 500), и по сути, конечно, почти идеально коррелирует с IV опционов со сроком до нескольких месяцев. Вот пример для путов на SPY с денежностью 98 и сроком экспирации 10 DTE (days-till-expiration):

Платформа OptionSmile. Часть 2. Расчет исторических рыночных цен

Почти идеальная взаимосвязь очевидна:  коэффициент корреляции 0.98. Видна именно линейная зависимость, что дает нам возможность построить парную линейную регрессию. Для этого примера она такая:

                            Платформа OptionSmile. Часть 2. Расчет исторических рыночных цен
Качество регрессии очень высокое: R2 = 0.968,  F-статистика = 10377, да это и невооруженным глазом видно на графике. Отклонения от прямой линии показывают колебания временной структуры волатильности относительно 1-месячной, по которой VIX считается.

Итак, у нас есть два коэффициента (наклон 0.962 и постоянная 0.4122) для опционов с денежностью 98 и DTE 10. Так можно пробежаться по всем сочетаниями денежности и DTE, получить вот такие пары коэффициентов вместе с оценкой качества регрессии (R2, F-stat).

В итоге получим большую базу данных и можем уже на каждый день в истории считать какая была бы в этот день теоретическая цена заданного контракта (денежность/DTE). Т.е. у нас уже 252 котировки в году, и мы можем строить более надежные статистические оценки и гораздо смелее утверждать, что рынок систематически что-то недооценивал или переоценивал. Особенно при фильтрации рыночных режимов.

Вот расчет за период 2012-2016 для путов c DTE 10

Платформа OptionSmile. Часть 2. Расчет исторических рыночных цен
Платформа OptionSmile. Часть 2. Расчет исторических рыночных цен


Красный график – это средняя гипотетическая цена (Estimated Price) и IV для нее. Видно, как рынок переоценивал путы в этот период. Ясно почему, в 2012-2016 был мощный бычий рынок, т.е. тут большая directional составляющая.

Резонный вопрос, а почему мы вообще используем какие-то не существовавшие в реальности котировки? Как их можно сравнивать со справедливыми значениями, они же не реальные?

Дело в том, что они нам нужны для экстраполяции рыночного mispricing-а в будущее. По сути эти «нереальные» теоретические цены есть их мат.ожидание в будущем. Возьмем наш пример выше. Скажем, если завтра VIX будет 16, то можно ожидать, что IV пута с денежностью 98 и DTE 10 будет в районе

               Платформа OptionSmile. Часть 2. Расчет исторических рыночных цен
Вставляем это в формулу БШ, получаем ожидаемую цену пута 0.48% от цены БА (см. на графике). Наконец сравниваем это со справедливой ценой для такого же пута = 0.18%, что также есть мат.ожидание. Получаем ожидаемую переоцененность в 0.48% — 0.18% = 30%. Такую большую разницу можно ожидать, только если мы находимся в таком же бычьем рынке, как и 2012-2016. (см. видео про Фильтрацию рыночных режимов, скоро напишу пост).

Вообще, по моему наблюдению, такие гипотетические цены в большинстве случаев совпадают с аналогичными рыночными. Вот в момент написания этого поста я подгрузил реальные котировки фьючерса E-mini S&P500 (ES) с сопоставимыми параметрами денежности и DTE, зеленый график

Платформа OptionSmile. Часть 2. Расчет исторических рыночных цен
Видно, что около денег рыночные цены чуть ниже estimated, а на дальних страйках почти совпадают. Бывают, конечно, и периоды нетипичной временной структуры IV, когда оба графика различаются существенно. В любом случае, вход в позицию нужно делать на базе реальных рыночных котировок.

Итак, сравнение с реальными рыночными ценами дает нам mispricing в моменте, а сравнение с гипотетическими историческими – оценку систематического mispricing-а в каком-либо периоде или рыночном режиме.

На эту тему пока все. Осталось осилить три важные темы:

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

Также вступайте в группу на Facebook.

Всем удачи!
Денис

★6
28 комментариев
Добавьте софтину в раздел:

smart-lab.ru/trading-software/
Проделана большая работа. Но что бы посмотреть улыбки в прошлом достаточно войти в TWS. Более того VIX рассчитывается по нескольким сериям и я не понял как можно получить улыбку по конкретной серии. Мне кажется, что сравнивать надо истинное распределение с предполагаемым. Есть смысл сравнивать волатильности разных серий. 
Дмитрий Новиков, спасибо. Это результаты 2-летней работы для себя. Публикую для всех теперь.

В вашем комментарии несколько вопросов. Отвечу по очереди.
В TWS есть два инструмента: Volaility Lab и Probability Lab, ни один не показывает улыбку по историческому эмпирическому распределению. В Volaility Lab можно смотреть улыбки IV в прошлом, а в Probability Lab — диаграмму исторического распределения актива (плотности вероятности распределения —  PDF), из которого можно уже построить улыбку. Не знаю, почему они до конца идею не довели. 
avatar
ataden, Что то я затупилю  Цель вашей программы построить распределение по историческим данным, а потом выделить улыбку? Или вы хотите воссоздать улыбку которая была на рынке IV? Но что бы сделать улыбку и распределение по историческим данным БА надо взять историю БА и построить распределение, потом отнять гауса и получится улыбка. 
В TWS все строится от IV. Исторического распределения там нет, или я не знаю. Давайте определимся. Есть улыбка IV это рыночная по ценам взятая. И есть улыбка HV это спустя месяц мы можем посмотреть какое распределение было тогда.  Вы какую улыбку ищите?
Дмитрий Новиков, а мне вообще улыбка не нужна в принципе, показываю для справки. Нужны абсолютные цены опционов (точнее в % от БА). Это потом из них можно по разным формулам (БШ, например) строить улфбки, ухмылки и пр. Можно другие распределения брать (Стъюдента, скажем) и т.д. Это все Параметрический подход.
Я использую Непараметрический, без модели распределения. Вот тут с 8:45 я рассказал про разницу подходов.
Правда, все настолько привыкли к БШ, что всегда нужна улыбка.
avatar
ataden, Может быть я консерватор. Мне кажется, что вы получаете тот же результат, что и при построении простого распределения. Вы берете некоторый опцион с дельтой 0,1. Это вероятность того, что в 90% случаев цена не дойдет до этого опциона. Теперь вы смотрите что цена все таки доходила и реально тут дельта 0,2. И вы в этом месте цену увеличиваете. 
То же самое вы увидите построив обычное распределение. Там тоже будет видно, что цена доходила до этого опциона, сколько раз, все это переводим в проценты и вычисляем цену. 
Дмитрий Новиков, да, как-то так. Только я беру не дельту, а страйк (точнее его денежность = страйк/БА), смотрю как часто приращение БА его перелетало (это вероятность ITM экспирации) и как далеко при этом задетало (условное мат.ожидание цены опциона при ITM экспирации)
avatar
«Более того VIX рассчитывается по нескольким сериям и я не понял как можно получить улыбку по конкретной серии.»
VIX рассчитываетcя по двум экспирациям около 30 дней (near-term, next-term), но это не важно. Главное, он хорошо коррелирует с IV опционов. 
По одной серии все просто: беру базу исторических котировок опционов с определенным сроком экспирации (DTE), считаю их IV по формуле БШ и строю линейную регрессию с VIX. Пример с путами DTE 10 — в посте.
Потом на каждый день в истории с помощью формулы этой регрессии получаю расчетную IV, и далее цену опциона
avatar
 «Мне кажется, что сравнивать надо истинное распределение с предполагаемым»
Что понимать под истинным? Фактическое? Так и делаю. Только исходу не из общего стандартного отклонения (средняя температура по больнице), а для каждого страйка: вероятность экспирации ITM и ожидаемая стоимость. Об этом был первый пост
Это распределение и предполагаю, что будет в будущем. Об этом сегодня третий пост опубликовал
avatar
ataden, Правильно. Истинное или фактическое можно еще историческое. Мы берем движение БА с каким то временным окном и строим распределение. Из него получаем улыбку на всех страйках. Это и есть HV улыбка. Историческая волатильность и т.д. Вы же берете IV волатильность VIX, которая не обязательно совпадет с историей, и строите что? 
Хорошо, это для SPY, а для GS что мы брать будем? Мне кажется, что получение таким способом улыбки не очень универсален. Почему вы пошли таким путем? Почему не считали от БА?
Дмитрий Новиков, а понял, где недопонимание. Тут два вопроса перемешались.
1. Общая идея (см. первый пост) — расчет справедливой цены из истории распределения БА. В принципе, да, получается HV улыбка. Но чтобы ее получить, сначала надо рассчитать цены опционов в терминах % от цены БА. Потом перевернув БШ формулу — получится HV улыбка. 
2. Этот пост (линейная регрессия VIX). Он решает другую проблему: для «бэктестинга» не хватает исторических данных рыночных котировок опционов (не БА) с конкретными страйками и экспирациями. Их я восстанавливаю через VIX на каждый день в истории (в посте об этом подробно описано).
Конечно, есть проблема, что не по всем бумагам есть VIX. Но по большинству индексов CBOE считает
avatar
Дмитрий Новиков, только сейчас увидел вашу увлекательную дискуссию с Nonsense. Все так и есть, как он писал… там где про шапочки
Жаль поздно я это увидел. Но еще отпишусь, как время будет.
Я, собственно, и делаю очередную попытку обуздать эмпирическое распределение. Публично все раскрываю в т.ч., чтобы найти тех, кто на этом шишки уже набил и может, так сказать, своими граблями поделиться.
Кстати, написал Вам личное сообщение.

avatar
ataden, в интернетах живет книжка Цудикман, Израйлевич. Опционы. Системный подход к инвестициям. Хорошая книжка и там много чего по интересующему Вас вопросу (эмпирические распределения). Главные сложности для всех (и для авторов тоже) — как убрать смещение (ненулевое матожидание) из исторических данных и как выбрать временное окно для построения того самого эмпирического распределения. Какое то время назад я пытался эту тему кусать, но в результате не очень много чего выкусил)), так, отдельные моменты применяю
Стас Бржозовский, да, спасибо, это я уже видел, но пока не все изучил. Только не понимаю, зачем убирать нулевое МО. Для такого эмпирического прайсинга центральные моменты (мю и сигма) не нужны совсем. Нужны только вероятность экспирации ITM и мат ожидание цены опциона при этом. Т.е. нужен хвост.
Ну разве только для deep ITM страйков, где хвост — это почти все распределение. 

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

Поделитесь, что накусали по этой теме?
avatar
ataden, если мо не обнулить, то колл-пут паритет съедет
Стас Бржозовский, так он и не нужен для справедливых цен. Для рыночных да — иначе арбитраж будет, без риска. А теор.цены на базе эмпирического распределения — это лишь оценки вероятностей. В будущее, так сказать, ex ante.
Вообще, напишу скоро очередной пост о том, что справедливую цену правильно брать не одной цифрой, а доверительным интервалом. Наша система это автоматом выдает
avatar
ataden, вот этот момент непонятен. Получите 2 улыбки для колов и путов отдельно (или 2 диапазона). При этом колы (к примеру) на реальном рынке будут выше диапазона, путы — ниже. Зачем тогда опционы вообще? Достаточно голого ба. Опционы, имхо, нужны как раз для выдирания рисков выше первого момента распределения. Но тогда распределение нужно центрировать по любому
Стас Бржозовский, Ух, как коротко описать-то это все.
Мне IV-улыбки по БШ вообще не нужны. Да, система их потом строит, но так, для справки. Если зайдете к нашу систему и построите эти IV-улыбки за один и тот же период для путов и колов — они будут разные, и причем сильно иногда. Совпадут только, если эмпирическое распределение будет четко логнормальным со стандартным отклонением равным безрисковой ставке.
Это разница между риск-нейтральным (risk-neutral) и реальным (real-world) подходами. В БШ зашита риск нейтральность, т.е. предполагается, что МО приращения БА равно безрисковой ставке. 

Мне важны только цены опционов не в IV, а в абсолютном выражении (точнее в % от цены БА). Центральные моменты не нужны, нужен только хвост от страйка и далее в OTM.

Вообще, большая тема про risk-neutral vs real-world и БШ. Отдельный пост напишу, наверное. Четсно, не все там пока еще для меня кристально понятно
avatar
ataden, Что то Смарт Лаб подвис и прервал нашу беседу. И в личку ни чего не пришло. Ну если вы почитали мои предыдущие топики, то должны были понять о чем я… Распределение можно построить проще. А получить историческую биржевую (рыночную) улыбку по волотильности ЦС и времени до экспирации проблематично. Там, хотя бы, три опциона нужны.
Дмитрий Новиков, я все обязательно почитаю. Но тут Вы меня не поняли. В этом посте я описал не как построить IV-улыбку в истории на основе рыночных котировок. С этим все понятно, методов такой параметризации много. IT-инвест одну формулу использует, биржа — другую. Я тоже когда-то баловался моделью SVI для параметризации улыбки (точнее поверхности), ее OptionVue пользует, как понимаю. Но это вообще все не про то, о чем я в этом посте писал. Мне вообще это не нужно. Все методы параметризации всего-лишь подбирают параметры некой функции IV-улыбки (параболы, и пр) по фактическим котировкам на какую-то дату. И все! 
Я решаю другу проблему — нехватку исторических котировок. Выше я написал: для месячных опционов их всего 12 в году. Ну построите вы 12 улыбок/поверхностей в эти даты, но этого очень мало.
avatar
ataden, имея цены трёх опционов вы построите улыбку хоть на каждую минуту. С тем же приближением, что и регрессия даёт. А исторические котировки опционов можно спионерить с того же OptionVUE. Или я не понимаю о каких исторических котировках речь?
Дмитрий Новиков, так в том и дело, что у нас нет этих трех цен опционов — в большинстве дней в истории. Все в том же примере с котировками месячных серий. Их всего 12 в году. Я же делаю, чтобы было 252, по числу торговых дней. «Восстанавливаю» их из VIX.
Это не реально существовавшие котировки, но нам и это не нужно. Главное, из регрессии и фактического VIX, предполагаем как бы их рынок их оценил.
Ну, а там уже из них и IV-улыбку по БШ можно строить. Можно апроксимировать любой функцией и т.д. Мне это уже не нужно.

Я просто смотрю на эту цену опциона за каждый день в истории и сравниваю с тем, как потом себя повел БА.
До этого я дошел, когда обычный бэктестер делал. Ну нет просто достаточно данных в истории.
avatar
ataden, это допустимо если предположить, что улыбка двигается вместе с ЦС. Липкая дельта так казать. Но когда вола ЦС взлетает, улыбка разворачивается. Крылья опускаются, центр поднимается. Начинается липкий Страйк. За счёт чего учитывается данный эффект?
Дмитрий Новиков, это снова не из той оперы. Sticky strike и stiсky delta — это всего лишь как IV конкретных страйков реагируют на движение БА. Это тут совсем ни при чем.

Я всего лишь предполагаю, какая IV на конкретном страйке была бы, если бы VIX был на некоем уровне. В посте есть пример расчета при VIX =16. Это и есть условное MO для IV (условие — уровень VIX)
avatar
ataden, для меня тут непонятка остается. Чтобы получить коэффициенты регрессии нужна куча срезов рынка на каждый срок до экспирации. Если данных мало, то откуда эти срезы берутся?
Стас Бржозовский, так за долгий период набирается. По SPY у меня куплена вся история котировок за 12 лет (c 2005 года), это NBBO на конец дня(EOD), всего 7.2 млн. котировок. Вот из них набралось с ровно 2-недельной экспирацией — 342 котировки, они все на графике в посте. А всего за эти 12 лет было 3021 тоговый день, в каждый из которых есть VIX и можно к этим 342-м реальным добавить еще 3021-342=2679 теоретических котировок. 
Это вроде бы довольно много, но потом как начинаешь фильтровать по режимам, остается несколько сотен. Но зато ровно по нужным состояниям рынка.
Как-то так.

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

теги блога ataden

....все тэги



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