Неправильный способ риска с копулами

Этот пример показывает подход к моделированию неправильного риска для Контрагентского кредитного риска с помощью Гауссовой копулы.

Основной подход к Контрагентскому кредитному риску (CCR) (см. Пример Контрагентского кредитного риска и CVA) предполагает, что факторы рыночного и кредитного риска независимы друг от друга. Симуляция факторов рыночного риска управляет рисками для всех контрактов в портфеле. На отдельном шаге рыночные котировки свопа кредита-дефолта (CDS) определяют вероятности дефолта для каждого контрагента. Экспозиции, вероятности дефолта и заданная ставка возмещения используются для вычисления Корректировки кредитной стоимости (CVA) для каждого контрагента, что является мерой ожидаемого убытка. Симуляция факторов риска и вероятностей по умолчанию рассматриваются как независимые друг от друга.

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

Когда вероятность дефолта контрагента и риска, связанного с конкретным контрактом, как правило, увеличивается вместе, мы говорим, что контракт имеет неправильный риск (WWR).

Этот пример демонстрирует реализацию неправильной методологии риска, описанной в Garcia Cespedes et al. (см. «Ссылки»).

Симуляция воздействий

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

Этот пример использует данные и результаты симуляции из примера Контрагентского кредитного риска и CVA, ранее сохраненные в файле ccr.mat. Файл ccr.mat содержит:

  • RateSpecСпецификация ставки при вычислении значений контракта

  • Settle: Дата урегулирования, когда были рассчитаны значения контракта

  • simulationDates: Вектор дат симуляции

  • swaps: Struct, содержащая параметры свопа

  • values: The NUMDATES x NUMCONTRACT x NUMSCENARIOS куба смоделированных значений контрактов на каждую дату/сценарий

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

load ccr.mat

oneYearIdx = 13;
values = values(1:oneYearIdx,:,:);
dates = simulationDates(1:oneYearIdx);

numScenarios = size(values,3);

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

Поскольку значения по умолчанию могут произойти в любой момент в течение годичного периода времени, обычно моделируют воздействие по умолчанию (EAD) на основе идеи ожидаемого положительного воздействия (EPE). Вычисляется усредненное по времени воздействие для каждого сценария, которое называется PE (положительное воздействие). Средним значением PE, включая все сценарии, является EPE, который также может быть получен из exposureprofiles функция.

Матрица положительного воздействия PE содержит по одной строке на моделируемый сценарий и по одному столбцу на контрагента. Это используется в качестве EAD в нашем анализе.

% Compute counterparty exposures
[exposures, counterparties] = creditexposures(values,swaps.Counterparty, ...
    'NettingID',swaps.NettingID);
numCP = numel(counterparties);

% Compute PE (time-averaged exposures) per scenario
intervalWeights = diff(dates) / (dates(end) - dates(1));
exposureMidpoints = 0.5 * (exposures(1:end-1,:,:) + exposures(2:end,:,:));
weightedContributions = bsxfun(@times,intervalWeights,exposureMidpoints);
PE = squeeze(sum(weightedContributions))';

% Compute total portfolio exposure per scenario
totalExp = sum(PE,2);

% Display size of PE and totalExp
whos PE totalExp
  Name             Size            Bytes  Class     Attributes

  PE            1000x5             40000  double              
  totalExp      1000x1              8000  double              

Симуляция кредита

Общий подход к симуляции дефолтов по кредитам основан на «однофакторной модели», иногда называемой «подходом к стоимости активов» (см. Gupton et al., 1997). Это эффективный способ моделирования коррелированных значений по умолчанию.

Каждая компания i связана со случайной переменной Yi, такой что

Yi=βiZ+1-βi2ϵi

где Z является «одним фактором», стандартной нормальной случайной переменной, которая представляет собой систематический фактор кредитного риска, значения которого влияют на все компании. Корреляция между компанией i и общим фактором задается beta_i, корреляция между компаниями i и j beta_i*beta_j. Идиосинкратический epsilon_i шока является другой стандартной нормальной переменной, которая может уменьшить или усилить эффект систематического фактора, независимо от того, что происходит с любой другой компанией.

Если вероятность по умолчанию для компании i является PDi, то по умолчанию происходит, когда

Φ(Yi)<PDi

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

Переменная Yi иногда интерпретируется как возвраты активов, или иногда упоминается как латентная переменная.

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

Используйте спреды CDS для загрузки годичных вероятностей по умолчанию для каждого контрагента. Котировки CDS получены из электронной таблицы своп-портфеля, используемой в примере Контрагентского кредитного риска и CVA.

% Import CDS market information for each counterparty
swapFile = 'cva-swap-portfolio.xls';
cds = readtable(swapFile,'Sheet','CDS Spreads');
cdsDates = datenum(cds.Date);
cdsSpreads = table2array(cds(:,2:end));

