Неправильным путем риск со связками

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

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

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

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

Этот пример демонстрирует реализацию неправильного пути методология риска, описанная в Гарсии Сеспеде и др. (см. Ссылки).

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

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

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

  • RateSpec: Спецификация уровня, когда договорные стоимости были вычислены

  • Settle: Уладить дата, когда договорные стоимости были вычислены

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

  • swaps: Struct, содержащий параметры подкачки

  • values: 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, включая все сценарии, является ЭПЕ, который может также быть получен из 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 и др., 1997). Это - эффективный способ симулировать коррелируемые значения по умолчанию.

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

Yi=βiZ+1-βi2ϵi

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

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

Φ(Yi)<PDi

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

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

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

Используйте распространения 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

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

Бета параметра чувствительности установлена в 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);

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

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

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

Ye=ρZ+1-ρ2ϵe

где Z является системным фактором, вычисленным в симуляции кредита, epsilon_e является независимой стандартной нормальной переменной, и ро интерпретирована как параметр корреляции кредита рынка. Конструкцией Вы - стандартная нормальная переменная, коррелируемая с Z с ро параметра корреляции.

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

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

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

j-1SΦ(Ye)<jS

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

Вы коррелируется к симулированным воздействиям, и Z коррелируется к симулированным значениям по умолчанию. Ро корреляции между Вами и 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

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

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)])

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

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

Для каждого значения ро вычислите общие суммы убытков на сценарий кредита, а также ожидаемые потери на контрагента. Этот пример принимает 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

Можно визуализировать чувствительность Economic Capital (EC) к параметру корреляции кредита рынка. Задайте EC как различие между процентилью q распределения потерь минус ожидаемая потеря.

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

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

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

Итоговые комментарии

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

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

Ссылки

  1. Гарсия Сеспед, J. C. "Эффективное Моделирование Неправильного Пути Риск, Counterparty Credit Risk Capital и Альфа в Базеле II", Журнал Проверки допустимости модели Риска, Объем 4 / Номер 1, стр 71-98, Spring 2010.

  2. Gupton, G. C. Палец, и М. Бэтия, CreditMetrics™ - технический документ, Дж.П. Морган, Нью-Йорк, 1997.

  3. Розен, D. и Д. Сондерс, "CVA Неправильный Путь", Журнал управления рисками в Финансовых учреждениях, Издании 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