Яндекс.Метрика
ГлавнаяОпционные стратегии › Улыбка волатильности. Ad-hoc Блэк Шоулз

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

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 - время до экспирации;

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

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

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}, где K_i- цены  страйков, i\in{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

где \beta^{'} - вектор коэффициентов, Z_i - вектор объясняющих переменных (страйки и время до экспирации), \epsilon_i - вектор ошибок.

Наша задача - найти коэффициенты {\beta_0...\beta_{2m+1}}. Для этого сначала вычисляем подразумеваемые волатильности для всех страйков и сроков до экспирации из наблюдаемых рыночных цен за определенный период времени, затем с помощью метода наименьших квадратов находим коэффициенты \beta^{'}, минимизируя выражение:

\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.

Итак, в результате мы можем найти "справедливые" цены для любого страйка и срока до экспирации, подставляя в формулу Блэка-Шоулза подразумеваемые волатильности, вычисленные через найденные коэффициенты \beta^{'} и значения этих страйков и периодов экспирации на текущий момент времени:

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;
}

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

4 Комментарии[ Ваш комментарий ]

  1. Привет, есть чудесная библиотека где все реализовано https://github.com/lballabio/quantlib

  2. А может быть такое (не судите строго я новичёк), что S и K у брокер одинаковый? 

    • Не совсем понял вопрос. S - это цена базового актива, K- страйк, в какой -то момент они могут быть одинаковы. При чем здесь брокер?

Сообщение

Обратите внимание: вы можете использоватьHTML tags and attributes:
<a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>