Этот пример строит гамма как функцию от цены и времени для портфеля из 10 опций Black-Scholes.
На график в этом примере показана трехмерная поверхность. Для каждой точки на поверхности высота (z-значение) представляет собой сумму гамм для каждой опции в портфеле, взвешенную на величину каждой опции. Ось X представляет изменяющуюся цену, а ось Y - время. График добавляет четвертую размерность, показывая дельту в качестве цвета поверхности. Этот пример имеет приложения в хеджировании. Сначала настройте портфолио с произвольными данными. Текущие цены варьируются от $20 до $90 за каждую опцию. Затем установите соответствующие цены упражнений для каждой опции.
Range = 20:90; PLen = length(Range); ExPrice = [75 70 50 55 75 50 40 75 60 35];
Установите все безрисковые процентные ставки равными 10% и установите сроки погашения в днях. Установите все волатильности равными 0,35. Установите количество опций каждого инструмента и выделите пространство для матриц.
Rate = 0.1*ones(10,1); Time = [36 36 36 27 18 18 18 9 9 9]; Sigma = 0.35*ones(10,1); NumOpt = 1000*[4 8 3 5 5.5 2 4.8 3 4.8 2.5]; ZVal = zeros(36, PLen); Color = zeros(36, PLen);
Для каждого инструмента создайте матрицу (размера Time
по PLen
) цен на каждый период.
for i = 1:10
Pad = ones(Time(i),PLen); NewR = Range(ones(Time(i),1),:);
Создайте вектор периодов времени 1
на Time
и матрица раз, по одному столбцу для каждой цены.
T = (1:Time(i))'; NewT = T(:,ones(PLen,1));
Используйте функции гаммы и дельта-чувствительности Black-Scholes blsgamma
и blsdelta
для вычисления гаммы и дельты.
ZVal(36-Time(i)+1:36,:) = ZVal(36-Time(i)+1:36,:) ... + NumOpt(i) * blsgamma(NewR, ExPrice(i)*Pad, ... Rate(i)*Pad, NewT/36, Sigma(i)*Pad); Color(36-Time(i)+1:36,:) = Color(36-Time(i)+1:36,:) ... + NumOpt(i) * blsdelta(NewR, ExPrice(i)*Pad, ... Rate(i)*Pad, NewT/36, Sigma(i)*Pad);
end
Нарисуйте поверхность как mesh, установите точку зрения и поверните ось X назад из-за точки зрения. Оси варьируются от 20 до 90, от 0 до 36 и - ∞ до ∞.
mesh(Range, 1:36, ZVal, Color); view(60,60); set(gca, 'xdir','reverse', 'tag', 'mesh_axes_3'); axis([20 90 0 36 -inf inf]);
Добавьте заголовок и подписи по осям и нарисуйте рамку вокруг графика. Аннотировать цвета с помощью панели и пометить цветовую полосу.
title('Call Option Portfolio Sensitivity'); xlabel('Stock Price ($)'); ylabel('Time (months)'); zlabel('Gamma'); set(gca, 'box', 'on'); colorbar('horiz');
blsdelta
| blsgamma
| blsprice
| blsvega
| bndconvy
| bnddury
| bndkrdur
| bndprice
| corr2cov
| portopt
| zbtprice
| zero2disc
| zero2fwd