exponenta event banner

Ценовые свопции с негативными ударами с использованием сдвинутой модели SABR

В этом примере показано, как оценить свопции с отрицательными ударами с помощью модели Shilded SABR. Волатильность сдвинутого черного используется для калибровки параметров модели сдвинутого SABR. Калиброванная модель Shilded SABR затем используется для вычисления смещенных волатильностей черного для отрицательных ударов.

Затем свопции с отрицательными ударами оцениваются с использованием вычисленных смещенных волатильностей черного и swaptionbyblk функции с помощью 'Shift' для параметра задано заданное смещение. Аналогично, сдвинутые греки SABR можно вычислить с помощью optsensbysabr путем установки 'Shift' параметр. Наконец, из цен свопциона вычисляется плотность вероятности базового актива, чтобы показать, что цены свопциона подразумевают положительную плотность вероятности для некоторых негативных ударов.

Загрузите рыночные данные.

Во-первых, загрузите рыночные процентные ставки и данные волатильности свопциона. Волатильность рыночного свопциона котируется с точки зрения волатильности смещенного черного с 0.8 процентный сдвиг.

Определить RateSpec.

ValuationDate = '5-Apr-2016';
EndDates = datemnth(ValuationDate,[1 2 3 6 9 12*[1 2 3 4 5 6 7 8 9 10 12]])';
ZeroRates = [-0.34 -0.29 -0.25 -0.13 -0.07 -0.02 0.010 0.025 ...
    0.031 0.040 0.052 0.090 0.190 0.290 0.410 0.520]'/100;
Compounding = 1;
RateSpec = intenvset('ValuationDate',ValuationDate,'StartDates',ValuationDate, ...
'EndDates',EndDates,'Rates',ZeroRates,'Compounding',Compounding)
RateSpec = struct with fields:
           FinObj: 'RateSpec'
      Compounding: 1
             Disc: [16x1 double]
            Rates: [16x1 double]
         EndTimes: [16x1 double]
       StartTimes: [16x1 double]
         EndDates: [16x1 double]
       StartDates: 736425
    ValuationDate: 736425
            Basis: 0
     EndMonthRule: 1

Определите свопцион.

SwaptionSettle = '5-Apr-2016';
SwaptionExerciseDate = '5-Apr-2017';
SwapMaturity = '5-Apr-2022';
Reset = 1;
OptSpec = 'call';
TimeToExercise = yearfrac(SwaptionSettle,SwaptionExerciseDate);

Использовать swapbyzero для вычисления скорости прямого свопа.

LegRate = [NaN 0];  % To compute the forward swap rate, set the fixed rate to NaN.
[~, CurrentForwardValue] = swapbyzero(RateSpec,LegRate,SwaptionSettle,SwapMaturity,...
'StartDate',SwaptionExerciseDate)
CurrentForwardValue = 6.6384e-04

Укажите величину сдвига в десятичных разрядах для моделей Shaded Black и Shaded SABR.

Shift = 0.008;  % 0.8 percent shift

Загрузка рынка подразумевала сдвинутые данные волатильности черного для свопционов.

MarketShiftedBlackVolatilities = [21.1; 15.3; 14.0; 14.6; 16.0; 17.7; 19.8; 23.9; 26.2]/100;
StrikeGrid = [-0.5; -0.25; -0.125; 0; 0.125; 0.25; 0.5; 1.0; 1.5]/100;
MarketStrikes = CurrentForwardValue + StrikeGrid;
ATMShiftedBlackVolatility = MarketShiftedBlackVolatilities(StrikeGrid==0);

Откалибруйте сдвинутые параметры модели SABR.

Чтобы лучше представлять волатильность рынка в деньгах, Alpha значение параметра подразумевается волатильностью рынка по отношению к деньгам. Это аналогично методу 2 в разделе Калибровка модели SABR. Однако обратите внимание на добавление Shift кому CurrentForwardValue и использование 'Shift' параметр с blackvolbysabr. Beta параметр предопределен при 0.5.

Beta = 0.5;

Эта функция решает смещенное уравнение волатильности SABR в деньгах как многочлен Alpha. Обратите внимание на добавление Shift кому CurrentForwardValue.

alpharoots = @(Rho,Nu) roots([...
    (1 - Beta)^2*TimeToExercise/24/(CurrentForwardValue + Shift)^(2 - 2*Beta) ...
    Rho*Beta*Nu*TimeToExercise/4/(CurrentForwardValue + Shift)^(1 - Beta) ...
    (1 + (2 - 3*Rho^2)*Nu^2*TimeToExercise/24) ...
    -ATMShiftedBlackVolatility*(CurrentForwardValue + Shift)^(1 - Beta)]);

Эта функция преобразует волатильность в деньгах в Alpha выбирая наименьший положительный реальный корень.

atmVol2ShiftedSabrAlpha = @(Rho,Nu) min(real(arrayfun(@(x) ...
    x*(x>0) + realmax*(x<0 || abs(imag(x))>1e-6), alpharoots(Rho,Nu))));

Подгонка Rho и Nu (при преобразовании волатильности в деньгах в Alpha). Обратите внимание на 'Shift' параметр blackvolbysabr устанавливается в заданное смещение.

