Блог им. ataden
Добрый день.
Это второй пост о возможностях системы OptionSmile.
Предыдущие посты:
В первой части я рассказал, как система рассчитывает справедливые цены опционов, которые можно сравнивать с текущими рыночными и делать вывод об их mispricing’е (недо- или переоцененности) в моменте. Здесь я расскажу о том, как система дает возможности искать такие неэффективности в прошлом.
Для этого можно пойти, например, «в лоб»: взять базу исторических котировок контрактов с заданной денежность и сроком экспирации, посчитать среднюю и сравнить со справедливой стоимостью. Но тут сразу всплывает проблема: котировок слишком мало. Например, по месячным опционам в году их всего 12: сегодняшний контракт с 30-дневной экспирацией завтра уже будет с 29-дневной, т.е. не подойдет для анализа. И вообще, завтра котировки с 30-дневной экспирацией в природе не будет. И так пока следующий контракт не «состарится» до 30 дней.
Это, в принципе, главная проблема опционного бэктестинга, в отличие от линейных активов (OptionSmile выросла из такой платформы). Еще по недельным сериям как-то можно наскрести историческую базу, то дальше недели уже беда. А если мы еще будем фильтровать исторические данные по режимам рынка, то вообще с несколькими котировками останемся. Какие тут статистически значимые выводы?
В нашей платформе эта проблема решается «восстановлением» теоретических котировок из индекса волатильности (VX), благо его значения есть на каждый день. Он отражает общую волатильность (например, VIX – это волатильность месячных серий на S&P 500), и по сути, конечно, почти идеально коррелирует с IV опционов со сроком до нескольких месяцев. Вот пример для путов на SPY с денежностью 98 и сроком экспирации 10 DTE (days-till-expiration):
Почти идеальная взаимосвязь очевидна: коэффициент корреляции 0.98. Видна именно линейная зависимость, что дает нам возможность построить парную линейную регрессию. Для этого примера она такая:
Качество регрессии очень высокое: 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
Красный график – это средняя гипотетическая цена (Estimated Price) и IV для нее. Видно, как рынок переоценивал путы в этот период. Ясно почему, в 2012-2016 был мощный бычий рынок, т.е. тут большая directional составляющая.
Резонный вопрос, а почему мы вообще используем какие-то не существовавшие в реальности котировки? Как их можно сравнивать со справедливыми значениями, они же не реальные?
Дело в том, что они нам нужны для экстраполяции рыночного mispricing-а в будущее. По сути эти «нереальные» теоретические цены есть их мат.ожидание в будущем. Возьмем наш пример выше. Скажем, если завтра VIX будет 16, то можно ожидать, что IV пута с денежностью 98 и DTE 10 будет в районе
Вставляем это в формулу БШ, получаем ожидаемую цену пута 0.48% от цены БА (см. на графике). Наконец сравниваем это со справедливой ценой для такого же пута = 0.18%, что также есть мат.ожидание. Получаем ожидаемую переоцененность в 0.48% — 0.18% = 30%. Такую большую разницу можно ожидать, только если мы находимся в таком же бычьем рынке, как и 2012-2016. (см. видео про Фильтрацию рыночных режимов, скоро напишу пост).
Вообще, по моему наблюдению, такие гипотетические цены в большинстве случаев совпадают с аналогичными рыночными. Вот в момент написания этого поста я подгрузил реальные котировки фьючерса E-mini S&P500 (ES) с сопоставимыми параметрами денежности и DTE, зеленый график
Видно, что около денег рыночные цены чуть ниже estimated, а на дальних страйках почти совпадают. Бывают, конечно, и периоды нетипичной временной структуры IV, когда оба графика различаются существенно. В любом случае, вход в позицию нужно делать на базе реальных рыночных котировок.
Итак, сравнение с реальными рыночными ценами дает нам mispricing в моменте, а сравнение с гипотетическими историческими – оценку систематического mispricing-а в каком-либо периоде или рыночном режиме.
На эту тему пока все. Осталось осилить три важные темы:
Как и прежде, если вам это все интересно, поставьте плюс этому посту (рейтинг очень нужен), заходите на наш сайт, регистрируйтесь, пробуйте. Скоро сделаем авторизацию через соцсети.
Также вступайте в группу на Facebook.
Всем удачи!
Денис
smart-lab.ru/trading-software/
В вашем комментарии несколько вопросов. Отвечу по очереди.
В TWS есть два инструмента: Volaility Lab и Probability Lab, ни один не показывает улыбку по историческому эмпирическому распределению. В Volaility Lab можно смотреть улыбки IV в прошлом, а в Probability Lab — диаграмму исторического распределения актива (плотности вероятности распределения — PDF), из которого можно уже построить улыбку. Не знаю, почему они до конца идею не довели.
В TWS все строится от IV. Исторического распределения там нет, или я не знаю. Давайте определимся. Есть улыбка IV это рыночная по ценам взятая. И есть улыбка HV это спустя месяц мы можем посмотреть какое распределение было тогда. Вы какую улыбку ищите?
Я использую Непараметрический, без модели распределения. Вот тут с 8:45 я рассказал про разницу подходов.
Правда, все настолько привыкли к БШ, что всегда нужна улыбка.
То же самое вы увидите построив обычное распределение. Там тоже будет видно, что цена доходила до этого опциона, сколько раз, все это переводим в проценты и вычисляем цену.
VIX рассчитываетcя по двум экспирациям около 30 дней (near-term, next-term), но это не важно. Главное, он хорошо коррелирует с IV опционов.
По одной серии все просто: беру базу исторических котировок опционов с определенным сроком экспирации (DTE), считаю их IV по формуле БШ и строю линейную регрессию с VIX. Пример с путами DTE 10 — в посте.
Потом на каждый день в истории с помощью формулы этой регрессии получаю расчетную IV, и далее цену опциона
Что понимать под истинным? Фактическое? Так и делаю. Только исходу не из общего стандартного отклонения (средняя температура по больнице), а для каждого страйка: вероятность экспирации ITM и ожидаемая стоимость. Об этом был первый пост.
Это распределение и предполагаю, что будет в будущем. Об этом сегодня третий пост опубликовал
Хорошо, это для SPY, а для GS что мы брать будем? Мне кажется, что получение таким способом улыбки не очень универсален. Почему вы пошли таким путем? Почему не считали от БА?
1. Общая идея (см. первый пост) — расчет справедливой цены из истории распределения БА. В принципе, да, получается HV улыбка. Но чтобы ее получить, сначала надо рассчитать цены опционов в терминах % от цены БА. Потом перевернув БШ формулу — получится HV улыбка.
2. Этот пост (линейная регрессия VIX). Он решает другую проблему: для «бэктестинга» не хватает исторических данных рыночных котировок опционов (не БА) с конкретными страйками и экспирациями. Их я восстанавливаю через VIX на каждый день в истории (в посте об этом подробно описано).
Конечно, есть проблема, что не по всем бумагам есть VIX. Но по большинству индексов CBOE считает
Жаль поздно я это увидел. Но еще отпишусь, как время будет.
Я, собственно, и делаю очередную попытку обуздать эмпирическое распределение. Публично все раскрываю в т.ч., чтобы найти тех, кто на этом шишки уже набил и может, так сказать, своими граблями поделиться.
Кстати, написал Вам личное сообщение.
Ну разве только для deep ITM страйков, где хвост — это почти все распределение.
А проблему исторического окна пытаюсь решить фильтрацией рыночных режимов. Об этом отдельный пост вчера был
Поделитесь, что накусали по этой теме?
Вообще, напишу скоро очередной пост о том, что справедливую цену правильно брать не одной цифрой, а доверительным интервалом. Наша система это автоматом выдает
Мне IV-улыбки по БШ вообще не нужны. Да, система их потом строит, но так, для справки. Если зайдете к нашу систему и построите эти IV-улыбки за один и тот же период для путов и колов — они будут разные, и причем сильно иногда. Совпадут только, если эмпирическое распределение будет четко логнормальным со стандартным отклонением равным безрисковой ставке.
Это разница между риск-нейтральным (risk-neutral) и реальным (real-world) подходами. В БШ зашита риск нейтральность, т.е. предполагается, что МО приращения БА равно безрисковой ставке.
Мне важны только цены опционов не в IV, а в абсолютном выражении (точнее в % от цены БА). Центральные моменты не нужны, нужен только хвост от страйка и далее в OTM.
Вообще, большая тема про risk-neutral vs real-world и БШ. Отдельный пост напишу, наверное. Четсно, не все там пока еще для меня кристально понятно
Я решаю другу проблему — нехватку исторических котировок. Выше я написал: для месячных опционов их всего 12 в году. Ну построите вы 12 улыбок/поверхностей в эти даты, но этого очень мало.
Это не реально существовавшие котировки, но нам и это не нужно. Главное, из регрессии и фактического VIX, предполагаем как бы их рынок их оценил.
Ну, а там уже из них и IV-улыбку по БШ можно строить. Можно апроксимировать любой функцией и т.д. Мне это уже не нужно.
Я просто смотрю на эту цену опциона за каждый день в истории и сравниваю с тем, как потом себя повел БА.
До этого я дошел, когда обычный бэктестер делал. Ну нет просто достаточно данных в истории.
Я всего лишь предполагаю, какая IV на конкретном страйке была бы, если бы VIX был на некоем уровне. В посте есть пример расчета при VIX =16. Это и есть условное MO для IV (условие — уровень VIX)
Это вроде бы довольно много, но потом как начинаешь фильтровать по режимам, остается несколько сотен. Но зато ровно по нужным состояниям рынка.
Как-то так.
Согласен, просто мы навертели еще много какой функциональности. Это и восстановление истории (этот пост) и фильтрация рыночных режимов (третий пост), и оценка доверительных интервалов этих эмпирически-справедливых цен через boostrapping, и расчет мат.ожидания и всяких разных показателей через матрицы спред-стратегий. Об этом еще напишу, все есть в видео-презентациях