% Bootstrap default probabilities for each counterparty
zeroData = [RateSpec.EndDates RateSpec.Rates];
defProb = zeros(1, size(cdsSpreads,2));
for i = 1:numel(defProb)
    probData = cdsbootstrap(zeroData, [cdsDates cdsSpreads(:,i)], ...
        Settle, 'probDates', dates(end));
    defProb(i) = probData(2);
end

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

Параметр чувствительности beta установлен в 0.3 для всех контрагентов. Это значение может быть калибровано или настроено, чтобы исследовать чувствительности модели. Для получения дополнительной информации см. ссылки.

numCreditScen = 100000;
rng('default');

% Z is the single credit factor
Z = randn(numCreditScen,1);

% epsilon is the idiosyncratic factor
epsilon = randn(numCreditScen,numCP);

% beta is the counterparty sensitivity to the credit factor
beta = 0.3 * ones(1,numCP);

% Counterparty latent variables
Y = bsxfun(@times,beta,Z) + bsxfun(@times,sqrt(1 - beta.^2),epsilon);

% Default indicator
isDefault = bsxfun(@lt,normcdf(Y),defProb);

Корреляция сценариев риска и кредита

Теперь, когда существует набор отсортированных сценариев воздействия портфеля и набор сценариев по умолчанию, следуйте подходу в Garcia Cespedes et al. и используйте Гауссову копулу, чтобы сгенерировать коррелированные пары сценария по умолчанию воздействия.

Задайте латентную переменную Ye, которая преобразуется в распределение моделируемых воздействий. Ye определяется как

Ye=ρZ+1-ρ2ϵe

где Z является системным фактором, вычисленным в симуляции кредита, epsilon_e является независимой стандартной нормальной переменной и rho интерпретируется как параметр рыночной корреляции кредита. По конструкции Ye является стандартной нормальной переменной, коррелирующей с Z с параметром корреляции rho.

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

В этом примере используйте общую подверженность портфелю (totalExp) как критерий сценария риска для корреляции кредитного фактора с общим риском. Если rho отрицательно, низкие значения кредитного фактора Z, как правило, связаны с высокими значениями Ye, следовательно, с высокими рисками. Это означает отрицательные значения rho введения WWR.

Чтобы реализовать отображение между Ye и сценариями воздействия, отсортируйте сценарии воздействия по totalExp значения. Предположим, что количество сценариев воздействия является S (numScenarios). Учитывая Ye, найдите значение j такое, что

j-1SΦ(Ye)<jS

и выберите сценарий j из отсортированных сценариев воздействия.

Ye коррелирует с моделируемыми воздействиями, а Z коррелирует с моделируемыми значениями по умолчанию. Поэтому корреляционный rho между Ye и Z является корреляционной ссылкой между экспозициями и симуляциями кредита.

% Sort the total exposure
[~,totalExpIdx] = sort(totalExp);

% Scenario cut points
cutPoints = 0:1/numScenarios:1;

% epsilonExp is the idiosyncratic factor for the latent variable
epsilonExp = randn(numCreditScen,1);

% Set a market-credit correlation value
rho = -0.75;

% Latent variable
Ye = rho * Z + sqrt(1 - rho^2) * epsilonExp;

% Find corresponding exposure scenario
binidx = discretize(normcdf(Ye),cutPoints);
scenIdx = totalExpIdx(binidx);
totalExpCorr = totalExp(scenIdx);
PECorr = PE(scenIdx,:);

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

% We only plot up to 10000 scenarios
numScenPlot = min(10000,numCreditScen);
figure;
scatter(Z(1:numScenPlot),totalExpCorr(1:numScenPlot))
hold on
scatter(Z(1:numScenPlot),PECorr(1:numScenPlot,1))
xlabel('Credit Factor (Z)')
ylabel('Exposure')
title(['Correlated Exposure-Credit Scenarios, \rho = ' num2str(rho)])
legend('Total Exposure','CP1 Exposure')
hold off

Figure contains an axes. The axes with title Correlated Exposure-Credit Scenarios, \rho = -0.75 contains 2 objects of type scatter. These objects represent Total Exposure, CP1 Exposure.

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

rho = 0.75;
Ye = rho * Z + sqrt(1 - rho^2) * epsilonExp;
binidx = discretize(normcdf(Ye),cutPoints);
scenIdx = totalExpIdx(binidx);
totalExpCorr = totalExp(scenIdx);

figure;
scatter(Z(1:numScenPlot),totalExpCorr(1:numScenPlot))
xlabel('Credit Factor (Z)')
ylabel('Exposure')
title(['Correlated Exposure-Credit Scenarios, \rho = ' num2str(rho)])

Figure contains an axes. The axes with title Correlated Exposure-Credit Scenarios, \rho = 0.75 contains an object of type scatter.

Чувствительность к корреляции

Можно исследовать чувствительность воздействия или других мер риска к области значений значений для rho.