objFun = @(X) MarketShiftedBlackVolatilities - ...
    blackvolbysabr(atmVol2ShiftedSabrAlpha(X(1), X(2)), ...
    Beta, X(1), X(2), SwaptionSettle, SwaptionExerciseDate, CurrentForwardValue, ...
    MarketStrikes, 'Shift', Shift);

options = optimoptions('lsqnonlin','Display','none');
X = lsqnonlin(objFun, [0 0.5], [-1 0], [1 Inf], options);
Rho = X(1);
Nu = X(2);

Получить финал Alpha по калиброванным параметрам.

Alpha = atmVol2ShiftedSabrAlpha(Rho, Nu)
Alpha = 0.0133

Показать калиброванные сдвинутые параметры SABR.

CalibratedPrameters = array2table([Shift Alpha Beta Rho Nu],...
    'VariableNames',{'Shift' 'Alpha' 'Beta' 'Rho' 'Nu'},...
    'RowNames',{'1Y into 5Y'})
CalibratedPrameters=1×5 table
                  Shift     Alpha      Beta      Rho        Nu   
                  _____    ________    ____    _______    _______

    1Y into 5Y    0.008    0.013345    0.5     0.46698    0.49816

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

Использовать blackvolbysabr с 'Shift' параметр.

Strikes = (-0.6:0.01:1.6)'/100; % Include negative strikes.
SABRShiftedBlackVolatilities = blackvolbysabr(Alpha, Beta, Rho, Nu, SwaptionSettle, ...
    SwaptionExerciseDate, CurrentForwardValue, Strikes, 'Shift', Shift);

figure;
plot(MarketStrikes, MarketShiftedBlackVolatilities, 'o', ...
    Strikes, SABRShiftedBlackVolatilities);
h = gca;
line([0,0],[min(h.YLim),max(h.YLim)],'LineStyle','--');
ylim([0.13 0.31])
xlabel('Strike');
legend('Market quotes','Shifted SABR', 'location', 'southeast');
title (['Shifted Black Volatility (',num2str(Shift*100),' percent shift)']);

Figure contains an axes. The axes with title Shifted Black Volatility (0.8 percent shift) contains 3 objects of type line. These objects represent Market quotes, Shifted SABR.

Цена свопционов, в том числе с негативными забастовками.

Использовать swaptionbyblk с 'Shift' параметр для вычисления цен свопциона с использованием модели Shaded Black.

SwaptionPrices = swaptionbyblk(RateSpec, OptSpec, Strikes, SwaptionSettle, SwaptionExerciseDate, ...
    SwapMaturity, SABRShiftedBlackVolatilities, 'Reset', Reset, 'Shift', Shift);
figure;
plot(Strikes, SwaptionPrices, 'r');
h = gca;
line([0,0],[min(h.YLim),max(h.YLim)],'LineStyle','--');
xlabel('Strike');
title ('Swaption Price');

Figure contains an axes. The axes with title Swaption Price contains 2 objects of type line.

Вычислить сдвинутую дельту SABR.

Использовать optsensbysabr с 'Shift' параметр для вычисления Delta с использованием сдвинутой модели SABR.

ShiftedSABRDelta = optsensbysabr(RateSpec, Alpha, Beta, Rho, Nu, SwaptionSettle, ...
SwaptionExerciseDate, CurrentForwardValue, Strikes, OptSpec, 'Shift', Shift);

figure;
plot(Strikes,ShiftedSABRDelta,'r-');
ylim([-0.002 1.002]);
h = gca;
line([0,0],[min(h.YLim),max(h.YLim)],'LineStyle','--');
xlabel('Strike');
title ('Delta');

Figure contains an axes. The axes with title Delta contains 2 objects of type line.

Вычислите плотность вероятности.

Нейтральная с точки зрения риска плотность вероятности базовых цен активов терминала может быть аппроксимирована как вторая производная цен свопциона по отношению к забастовке (Breeden and Litzenberger, 1978). Как видно на графике ниже, вычисленная плотность вероятности положительна для некоторых отрицательных скоростей выше -0,8 процента (нижняя граница определяется 'Shift').

NumGrids = length(Strikes);
ProbDensity = zeros(NumGrids-2,1);
dStrike = mean(diff(Strikes));

for k = 2:(NumGrids-1)
    ProbDensity(k-1) = (SwaptionPrices(k-1) - 2*SwaptionPrices(k) + SwaptionPrices(k+1))/dStrike^2;
end

ProbDensity = ProbDensity./sum(ProbDensity);
ProbStrikes = Strikes(2:end-1);

figure;
plot(ProbStrikes,ProbDensity,'r-');
h = gca;
line([0,0],[min(h.YLim),max(h.YLim)],'LineStyle','--');
xlabel('Strike');
title ('Probability Density');

Figure contains an axes. The axes with title Probability Density contains 2 objects of type line.

Ссылки

Хаган, П. С., Кумар, Д., Лесневский, А. С. и Вудворд, Д. Е. «Управление риском улыбки». Журнал Уилмотт. 2002.

Kienitz, J. Процентные деривативы объяснены. Том 1. Пэлгрейв Макмиллан, 2014.

Бриден, Д. Т. и Литценбергер, Р. Х. «Цены государственных и условных претензий, подразумеваемых в опционных ценах». Бизнес журнала. Том 51. 1978.

См. также

| | | | | | | |

Связанные примеры

Подробнее