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