Вычисление регуляторного капитала с помощью модели ASRF

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

Модель ASRF

Модель ASRF определяет капитал как кредитное значение риска (VaR), превышающую ожидаемый убыток (EL).

capital=VaR-EL

где EL для данного контрагента является риском по умолчанию (EAD), умноженным на вероятность дефолта (PD) и убытка по умолчанию (LGD).

EL=EAD*PD*LGD

Чтобы вычислить кредитный VaR, модель ASRF принимает, что качество кредита должника моделируется скрытой переменной (A) с помощью модели одного фактора, где единый общий фактор (Z) представляет системный кредитный риск на рынке.

Ai=ρiZ+1-ρiϵ

В соответствии с этой моделью потери по умолчанию для конкретного сценария рассчитываются как:

L=EADILGD

где I является индикатором по умолчанию и имеет значение 1, если Ai<ΦA-1(PDi) (что означает, что скрытая переменная упала ниже порога по умолчанию) и значение 0 в противном случае. Ожидаемое значение индикатора по умолчанию, обусловленное общим фактором, определяется:

E(Ii|Z)=Φϵ(ΦA-1(PDi)-ρiZ1-ρi)

Для хорошо диверсифицированных и прекрасно гранулированных портфелей ожидаемая потеря, обусловленная значением общего фактора, составляет:

L|Z=iEADiLGDiΦϵ(ΦA-1(PDi)-ρiZ1-ρi)

Затем можно непосредственно вычислить конкретные процентили распределения потерь с помощью совокупной функции распределения общего фактора. Это кредитный VaR, который мы вычисляем в α доверительный уровень:

creditVaR(α)=iEADiLGDiΦϵ(ΦA-1(PDi)-ρiΦZ-1(1-α)1-ρi)

Из этого следует, что капитал для заданного уровня доверия, αявляется:

capital(α)=iEADiLGDi[Φϵ(ΦA-1(PDi)-ρiΦZ-1(1-α)1-ρi)-PDi]

Базовый ASRF

Портфель содержит 100 кредитно-чувствительных договоров и информацию об их подверженности. Это моделируемые данные.

load asrfPortfolio.mat
disp(portfolio(1:5,:))
    ID       EAD           PD        LGD     AssetClass    Sales     Maturity  
    __    __________    _________    ____    __________    _____    ___________

    1      2.945e+05     0.013644     0.5      "Bank"       NaN     02-Jun-2023
    2     1.3349e+05    0.0017519     0.5      "Bank"       NaN     05-Jul-2021
    3     3.1723e+05      0.01694     0.4      "Bank"       NaN     07-Oct-2018
    4     2.8719e+05     0.013624    0.35      "Bank"       NaN     27-Apr-2022
    5     2.9965e+05     0.013191    0.45      "Bank"       NaN     07-Dec-2022

Корреляции основных средств (ρ) в модели ASRF задайте корреляцию между аналогичными активами. Квадратный корень этого значения, ρ, задает корреляцию между скрытой переменной контрагента (A) и системным кредитным фактором (Z). Корреляции активов могут быть калиброваны путем наблюдения корреляций на рынке или из исторических данных по умолчанию. Корреляции также могут быть установлены с помощью нормативных руководств (см. Раздел «Требования к капиталу Базеля»).

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

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

% Counterparty ID
id = 1;

% Set the default asset correlation to 0.2 as the baseline.
R = 0.2;

% Compute the baseline capital and VaR.
[capital0, var0] = asrf(portfolio.PD(id),portfolio.LGD(id),R,'EAD',portfolio.EAD(id));
% Stressed PD by 50%
[capital1, var1] = asrf(portfolio.PD(id) * 1.5,portfolio.LGD(id),R,'EAD',portfolio.EAD(id));
% Stressed Correlation by 50%
[capital2, var2] = asrf(portfolio.PD(id),portfolio.LGD(id),R * 1.5,'EAD',portfolio.EAD(id));

c = categorical({'ASRF Capital','VaR'});
bar(c,[capital0 capital1 capital2; var0 var1 var2]);
legend({'baseline','stressed PD','stressed R'},'Location','northwest')
title(sprintf('ID: %d, Baseline vs. Stressed Scenarios',id));
ylabel('USD ($)');

