Блог им. uralpro

Улыбка волатильности. Ad-hoc Блэк Шоулз

    • 29 апреля 2015, 10:29
    • |
    • uralpro
  • Еще

06eacc816672bc6021ef661b0ec0981a67773653

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

Цена опционов, как известно, вычисляется по формуле Блэка-Шоулза, однако из-за того, что некоторые допущения, относящиеся к модели цены базисного актива, не соответствуют реальному статистическому распределению, опционам разных страйков приходится присваивать различные значения так называемой подразумеваемой волатильности (IV), которая входит в уравнение Блэка-Шоулза как параметр. Возникает ситуация с двумя неизвестными — мы вычисляем IV  по текущей цене опциона, при этом не зная, насколько справедлива эта цена в настоящий момент, следовательно не можем определить, дешево стоит опцион сейчас или дорого. Если бы нам удалось определить истинную волатильность рынка, то рассчитав по ней цену и сравнив с текущей, можно было бы принимать решение о покупке или продаже опциона. Поэтому основная задача, которую нужно решить в стратегиях покупки/продажи волатильности — построение правильного графика подразумеваемой волатильности опционов, в зависимости от страйков, из-за его формы имеющим название улыбки волатильности, или поверхности волатильности, если речь идет о разных периодах до экспирации — см. график в заглавии.

Необязательно идти именно таким путем — находить справедливую цену через подразумеваемую волатильность с помощью формулы Блэка-Шоулза. Можно, например, составить модель цены базисного актива, которая лучше подходит к реальному стат. распределению, и в результате непосредственно вычислить справедливую цену опциона, основываясь на наблюдаемых рыночных параметрах, исключая посредников, подобных IV. Так работают, например, модели Хестона и Бейтса, которые мы рассмотрим в следующих частях этого цикла статей. Но самый простой и очевидный вариант — все-таки использовать подразумеваемую волатильность из формулы БШ, применив технику ad-hoc Блэк-Шоулз — прикладного Блэка-Шоулза — для построения правильной улыбки волатильности. Эту технику мы и разберем подробно в этой части.

Напомним сначала саму формулу Блэка-Шоулза для колл опциона европейского типа:

C(S,K,T,t)=SN(d_1)-K\exp(-r(T-t))N(d_2)

d_1=\frac{\ln(S/K)-(r+\sigma^2/2)(T-t)}{\sigma\sqrt{T-t}}

d_2=d_1-\sigma\sqrt{T-t}

где С(S,K,T,t) — текущая стоимость опциона на момент времени t;

S — текущая цена базисного актива;

N(x) — интегральная функция нормального распределения;

К- страйк опциона;

r — безрисковая процентная ставка (для маржируемых опционов, торгуемых на бирже MOEX r=0);

T-t — время до экспирации;

σ- подразумеваемая волатильность.

Формулу БШ можно записать в виде функции :

C(S,K,T,t)=\phi(S,K,T,\sigma), (r сразу положим равной 0), Т обозначим время до экпирации.

Тогда подразумеваемую волатильность можно найти с помощью обратной функции:

\sigma=\phi^{-1}(S,K,T,C)

Для упрощения  обозначим цены опционов как C(S,K_i,T_i,t)=C_{i,t}, где Ki- цены  страйков, i∈1,..,N, N — количество страйков, для которых можно определить рыночную цену. Так как подразумеваемая волатильность будет разной для разных страйков и сроков до экспирации, можно записать формулу для нее следующим образом:

