Первые к значению по умолчанию подкачки

В этом примере показано, как оценить подкачки сначала к значению по умолчанию (FTD) под гомогенным предположением потерь.

Первая к значению по умолчанию подкачка является инструментом, который платит предопределенную сумму когда (и если) первая из корзины инструментальных значений по умолчанию кредита. Инструменты кредита в корзине обычно являются связями. Если мы принимаем, что сумма потерь после кредитного события является тем же самым для всех кредитов в корзине, мы находимся под гомогенным предположением потерь. Это предположение делает модели более простыми, потому что любое значение по умолчанию в корзине инициировало ту же сумму платежа. Этим примером является реализация методологии оценки для этих инструментов, как описано в О'Кэйне [2]. В методологии существует два шага: a) Вычислите вероятность выживания для корзины численно; b) Используйте эту кривую выживания и стандартную функциональность кредитного дефолтного свопа (CDS) одно имени, чтобы найти распространения FTD и оценить существующие подкачки FTD.

Подходящие кривые вероятности, чтобы продать данные

Учитывая рыночные котировки CDS для каждого выпускающего в корзине, используйте cdsbootstrap калибровать отдельные кривые вероятности по умолчанию для каждого выпускающего.

% Interest rate curve
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];

% CDS spreads
%   Each row in MarketSpreads corresponds to a different issuer; each
%   column to a different maturity date (corresponding to MarketDates)
MarketDates = datenum({'20-Sep-10','20-Sep-11','20-Sep-12','20-Sep-14',...
'20-Sep-16'});
MarketSpreads = [
   160 195 230 285 330;
   130 165 205 260 305;
   150 180 210 260 300;
   165 200 225 275 295];
% Number of issuers equals number of rows in MarketSpreads
nIssuers = size(MarketSpreads,1);

% Settlement date
Settle = datenum('17-Jul-2009');

На практике ось времени дискретизируется, и кривая выживания FTD только оценена в узлах решетки. Мы используем одну точку каждые три месяца. Запрашивать тот cdsbootstrap возвращает значения вероятности по умолчанию по определенным узлам решетки, мы хотим, используем дополнительный аргумент 'ProbDates'. Мы добавляем исходные стандартные даты рынка CDS в сетку, в противном случае информация о вероятности по умолчанию о тех датах была бы интерполирована с помощью двух самых близких дат на сетке, и цены на даты рынка будут противоречивы с исходными данными о рынке.

ProbDates = union(MarketDates,daysadd(Settle,360*(0.25:0.25:8),1));
nProbDates = length(ProbDates);
DefProb = zeros(nIssuers,nProbDates);

