В этом примере показано, как оценить опцию CDS с одним именем с помощью cdsoptprice
. Функция cdsoptprice
основан на модели Блэка, как описано в O'Kane (2008). Необязательный knockout
аргумент для cdsoptprice
поддерживает два изменений механики опции CDS. Опции CDS могут быть опциями нокаута или без нокаута.
Опция нокаута отменяется без платежей, если есть кредитное событие до истечения срока действия опции.
Опция non-nockout не отменяет, если есть кредитное событие до истечения срока действия опции. В этом случае держатель опции, не являющийся плательщиком, может взять поставку базового длинного CDS защиты на дату истечения срока действия опции и выполнить защиту, предоставив дефолтное обязательство в обмен на номинал. Этот фрагмент защиты от инициирования опции до истечения срока действия опции известен как внешняя защита (FEP). Хотя это различие не влияет на свопцион приемника, цена свопциона плательщика, не являющегося нокаутом, достигается путем добавления значения FEP к цене свопциона плательщика нокаута.
Определите прибор 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
| cdsrpv01
| cdsspread