\sigma_i=\beta_0+\beta_1 K_i+...+\beta_m K_i^m+\beta_{2m}T_i^m+\beta_{2m+1}K_iT_i^{m-1}+...+\epsilon_i=\beta^{'}Z_i^m+\epsilon_i

где β′- вектор коэффициентов, Zi- вектор объясняющих переменных (страйки и время до экспирации), ϵi- вектор ошибок.

Наша задача — найти коэффициенты β0...β2m+1. Для этого сначала вычисляем подразумеваемые волатильности для всех страйков и сроков до экспирации из наблюдаемых рыночных цен за определенный период времени, затем с помощью метода наименьших квадратов находим коэффициенты β′, минимизируя выражение:

\theta=\arg\min_{\theta}\sum_{i=1}^N(C_{i,t}-\phi(S,K_i,T_i,\beta^{'}Z_i^m)^2

Число наблюдаемых точек N должно быть больше или равно m^2. Для практических целей, как правило, достаточно m=5.

Итак, в результате мы можем найти «справедливые» цены для любого страйка и срока до экспирации, подставляя в формулу Блэка-Шоулза подразумеваемые волатильности, вычисленные через найденные коэффициенты β′ и значения этих страйков и периодов экспирации на текущий момент времени:

C_{i,t}=\phi(S,K_i,T_i,\beta^{'}Z_i^m)

В помощь — примеры на языке C++ для вычисления цен опционов пут и колл и вычисление подразумеваемой волатильности из текущей рыночной цены опциона бисекционным методом:

// Формула Блэка-Шоулза
//здесь Т - время до экспирации,
//v - подразумеваемая волатильность
//PutCall - 'C' - вычисление цены для колл опциона, иначе - пут опцион
double BSPrice(double S, double K, double r, double T, double v, char PutCall) {
        double d = (log(S/K) + T*(r + 0.5*v*v)) / (v*sqrt(T));
        double Call = S*N(d) - exp(-r*T)*K*N(d - v*sqrt(T));
        if (PutCall=='C')
                return Call;
        else
                return Call - S + K*exp(-r * T);
}

// Вычисление подразумеваемой волатильности
//a - минимальное значение волатильности (например 0.00001)
//b - максимальное значение волатильности (например 10.0)
//MktPrice - рыночная цена опциона
double BisecBSV(double S, double K, double r, double T, 
                                double a, double b, double MktPrice, char PutCall) {
        const int MaxIter = 1000;
        double Tol = 0.0000001;
        double midP, midCdif;
        double  lowCdif = MktPrice - BSPrice(S, K, r, T, a, PutCall);
        double highCdif = MktPrice - BSPrice(S, K, r, T, b, PutCall);
        if (lowCdif*highCdif > 0) {
                double Temp = lowCdif;
                lowCdif = highCdif;
                highCdif = Temp;
        }
        else
        for (int i=0; i< =MaxIter; i++) {
            midP = (a + b) / 2.0;
                midCdif = MktPrice - BSPrice(S, K, r, T, midP, PutCall);
                if (abs(midCdif)<Tol) goto LastLine;
                else {
                if (midCdif>0) a = midP;
                        else b = midP;
                }
        }
        LastLine:
        return midP;
}

В следующей части цикла будем находить справедливые цены опционов с помощью модели Хестона.

Другие стратегии, применяемые в алгоритмической торговле и биржевых роботах смотрите в моем блоге и на сайте.

Данная публикация является личным мнением автора. Мнение владельца сайта может не совпадать с мнением автора.
1.1К | ★20
17 комментариев
считать волатильность по волатильности? свежо :)
avatar
Хорошо, что взялись перевести интересные материалы. Однако в цивилизованном обществе принято указывать ссылки и источники заимствований, это относится и к исходным текстам программ.

BlackSholes.cpp

// Black Scholes prices
// by Fabrice Douglas Rouah, FRouah.com and Volopta.com
[...]
avatar
Geelong, да, спасибо за ссылку, я уже и не помню, откуда это
avatar
«Если бы нам удалось определить истинную волатильность рынка, то рассчитав по ней цену и сравнив с текущей, можно было бы принимать решение о покупке или продаже опциона.»
«Истинная волатильность» это историческая волотильность и она рассчитывается элементарно. Любая самая простая графическая программа имеет соответствующие индикаторы. Но толку от нее ни какой, нужно знать будущую волатильность, а будующее не знает никто.
avatar
noHurry, да… называется, зачем я все это пишу :)
avatar
uralpro, зачем пишете? Чтобы из комментариев понять, где вы, возможно, ошибаетесь :) Например здесь я полностью согласен с noHurry — в статье сначала смешались кони и люди в виде ожидаемой и реализуемой волатильности, а потом приводится громоздкая модель улыбки ожидаемой волатильности без учета какой-либо динамики этого параметра. Из-за этого попытка учета времени до экспирации в этой модели выглядит нелепо и нежизнеспособно. Вы с этим не согласны? Почему?
avatar
bstone, непонятно, где вы увидели громоздкую модель? Модель простейшая — обычный метод наименьших квадратов. Динамика как раз учитывается по полной программе, иначе для чего нужно определение коэффициентов? Вплоть до того, что посекундно можно считать. И почему вы считаете, что время до экспирации плохо учитывается?
avatar
uralpro, посмотрите число параметров модели! 1 параметр — отличная модель, 2-3 параметра — не громоздкая модель. А у вас 2m+2 параметров :) И нет, динамика не учитывается никак. Почему? Потому что каждый раз у вас будет новая поверхность, а если бы динамика учитывалась, то одна поверхность описывала бы волатильность с приемлемой погрешностью ровно до экспирации.
avatar
bstone, а как вы собираетесь описать сложную поверхность волатильности одним параметром? Биржа, насколько я помню, применяет 8 параметров. Мне было достаточно 6. Динамика как раз и учитывается калибровкой под рыночные параметры. А шаг этой калибровки — ваш выбор для алгоритма, который будет собирать отклонения от поверхности с необходимой частотой
avatar
uralpro, как я собираюсь? Никак. А вот если вы опишете, то вам нобелевку сразу в руки под роспись выдадут, как Блэку и Шоулзу :) Биржа поверхность не калибрует — только улыбку.
avatar
bstone, вы еще скажите, что для поверхности меньше переменных нужно :)
avatar
uralpro, этого не буду говорить, а скажу, что поверхности волатильности — тупиковый путь по мненю Пола Вилмота, а я ему доверяю в этом вопросе :)
avatar
uralpro, ну и вообще, если перевести статью на устоявшуюся терминологию, то речь тут идет и вовсе не о модели улыбки волатильности, а о калибровке volatility surface. Такая вот польза от некоторых комментариев :)
avatar
bstone, вот тут вы правы. Модели будут в следующих статьях
avatar
Т.к. оказалось что физическая волатильность напрямую не подставляется в Блэка-шоулза, а требует поправочных коэффициентов виде улыбки, то нужно признать Улыбку волатильности и саму IV искуственным производным параметром, который сам по себе не решает ничего, а исполняет роль индикатора пост-фактум. С таким же успехом можно анализировать полосы болинджера.
Настоящие опционеры анализируют фактические цены опционов напрямую, которые пропорциональны реальной (а не выдуманной) физической величине — вероятности достижения страйка. Соотношение цен на разных страйках даёт картину настроений (крупных) игроков рынка относительно вероятности движения в ту или иную сторону.
avatar
Simix, ну это талебанская школа — пут-кол паритет и баста. БШ все-таки очень полезен :) Ну а про физическую волатильность — а как можно куда-то подставить то, чего нет?
avatar
Для меня единственная польза от БШ это то, что зная IV можно аналитически посчитать цену опциона на любом страйке в любой момент времени, а все остальное от лукавого.
Поправка. Я это имею в виду конечно применительно для работы с историческими данными.
avatar

Читайте на SMART-LAB:
Новости российского и зарубежного рынков.
Новости российского и зарубежного рынков
Если вас интересуют другие аналитические и информационные материалы от банка АО АКБ «ЦентроКредит», смотрите их на нашем...
Фото
Страховщики становятся финансовой опорой экономики России
Страховой рынок окончательно вышел за рамки своей традиционной роли. Сегодня он не только защищает людей и бизнес от рисков, но и превращается в...
Долговая нагрузка россиян станет больше?
Банк России может обязать коммерческие банки включать в расчет показателя долговой нагрузки (ПДН) просроченную задолженность по коммунальным и иным...
Фото
Мозговой штурм: какие идеи в моменте?
Доброго вечера. Сегодня мы провели традиционный мозговой штурм. Выпишу некоторые идеи:

теги блога uralpro

....все тэги



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