for ii = 1:nIssuers
   MarketData = [MarketDates MarketSpreads(ii,:)'];
   ProbData = cdsbootstrap(ZeroData,MarketData,Settle,...
      'ProbDates',ProbDates);
   DefProb(ii,:) = ProbData(:,2)';
end

Это калиброванные кривые вероятности по умолчанию для каждого кредита в корзине.

figure
plot(ProbDates',DefProb)
datetick
title('Individual Default Probability Curves')
ylabel('Cumulative Probability')
xlabel('Date')

Определите пороги скрытой переменной

Скрытые переменные используются в различных контекстах кредитного риска с различными интерпретациями. В некоторых контекстах скрытая переменная является прокси для разнообразия в значении активов, и область этой переменной сгруппирована с каждым интервалом, соответствующим кредитному рейтингу. Пределы интервалов или пороги, определяются из матриц миграции кредита. В нашем контексте скрытая переменная сопоставлена ко времени, чтобы принять значение по умолчанию, и пороги определяют интервалы в дискретизированной сетке времени, где значения по умолчанию могут произойти.

Официально, если время к значению по умолчанию конкретного выпускающего обозначается$\tau$, и мы знаем его функцию вероятности по умолчанию$P(t)$, скрытая переменная$A$ и соответствующие пороги$C(t)$ удовлетворяют

$$Pr ( \tau \leq t ) = P(t) = Pr (A \leq C(t))$$

или

$$Pr ( s \leq \tau \leq t ) = P(t) - P(s) = Pr (C(s) \leq A \leq C(t))$$

Эти отношения делают подходы скрытой переменной удобными для обеих симуляций и аналитических дериваций. Оба$P(t)$ и$C(t)$ являются функциями времени.

Выбор распределения для переменной$A$ определяет пороги$C(t)$. В стандартной модели скрытой переменной переменная$A$ выбрана, чтобы следовать за стандартным нормальным распределением, от который

$$C(t) = \Phi^{-1} (P(t))$$

где$\Phi$ совокупное стандартное нормальное распределение.

Используйте предыдущую формулу, чтобы определить пороги по умолчанию разовые или просто пороги по умолчанию, соответствуя вероятностям по умолчанию, ранее полученным для кредитов в корзине.

DefThresh = norminv(DefProb);

Выведите кривую выживания для корзины

Следующий О'Кэйн [2], мы используем модель скрытой переменной с одним фактором, чтобы вывести выражения для функции вероятности выживания корзины.

Учитывая параметры$\beta_i$ для каждого выпускающего $i$и данные независимые стандартные нормальные переменные$Z$ и$\epsilon_i$, модель скрытой переменной с одним фактором принимает, что скрытая переменная$A_i$, сопоставленная выпускающему$i$, удовлетворяет

$$A_i = \beta_i * Z + \sqrt{1-\beta_i^2} * \epsilon_i$$

Это вызывает корреляцию между выпускающими$i$ и$j$$\beta_i \beta_j$. Все скрытые переменные$A_i$ совместно используют общий множитель$Z$ как источник неопределенности, но каждая скрытая переменная также имеет особенный источник неопределенности$\epsilon_i$. Чем больше коэффициент$\beta_i$, тем больше скрытая переменная напоминает общий множитель$Z$.

Используя модель скрытой переменной, мы выводим аналитическую формулу для вероятности выживания корзины.

Вероятность, что выпускающий$i$ выживает в прошлый раз$t_j$, другими словами, что его время по умолчанию$\tau_i$ больше$t_j$,

$$Pr ( \tau_i > t_j ) = 1 - Pr ( A_i \leq C_i(t_j) )$$

где$C_i(t_j)$ порог по умолчанию вычисляется выше для выпускающего $i$для$j$-th даты в сетке дискретизации.

Условное выражение на значении одного фактора$Z$, вероятность, что все выпускающие выживают в прошлый раз$t_j$,

$$Pr (\mbox{No defaults by time } t_j | Z )$$
$$= Pr ( \tau_i > t_j \mbox{ for all } i | Z )$$
$$= \prod_i [ 1 - Pr (A_i \leq C_i(t_j) | Z) ]$$

где продукт выравнивается по ширине потому что весь $\epsilon_i$независимого. Поэтому условное выражение на$Z$, $A_i$независимого.

Безусловная вероятность никаких значений по умолчанию ко времени$t_j$ является интегралом по всем значениям$Z$ предыдущей условной вероятности

$$Pr ( \mbox{No defaults by time } t_j )$$
$$= \int_Z \prod_i [1 - Pr (A_i \leq C_i(t_j) | Z)] \phi(Z) dZ$$

со$\phi(Z)$ стандартной нормальной плотностью.

Путем оценки этого одномерного интеграла для каждой точки$t_j$ в сетке мы получаем дискретизацию кривой выживания для целой корзины, которая является кривой выживания FTD.

Модель скрытой переменной может также использоваться, чтобы симулировать времена по умолчанию, который является задним механизмом многих методологий оценки для инструментов кредита. Loeffler и Posch [1], например, оценивают вероятность выживания корзины через симуляцию. В каждом симулированном сценарии время, чтобы принять значение по умолчанию определяется для каждого выпускающего. С некоторой бухгалтерией вероятность наличия первого значения по умолчанию на каждом блоке сетки может быть оценена от симуляции. Подход симуляции также обсужден в О'Кэйне [2]. Симуляция очень гибка и применима ко многим инструментам кредита. Однако аналитические подходы предпочтены, когда доступно, потому что они намного быстрее и более точны, чем симуляция.

Чтобы вычислить вероятности выживания FTD в нашем примере, мы устанавливаем все беты на квадратный корень из целевой корреляции. Затем мы циклично выполняемся по всем датам в сетке времени, чтобы вычислить одномерный интеграл, который дает вероятность выживания корзины.

Относительно реализации, условной вероятности выживания в зависимости от скалярного Z был бы

condProb=@(Z)prod(normcdf((-DefThresh(:,jj)+beta*Z)./sqrt(1-beta.^2)));

Однако функция интегрирования, которую мы используем, требует, чтобы указатель на функцию подынтегрального выражения принял векторы. Несмотря на то, что цикл вокруг скалярной версии условной вероятности работал бы, намного более эффективно векторизовать условную вероятность с помощью bsxfun.

beta = sqrt(0.25)*ones(nIssuers,1);

FTDSurvProb = zeros(size(ProbDates));
for jj = 1:nProbDates
   % vectorized conditional probability as a function of Z
   vecCondProb = @(Z)prod(normcdf(bsxfun(@rdivide,...
      -repmat(DefThresh(:,jj),1,length(Z))+bsxfun(@times,beta,Z),...
      sqrt(1-beta.^2))));
   % truncate domain of normal distribution to [-5,5] interval
   FTDSurvProb(jj) = integral(@(Z)vecCondProb(Z).*normpdf(Z),-5,5);
end
FTDDefProb = 1-FTDSurvProb;

Сравните вероятность FTD с вероятностями по умолчанию отдельных выпускающих.

figure
plot(ProbDates',DefProb)
datetick
hold on
plot(ProbDates,FTDDefProb,'LineWidth',3)
datetick
hold off
title('FTD and Individual Default Probability Curves')
ylabel('Cumulative Probability')
xlabel('Date')

Найдите распространения FTD и цену существующими подкачками FTD

Под предположением, что все инструменты в корзине имеют ту же скорость восстановления или гомогенное предположение потерь (см. О'Кэйна в Ссылках), мы получаем распространение для подкачки FTD с помощью cdsspread функция, но передача данных о вероятности FTD только вычисляется.

Maturity = MarketDates;
ProbDataFTD = [ProbDates, FTDDefProb];
FTDSpread = cdsspread(ZeroData,ProbDataFTD,Settle,Maturity);

Сравните распространения FTD с отдельными распространениями.

figure
plot(MarketDates,MarketSpreads')
datetick
hold on
plot(MarketDates,FTDSpread,'LineWidth',3)
hold off
title('FTD and Individual CDS Spreads')
ylabel('FTD Spread (bp)')
xlabel('Maturity Date')

Существующая подкачка FTD может быть оценена с cdsprice, использование той же вероятности FTD.

Maturity0 = MarketDates(1); % Assume maturity on nearest market date
Spread0 = 540; % Spread of existing FTD contract
% Assume default values of recovery and notional
FTDPrice = cdsprice(ZeroData,ProbDataFTD,Settle,Maturity0,Spread0);
fprintf('Price of existing FTD contract: %g\n',FTDPrice)
Price of existing FTD contract: 17644.7

Анализируйте чувствительность к корреляции

Проиллюстрировать чувствительность FTD распространяется к параметрам модели, мы вычисляем распространения рынка для области значений значений корреляции.

corr = [0 0.01 0.10 0.25 0.5 0.75 0.90 0.99 1];
FTDSpreadByCorr = zeros(length(Maturity),length(corr));
FTDSpreadByCorr(:,1) = sum(MarketSpreads)';
FTDSpreadByCorr(:,end) = max(MarketSpreads)';

for ii = 2:length(corr)-1
   beta = sqrt(corr(ii))*ones(nIssuers,1);
   FTDSurvProb = zeros(length(ProbDates));
   for jj = 1:nProbDates
      % vectorized conditional probability as a function of Z
      condProb = @(Z)prod(normcdf(bsxfun(@rdivide,...
         -repmat(DefThresh(:,jj),1,length(Z))+bsxfun(@times,beta,Z),...
         sqrt(1-beta.^2))));
      % truncate domain of normal distribution to [-5,5] interval
      FTDSurvProb(jj) = integral(@(Z)condProb(Z).*normpdf(Z),-5,5);
   end
   FTDDefProb = 1-FTDSurvProb;
   ProbDataFTD = [ProbDates, FTDDefProb];
   FTDSpreadByCorr(:,ii) = cdsspread(ZeroData,ProbDataFTD,Settle,Maturity);
end

Распространения FTD находятся в полосе между суммой и максимумом отдельных распространений. Когда корреляция увеличивается до одной, уменьшения распространений FTD к максимуму отдельных распространений в корзине (все значение по умолчанию кредитов вместе). Когда корреляция уменьшается к нулю, распространения FTD приближаются к сумме отдельных распространений (независимые кредиты).

figure
legends = cell(1,length(corr));
plot(MarketDates,FTDSpreadByCorr(:,1),'k:')
legends{1} = 'Sum of Spreads';
datetick
hold on
for ii = 2:length(corr)-1
   plot(MarketDates,FTDSpreadByCorr(:,ii),'LineWidth',3*corr(ii))
   legends{ii} = ['Corr ' num2str(corr(ii)*100) '%'];
end
plot(MarketDates,FTDSpreadByCorr(:,end),'k-.')
legends{end} = 'Max of Spreads';

hold off
title('FTD Spreads for Different Correlations')
ylabel('FTD Spread (bp)')
xlabel('Maturity Date')
legend(legends,'Location','NW')

Для коротких сроков платежа и маленьких корреляций, корзина эффективно независима (распространение FTD очень близко к сумме отдельных распространений). Эффект корреляции становится более значительным для более длинных сроков платежа.

Вот альтернативная визуализация зависимости распространений FTD на корреляции.

figure
surf(corr,MarketDates,FTDSpreadByCorr)
datetick('y')
ax = gca;
ax.YDir = 'reverse';
view(-40,10)
title('FTD Spreads for Different Correlations and Maturities')
xlabel('Correlation')
ylabel('Maturity Date')
zlabel('FTD Spread (bp)')

Ссылки

[1] Loeffler, Гантер и Питер Пош, использование моделирования Кредитного риска Excel и VBA, Вайли Финэнс, 2007.

[2] О'Кэйн, Доминик, Моделируя одно имя и мультиимя Кредитные деривативы, Вайли Финэнс, 2008.

Смотрите также

| | |

Похожие темы

Внешние веб-сайты