Для каждого значения rho вычислите общие потери по сценарию кредита, а также ожидаемые потери по контрагенту. Этот пример принимает частоту восстановления 40%.

Recovery = 0.4;
rhoValues = -1:0.1:1;

totalLosses = zeros(numCreditScen,numel(rhoValues));
expectedLosses = zeros(numCP, numel(rhoValues));

for i = 1:numel(rhoValues)
    
    rho = rhoValues(i);
    
    % Latent variable
    Ye = rho * Z + sqrt(1 - rho^2) * epsilonExp;
    
    % Find corresponding exposure scenario
    binidx = discretize(normcdf(Ye),cutPoints);
    scenIdx = totalExpIdx(binidx);
    simulatedExposures = PE(scenIdx,:);
    
    % Compute actual losses based on exposures and default events
    losses = isDefault .* simulatedExposures * (1-Recovery);    
    totalLosses(:,i) = sum(losses,2);
    
    % We compute the expected losses per counterparty
    expectedLosses(:,i) = mean(losses)';    
end
displayExpectedLosses(rhoValues, expectedLosses)
               Expected Losses
 Rho    CP1      CP2      CP3     CP4       CP5
-------------------------------------------------
-1.0   604.10   260.44   194.70  1234.17   925.95-0.9   583.67   250.45   189.02  1158.65   897.91-0.8   560.45   245.19   183.23  1107.56   865.33-0.7   541.08   235.86   177.16  1041.39   835.12-0.6   521.89   228.78   170.49   991.70   803.22-0.5   502.68   217.30   165.25   926.92   774.27-0.4   487.15   211.29   160.80   881.03   746.15-0.3   471.17   203.55   154.79   828.90   715.63-0.2   450.91   197.53   149.33   781.81   688.13-0.1   433.87   189.75   144.37   744.00   658.19 0.0   419.20   181.25   138.76   693.26   630.38 0.1   399.36   174.41   134.83   650.66   605.89 0.2   385.21   169.86   130.93   617.91   579.01 0.3   371.21   164.19   124.62   565.78   552.83 0.4   355.57   158.14   119.92   530.79   530.19 0.5   342.58   152.10   116.38   496.27   508.86 0.6   324.73   145.42   111.90   466.57   485.05 0.7   319.18   140.76   108.14   429.48   465.84 0.8   303.71   136.13   103.95   405.88   446.36 0.9   290.36   131.54   100.20   381.27   422.79 1.0   278.89   126.77    95.77   358.71   405.40

Можно визуализировать чувствительность экономического капитала (EC) к параметру рыночно-кредитной корреляции. Определите EC как различие между процентилем q распределения потерь, минус ожидаемые потери.

Отрицательные значения rho приводят к более высоким требованиям к капиталу из-за WWR.

pct = 99;
ec = prctile(totalLosses,pct) - mean(totalLosses);

figure;
plot(rhoValues,ec)
title('Economic Capital (99%) versus \rho')
xlabel('Rho');
ylabel('Economic Capital');

Figure contains an axes. The axes with title Economic Capital (99%) versus \rho contains an object of type line.

Заключительные замечания

Этот пример реализует основанный на копуле подход к WWR после Garcia Cespedes et al. Методология может эффективно повторно использовать существующие симуляции воздействия и кредита, и чувствительность к параметру рыночной корреляции кредита может быть эффективно вычислена и удобно визуализировать для всех значений корреляции.

Представленный здесь подход с одним параметром копулы может быть расширен для более тщательного исследования WWR портфеля. Для примера могут применяться различные типы копул, и для сортировки сценариев воздействия могут использоваться различные критерии. Другие расширения включают симуляцию нескольких переменных системного кредитного риска (многофакторная модель) или переход с годичной на многопериодную среду для вычисления таких показателей, как корректировка кредитного значения (CVA), как в Розене и Сондерсе (см. «Ссылки»).

Ссылки

  1. Гарсия Сеспедес, Дж. С., «Эффективное моделирование неправильного риска, капитала контрагентского кредитного риска и Альфа в Базеле II», Журнал валидации модели риска, том 4/№ 1, стр. 71-98, весна 2010.

  2. Gupton, G., C. Finger, and M. Bathia, CreditMetrics™ - Technical Document, J.P. Морган, Нью-Йорк, 1997.

  3. Розен Д. и Д. Сондерс, «CVA the Wrong Way», Журнал управления рисками в финансовых учреждениях, том 5, № 3, стр. 252-272, 2012.

Локальные функции

function displayExpectedLosses(rhoValues, expectedLosses)
fprintf('               Expected Losses\n');
fprintf(' Rho    CP1      CP2      CP3     CP4       CP5\n');
fprintf('-------------------------------------------------\n');
for i = 1:numel(rhoValues)
    % Display expected loss
    fprintf('% .1f%9.2f%9.2f%9.2f%9.2f%9.2f', rhoValues(i), expectedLosses(:,i));  
end
end

См. также

| | |

Похожие темы

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