Figure contains an axes. The axes with title ID: 1, Baseline vs. Stressed Scenarios contains 3 objects of type bar. These objects represent baseline, stressed PD, stressed R.

Базельские требования к капиталу

При расчете нормативного капитала базельские документы имеют дополнительные спецификации модели поверх базовой модели ASRF. В частности, в Базеле II/III определяются конкретные формулы для вычисления корреляции активов для рисков в различных классах активов как функции вероятности по умолчанию.

Для настройки вектора корреляций согласно определениям, установленным в Базеле II/III:

R = zeros(height(portfolio),1);

% Compute the correlations for corporate, sovereign, and bank exposures.
idx = portfolio.AssetClass == "Corporate" |...
    portfolio.AssetClass == "Sovereign" |...
    portfolio.AssetClass == "Bank";

R(idx) = 0.12 * (1-exp(-50*portfolio.PD(idx))) / (1-exp(-50)) +...
    0.24 * (1 - (1-exp(-50*portfolio.PD(idx))) / (1-exp(-50)));

% Compute the correlations for small and medium entities.
idx = portfolio.AssetClass == "Small Entity" |...
    portfolio.AssetClass == "Medium Entity";

R(idx) = 0.12 * (1-exp(-50*portfolio.PD(idx))) / (1-exp(-50)) +...
    0.24 * (1 - (1-exp(-50*portfolio.PD(idx))) / (1-exp(-50))) -...
    0.04 * (1 - (portfolio.Sales(idx)/1e6 - 5) / 45);

% Compute the correlations for unregulated financial institutions.
idx = portfolio.AssetClass == "Unregulated Financial";

R(idx) = 1.25 * (0.12 * (1-exp(-50*portfolio.PD(idx))) / (1-exp(-50)) +...
    0.24 * (1 - (1-exp(-50*portfolio.PD(idx))) / (1-exp(-50))));

Найдите основной капитал ASRF с помощью базельских корреляций активов. Значение по умолчанию для уровня VaR составляет 99,9%.

asrfCapital = asrf(portfolio.PD,portfolio.LGD,R,'EAD',portfolio.EAD);

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

maturityYears = years(portfolio.Maturity - settle);

b = (0.11852 - 0.05478 * log(portfolio.PD)).^2;
maturityAdj = (1 + (maturityYears - 2.5) .* b)  ./ (1 - 1.5 .* b);

regulatoryCapital = asrfCapital .* maturityAdj;

fprintf('Portfolio Regulatory Capital : $%.2f\n',sum(regulatoryCapital));
Portfolio Regulatory Capital : $2371316.24

Взвешенные по риску активы (RWA) рассчитываются как капитал * 12.5.

RWA = regulatoryCapital * 12.5;

results = table(portfolio.ID,portfolio.AssetClass,RWA,regulatoryCapital,'VariableNames',...
    {'ID','AssetClass','RWA','Capital'});

% Results table
disp(results(1:5,:))
    ID    AssetClass       RWA        Capital
    __    __________    __________    _______

    1       "Bank"      4.7766e+05     38213 
    2       "Bank"           79985    6398.8 
    3       "Bank"      2.6313e+05     21050 
    4       "Bank"      2.9449e+05     23560 
    5       "Bank"      4.1544e+05     33235 

Агрегируйте регуляторный капитал по классам активов.

assetClasses = unique(results.AssetClass);
assetClassCapital = zeros(numel(assetClasses),1);
for i = 1:numel(assetClasses)
    assetClassCapital(i) = sum(results.Capital(results.AssetClass == assetClasses(i)));
end
pie(assetClassCapital,cellstr(assetClasses))
title('Regulatory Capital by Asset Class');

capitalTable = table(assetClasses, assetClassCapital,'VariableNames',{'AssetClass','Capital'});
disp(capitalTable);
          AssetClass            Capital  
    _______________________    __________

    "Bank"                     3.6894e+05
    "Corporate"                3.5811e+05
    "Medium Entity"            3.1466e+05
    "Small Entity"              1.693e+05
    "Sovereign"                6.8711e+05
    "Unregulated Financial"     4.732e+05

См. также