Расчет цен на индекс

В этом примере показано, как оценить опции индекса CDS при помощи cdsoptprice с регулировкой прямого спреда. В отличие от CDS с одним именем, индекс портфеля CDS содержит несколько кредитов. При дефолте одного или нескольких кредитов покупателю по защите производятся соответствующие условные платежи, но договор все еще продолжается с уменьшением купонных платежей. Учитывая тот факт, что опция индекса CDS не отменяет, когда некоторые базовые кредиты по умолчанию до истечения срока действия, можно попытаться оценить опции индекса CDS с помощью модели Black для опции CDS с одним именем без нокаута. Тем не менее, модель Блэка в этой форме не подходит для опций индекса CDS ценообразования, потому что она не фиксирует решение упражнения правильно, когда спред забастовки (K) очень высок, и не гарантирует паритет вызова в положительный момент, когда (K) не равен спреду по контракту (O'Kane, 2008).

Однако с соответствующими модификациями модель Блэка для одноименных опций CDS, используемых в cdsoptprice может обеспечить хорошее приближение для опций индекса CDS. Несмотря на то, что существуют некоторые изменения в способе изменения модели черных для опций индекса CDS, они обычно включают корректировку передней F спреда, K спреда страйка или обоих. Здесь мы опишем подход корректировки только прямого спреда. В модели Black для одноименных опций CDS, передний спред- F определяется как:

F=S(t,tE,T)=S(t,T)RPV01(t,T)S(t,tE)RPV01(t,tE)RPV01(t,tE,T)

где

S - спред.

RPV01 является рискованным текущим значением базисной точки (см cdsrpv01).

t - дата оценки.

tE является датой истечения срока действия опции.

T - дата погашения CDS.

Чтобы правильно зафиксировать решение упражнения для опций индекса CDS, мы используем форму нокаута модели черных и корректируем прямой спред, чтобы включить FEP следующим образом:

FAdj=F+FEPRPV01(t,tE,T)

с FEP, заданными как

FEP=(1R)Z(t,tE)(1Q(t,tE))

где

R - скорость восстановления.

Z - коэффициент дисконтирования.

Q - вероятность выживания.

В cdsoptprice, прямая регулировка спреда может быть выполнена с помощью AdjustedForwardSpread параметр. При вычислении скорректированного прямого спреда мы можем вычислить спреды с помощью cdsspread и RPV01s с использованием cdsrpv01.

Настройте данные для индекса CDS, его опции и нулевой кривой. Базовым является 5-летний индекс CDS, созревающий на 20-Jun-2017, и срок действия опции истекает на 20-Jun-2012. Плоский разброс индекса принимается при загрузке кривой вероятностей по умолчанию.

% CDS index and option data
Recovery = .4;
Basis = 2;
Period = 4;
CDSMaturity = datenum('20-Jun-2017');
ContractSpread = 100;
IndexSpread = 140;
BusDayConvention = 'follow';
Settle = datenum('13-Apr-2012');
OptionMaturity = datenum('20-Jun-2012');
OptionStrike = 140;
SpreadVolatility = .69;

% Zero curve data
MM_Time = [1 2 3 6]';
MM_Rate = [0.004111 0.00563 0.00757 0.01053]';
MM_Dates = daysadd(Settle,30*MM_Time,1);
Swap_Time = [1 2 3 4 5 6 7 8 9 10 12 15 20 30]';
Swap_Rate = [0.01387 0.01035 0.01145 0.01318 0.01508 0.01700 0.01868 ...
    0.02012 0.02132 0.02237 0.02408 0.02564 0.02612 0.02524]';
Swap_Dates = daysadd(Settle,360*Swap_Time,1);

InstTypes = [repmat({'deposit'},size(MM_Time));repmat({'swap'},size(Swap_Time))];
Instruments = [repmat(Settle,size(InstTypes)) [MM_Dates;Swap_Dates] [MM_Rate;Swap_Rate]];

ZeroCurve = IRDataCurve.bootstrap('zero',Settle,InstTypes,Instruments);

% Bootstrap the default probability curve assuming a flat index spread.
MarketData = [CDSMaturity IndexSpread];
ProbDates = datemnth(OptionMaturity,(0:5*12)');
ProbData = cdsbootstrap(ZeroCurve, MarketData, Settle, 'ProbDates', ProbDates);

Вычислите точечную и прямую RPV01s, которая будет использоваться позже при расчете скорректированного спреда. Для этого мы можем использовать cdsrpv01.

% RPV01(t,T)
RPV01_CDSMaturity = cdsrpv01(ZeroCurve,ProbData,Settle,CDSMaturity)

% RPV01(t,t_E,T)
RPV01_OptionExpiryForward = cdsrpv01(ZeroCurve,ProbData,Settle,CDSMaturity,...
    'StartDate',OptionMaturity)

% RPV01(t,t_E) = RPV01(t,T) - RPV01(t,t_E,T)
RPV01_OptionExpiry = RPV01_CDSMaturity - RPV01_OptionExpiryForward
RPV01_CDSMaturity =

    4.7853


RPV01_OptionExpiryForward =

    4.5971


RPV01_OptionExpiry =

    0.1882

Вычислите точечные спреды с помощью cdsspread.

% S(t,t_E)
Spread_OptionExpiry = cdsspread(ZeroCurve,ProbData,Settle,OptionMaturity,...
    'Period',Period,'Basis',Basis,'BusDayConvention',BusDayConvention,...
    'PayAccruedPremium',true,'recoveryrate',Recovery)

% S(t,T)
Spread_CDSMaturity = cdsspread(ZeroCurve,ProbData,Settle,CDSMaturity,...
    'Period',Period,'Basis',Basis,'BusDayConvention',BusDayConvention,...
    'PayAccruedPremium',true,'recoveryrate',Recovery)
Spread_OptionExpiry =

  139.9006


Spread_CDSMaturity =

  140.0000

Точечные спреды и RPV01s затем используются для вычисления прямого спреда.

% F = S(t,t_E,T)
ForwardSpread = (Spread_CDSMaturity.*RPV01_CDSMaturity - ...
    Spread_OptionExpiry.*RPV01_OptionExpiry)./RPV01_OptionExpiryForward
ForwardSpread =

  140.0040

Вычислите внешнюю защиту (FEP).

FEP = 10000*(1-Recovery)*ZeroCurve.getDiscountFactors(OptionMaturity)*ProbData(1,2)
FEP =

   26.3108

Вычислите скорректированный спред.

AdjustedForwardSpread = ForwardSpread + FEP./RPV01_OptionExpiryForward
AdjustedForwardSpread =

  145.7273

Вычислите цены опций используя cdsoptprice с скорректированным прямым спредом. Еще раз обратите внимание, что Knockout параметр должен быть true потому что FEP уже был включен в скорректированный прямой спред.

[Payer,Receiver] = cdsoptprice(ZeroCurve, ProbData, Settle, OptionMaturity, ...
    CDSMaturity, OptionStrike, SpreadVolatility,'Knockout',true,...
    'AdjustedForwardSpread', AdjustedForwardSpread,'PayAccruedPremium',true);
fprintf('    Payer: %.0f   Receiver: %.0f  \n',Payer,Receiver);
Payer: 92   Receiver: 66  

См. также

| |

Похожие темы