Графическое изображение чувствительности портфеля опций

Этот пример строит гамма как функцию от цены и времени для портфеля из 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');

См. также

| | | | | | | | | | | |

Похожие темы