Рыночная котировка CDS задается с точки зрения стандартного спреда (обычно 100 б.п. или 500 б.п.) и авансового платежа, или с точки зрения эквивалентного спреда, без авансовой оплаты. Функции cdsbootstrap
, cdsspread
, и cdsprice
выполнить предварительное преобразование в выполнение или выполнение в предварительное преобразование.
Для примера, чтобы преобразовать рыночные котировки в авансовые котировки для стандартного спреда на 100 б.п.:
Settle = '17-Jul-2009'; % valuation date for the CDS MarketDates = datenum({'20-Sep-10','20-Sep-11','20-Sep-12','20-Sep-14',... '20-Sep-16'}); MarketSpreads = [140 175 210 265 310]'; MarketData = [MarketDates MarketSpreads]; ZeroDates = datenum({'17-Jan-10','17-Jul-10','17-Jul-11','17-Jul-12',... '17-Jul-13','17-Jul-14'}); ZeroRates = [1.35 1.43 1.9 2.47 2.936 3.311]'/100; ZeroData = [ZeroDates ZeroRates]; [ProbData,HazData] = cdsbootstrap(ZeroData,MarketData,Settle); Maturity3 = MarketData(:,1); Spread3Run = MarketData(:,2); Spread3Std = 100*ones(size(Maturity3)); Price3 = cdsprice(ZeroData,ProbData,Settle,Maturity3,Spread3Std); Upfront3 = Price3/10000000; % Standard notional of 10MM display(Upfront3);
Это получившееся значение:
Upfront3 = 0.0047 0.0158 0.0327 0.0737 0.1182
Преобразование может быть сторнировано, чтобы преобразовать авансовые котировки в рыночные котировки:
ProbData3Upf = cdsbootstrap(ZeroData,[Maturity3 Upfront3 Spread3Std],Settle); Spread3RunFromUpf = cdsspread(ZeroData,ProbData3Upf,Settle,Maturity3); display([Spread3Run Spread3RunFromUpf]);
Сравнение результатов этой конверсии с исходным рыночным спредом демонстрирует разворот:
ans = 140.0000 140.0000 175.0000 175.0000 210.0000 210.0000 265.0000 265.0000 310.0000 310.0000
В соответствии с соглашением о квотировании ставки плоской опасности (FHR), для калибровки кривой вероятностей используется единая рыночная котировка. Это соглашение дает одну точку в кривой вероятностей и одно значение скорости опасности. Например, примите четырехлетнее (стандартные даты) контракт CD с текущим основанным на FHR бегущим распространением 550 преобразований потребностей BP в контракт CD со стандартным распространением 500 BP:
Maturity4 = datenum('20-Sep-13'); Spread4Run = 550; ProbData4Run = cdsbootstrap(ZeroData,[Maturity4 Spread4Run],Settle); Spread4Std = 500; Price4 = cdsprice(ZeroData,ProbData4Run,Settle,Maturity4,Spread4Std); Upfront4 = Price4/10000000; fprintf('A running spread of %5.2f is equivalent to\n',Spread4Run); fprintf(' a standard spread of %5.2f with an upfront of %8.7f\n',... Spread4Std,Upfront4);
A running spread of 550.00 is equivalent to a standard spread of 500.00 with an upfront of 0.0167576
Чтобы отменить преобразование:
ProbData4Upf = cdsbootstrap(ZeroData,[Maturity4 Upfront4 Spread4Std],Settle); Spread4RunFromUpf = cdsspread(ZeroData,ProbData4Upf,Settle,Maturity4); fprintf('A standard spread of %5.2f with an upfront of %8.7f\n',... Spread4Std,Upfront4); fprintf(' is equivalent to a running spread of %5.2f\n',Spread4RunFromUpf);
A standard spread of 500.00 with an upfront of 0.0167576 is equivalent to a running spread of 550.00
Как обсуждалось в Beumee et. al., 2009 (см. Кредитные производные), FHR подход является только конвенцией котировки, и приводит к котировкам, несовместимым с рыночными данными. Например, вычисление начальных значений для трехлетнего (стандартных дат) контракта CDS со стандартным спредом 100 б.п. с помощью подхода FHR и сравнение результатов с ранее рассчитанными суммами начальных значений, демонстрирует, что основанный на FHR подход дает различную предварительную величину:
Maturity5 = MarketData(3,1); Spread5Run = MarketData(3,2); ProbData5Run = cdsbootstrap(ZeroData,[Maturity5 Spread5Run],Settle); Spread5Std = 100; Price5 = cdsprice(ZeroData,ProbData5Run,Settle,Maturity5,Spread5Std); Upfront5 = Price5/10000000; fprintf('Relative error of FHR-based upfront amount: %3.1f%%\n',... ((Upfront5-Upfront3(3))/Upfront3(3))*100);
Relative error of FHR-based upfront amount: -0.8%
cdsbootstrap
| cdsprice
| cdsrpv01
| cdsspread