В этом примере показано, как оценить опцию CDS одно имени с помощью cdsoptprice
. Функциональный cdsoptprice
основан на модели Черного цвета как описано в О'Кэйне (2008). Дополнительный knockout
аргумент для cdsoptprice
поддержки два изменения механики опции CDS. Опции CDS могут быть опциями нокаута или ненокаута.
Опция нокаута отменяет без платежей, если существует кредитное событие перед датой окончания срока действия опции.
Опция ненокаута не отменяет, если существует кредитное событие перед датой окончания срока действия опции. В этом случае держатель опции плательщика ненокаута swaption может взять доставку базового длинного CDS защиты на дате окончания срока действия опции и осуществить защиту, обеспечив принявшее значение по умолчанию обязательство взамен паритета. Этот фрагмент защиты от инициирования опции до истечения опции известен как защиту фронтенда (FEP). В то время как это различие не влияет на приемник swaption, цена плательщика ненокаута swaption получена путем добавления значения FEP плательщику нокаута swaption цена.
Задайте инструмент CDS.
Settle = datenum('12-Jun-2012'); OptionMaturity = datenum('20-Sep-2012'); CDSMaturity = datenum('20-Sep-2017'); OptionStrike = 200; SpreadVolatility = .4;
Задайте нулевой уровень.
Zero_Time = [.5 1 2 3 4 5]'; Zero_Rate = [.5 .75 1.5 1.7 1.9 2.2]'/100; Zero_Dates = daysadd(Settle,360*Zero_Time,1); ZeroData = [Zero_Dates Zero_Rate]
ZeroData = 6×2
105 ×
7.3521 0.0000
7.3540 0.0000
7.3576 0.0000
7.3613 0.0000
7.3649 0.0000
7.3686 0.0000
Задайте данные о рынке.
Market_Time = [1 2 3 5 7 10]'; Market_Rate = [100 120 145 220 245 270]'; Market_Dates = daysadd(Settle,360*Market_Time,1); MarketData = [Market_Dates Market_Rate]; ProbData = cdsbootstrap(ZeroData, MarketData, Settle)
ProbData = 6×2
105 ×
7.3540 0.0000
7.3576 0.0000
7.3613 0.0000
7.3686 0.0000
7.3759 0.0000
7.3868 0.0000
Задайте опцию CDS.
[Payer,Receiver] = cdsoptprice(ZeroData, ProbData, Settle, OptionMaturity, ... CDSMaturity, OptionStrike, SpreadVolatility, 'Knockout', true); fprintf(' Payer: %.0f Receiver: %.0f (Knockout)\n',Payer,Receiver);
Payer: 196 Receiver: 23 (Knockout)
[Payer,Receiver] = cdsoptprice(ZeroData, ProbData, Settle, OptionMaturity, ... CDSMaturity, OptionStrike, SpreadVolatility, 'Knockout', false); fprintf(' Payer: %.0f Receiver: %.0f (Non-Knockout)\n',Payer,Receiver);
Payer: 224 Receiver: 23 (Non-Knockout)
cdsoptprice
| cdsspread
| cdsrpv01