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

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

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

  • Вычислите вероятность выживания для корзины численно.

  • Используйте эту кривую выживания и стандартную функциональность кредитного дефолтного свопа (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')

Figure contains an axes object. The axes object with title Individual Default Probability Curves contains 4 objects of type line.

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

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

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

Pr(τt)=P(t)=Pr(AC(t))

или

Pr(sτt)=P(t)-P(s)=Pr(C(s)AC(t))

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

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

C(t)=Φ-1(P(t))

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

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

DefThresh = norminv(DefProb);

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

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

Учитывая параметры βi для каждого выпускающего i, и, учитывая независимые стандартные нормальные переменные Z и ϵi, модель скрытой переменной с одним фактором принимает что скрытая переменная Ai сопоставленный выпускающему i удовлетворяет

Ai=βi*Z+1-βi2*ϵi

Это вызывает корреляцию между выпускающими i и j из βiβj. Все скрытые переменные Ai совместно используйте общий множитель Z когда источник неопределенности, но каждая скрытая переменная также имеет особенный источник неопределенности ϵi. Большее коэффициент βi, больше скрытая переменная напоминает общий множитель Z.

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

Pr(τi>tj)=1-Pr(AiCi(tj))

где Ci(tj) порог по умолчанию, вычисленный выше для выпускающего i, для j- дата th в сетке дискретизации. Условное выражение на значении одного фактора Z, вероятность, что все выпускающие выживают в прошлый раз tj

Pr(No значения по умолчанию  время tj|Z)

=Pr(τi>tj для все i|Z)

=i[1-Pr(AiCi(tj)|Z)]

где продукт выравнивается по ширине потому что весь ϵiнезависимы. Поэтому условное выражение на Z, Aiнезависимы. Безусловная вероятность никаких значений по умолчанию ко времени tj интеграл по всем значениям Z из предыдущей условной вероятности

Pr(No значения по умолчанию  время tj)

=Zi[1-Pr(AiCi(tj)|Z)]ϕ(Z)dZ

с ϕ(Z) стандартная нормальная плотность.

Путем оценки этого одномерного интеграла для каждой точки tj в сетке вы получаете дискретизацию кривой выживания для целой корзины, которая является кривой выживания 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')

Figure contains an axes object. The axes object with title FTD and Individual Default Probability Curves contains 5 objects of type line.

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

Под предположением, что все инструменты в корзине имеют ту же скорость восстановления или гомогенное предположение потерь (см. О'Кэйна [2]), вы получаете распространение для подкачки 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')

Figure contains an axes object. The axes object with title FTD and Individual CDS Spreads contains 5 objects of type line.

Существующая подкачка 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
   FTDSurvProb = FTDSurvProb(:,1);
   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')

Figure contains an axes object. The axes object with title FTD Spreads for Different Correlations contains 9 objects of type line. These objects represent Sum of Spreads, Corr 1%, Corr 10%, Corr 25%, Corr 50%, Corr 75%, Corr 90%, Corr 99%, Max of Spreads.

Для коротких сроков платежа и маленьких корреляций, корзина эффективно независима (распространение 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)')

Figure contains an axes object. The axes object with title FTD Spreads for Different Correlations and Maturities contains an object of type surface.

Ссылки

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

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

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

| | |

Связанные примеры

Больше о

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