В ряду алгоритмов, используемых в опционной торговле, значительное место занимают стратегии покупки/продажи волатильности. Смысл таких стратегий в покупке опциона, когда волатильность рынка мала, и соответственно, продаже, когда волатильность высока, при постоянном хэджировании базисным активом ( дельта позиции равна нулю).
Цена опционов, как известно, вычисляется по формуле Блэка-Шоулза, однако из-за того, что некоторые допущения, относящиеся к модели цены базисного актива, не соответствуют реальному статистическому распределению, опционам разных страйков приходится присваивать различные значения так называемой подразумеваемой волатильности (IV), которая входит в уравнение Блэка-Шоулза как параметр. Возникает ситуация с двумя неизвестными — мы вычисляем IV по текущей цене опциона, при этом не зная, насколько справедлива эта цена в настоящий момент, следовательно не можем определить, дешево стоит опцион сейчас или дорого. Если бы нам удалось определить истинную волатильность рынка, то рассчитав по ней цену и сравнив с текущей, можно было бы принимать решение о покупке или продаже опциона. Поэтому основная задача, которую нужно решить в стратегиях покупки/продажи волатильности — построение правильного графика подразумеваемой волатильности опционов, в зависимости от страйков, из-за его формы имеющим название улыбки волатильности, или поверхности волатильности, если речь идет о разных периодах до экспирации — см. график в заглавии.
Необязательно идти именно таким путем — находить справедливую цену через подразумеваемую волатильность с помощью формулы Блэка-Шоулза. Можно, например, составить модель цены базисного актива, которая лучше подходит к реальному стат. распределению, и в результате непосредственно вычислить справедливую цену опциона, основываясь на наблюдаемых рыночных параметрах, исключая посредников, подобных IV. Так работают, например, модели Хестона и Бейтса, которые мы рассмотрим в следующих частях этого цикла статей. Но самый простой и очевидный вариант — все-таки использовать подразумеваемую волатильность из формулы БШ, применив технику ad-hoc Блэк-Шоулз — прикладного Блэка-Шоулза — для построения правильной улыбки волатильности. Эту технику мы и разберем подробно в этой части.
Напомним сначала саму формулу Блэка-Шоулза для колл опциона европейского типа:
где С(S,K,T,t) — текущая стоимость опциона на момент времени t;
S — текущая цена базисного актива;
N(x) — интегральная функция нормального распределения;
К- страйк опциона;
r — безрисковая процентная ставка (для маржируемых опционов, торгуемых на бирже MOEX r=0);
T-t — время до экспирации;
σ- подразумеваемая волатильность.
Формулу БШ можно записать в виде функции :
, (r сразу положим равной 0), Т обозначим время до экпирации.
Тогда подразумеваемую волатильность можно найти с помощью обратной функции:
Для упрощения обозначим цены опционов как , где Ki- цены страйков, i∈1,..,N, N — количество страйков, для которых можно определить рыночную цену. Так как подразумеваемая волатильность будет разной для разных страйков и сроков до экспирации, можно записать формулу для нее следующим образом:
где β′- вектор коэффициентов, Zi- вектор объясняющих переменных (страйки и время до экспирации), ϵi- вектор ошибок.
Наша задача — найти коэффициенты β0...β2m+1. Для этого сначала вычисляем подразумеваемые волатильности для всех страйков и сроков до экспирации из наблюдаемых рыночных цен за определенный период времени, затем с помощью метода наименьших квадратов находим коэффициенты β′, минимизируя выражение:
Число наблюдаемых точек N должно быть больше или равно . Для практических целей, как правило, достаточно m=5.
Итак, в результате мы можем найти «справедливые» цены для любого страйка и срока до экспирации, подставляя в формулу Блэка-Шоулза подразумеваемые волатильности, вычисленные через найденные коэффициенты β′ и значения этих страйков и периодов экспирации на текущий момент времени:
В помощь — примеры на языке 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; }
В следующей части цикла будем находить справедливые цены опционов с помощью модели Хестона.
Другие стратегии, применяемые в алгоритмической торговле и биржевых роботах смотрите в моем блоге и на сайте.
BlackSholes.cpp
// Black Scholes prices
// by Fabrice Douglas Rouah, FRouah.com and Volopta.com
[...]
«Истинная волатильность» это историческая волотильность и она рассчитывается элементарно. Любая самая простая графическая программа имеет соответствующие индикаторы. Но толку от нее ни какой, нужно знать будущую волатильность, а будующее не знает никто.
Настоящие опционеры анализируют фактические цены опционов напрямую, которые пропорциональны реальной (а не выдуманной) физической величине — вероятности достижения страйка. Соотношение цен на разных страйках даёт картину настроений (крупных) игроков рынка относительно вероятности движения в ту или иную сторону.
Поправка. Я это имею в виду конечно применительно для работы с историческими данными.