В этом примере показано, как оценить опции индекса CDS при помощи cdsoptprice
с прямой корректировкой распространения. В отличие от CDS одно имени, индекс портфеля CDS содержит несколько кредитов. Когда один или несколько из значения по умолчанию кредитов, соответствующие сопряженные платежи осуществлены покупателю защиты, но контракт все еще продолжает уменьшаемые купонные платежи. Рассмотрение того, что опция индекса CDS не отменяет, когда часть базового значения по умолчанию кредитов перед истечением, каждый может попытка оценить опции индекса CDS с помощью модели Черного цвета в опции CDS одно имени ненокаута. Однако модель Черного цвета в этой форме не подходит для оценки опций индекса CDS, потому что это не получает решение осуществления правильно, когда забастовка распространилась (K) очень высоко, и при этом это не гарантирует четность помещенного вызова, когда (K) не равен договорному распространению (О'Кэйн, 2008).
Однако с соответствующими модификациями, модель Черного цвета для опций CDS одно имени используется в cdsoptprice
может обеспечить хорошее приближение для опций индекса CDS. В то время как существуют некоторые изменения способа, которым модель Черного цвета изменяется для опций индекса CDS, они обычно включают корректировку прямого распространения F, забастовка распространила K или обоих. Здесь мы описываем подход корректировки прямого распространения только. В модели Черного цвета для опций CDS одно имени прямое распространение F задан как:
где
S является распространением.
RPV01 является опасной приведенной стоимостью пункта (см. cdsrpv01
).
t является датой оценки.
tE является датой окончания срока действия опции.
T является датой погашения CDS.
Чтобы получить решение осуществления правильно для CDS индексируют опции, мы используем форму нокаута модели Черного цвета и настраиваем прямое распространение, чтобы включить FEP можно следующим образом:
с FEP, заданным как
где
R является скоростью восстановления.
Z является коэффициентом дисконтирования.
Q является вероятностью выживания.
В cdsoptprice
, прямая корректировка распространения может быть внесена с AdjustedForwardSpread
параметр. При вычислении настроенного прямого распространения мы можем вычислить распространения с помощью cdsspread
и RPV01s с помощью cdsrpv01
.
Настройте данные для индекса CDS, его опции и кривой нулевой ширины. Базовым является 5-летний индекс CDS, назревающий 20 июня 2017, и опция истекает 20 июня 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
cdsoptprice
| cdsrpv01
| cdsspread