Рассчитывание регулятивного капитала с моделью 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

где я - индикатор по умолчанию и имею значение 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 00:00:00
    2     1.3349e+05    0.0017519     0.5      "Bank"       NaN     05-Jul-2021 00:00:00
    3     3.1723e+05      0.01694     0.4      "Bank"       NaN     07-Oct-2018 00:00:00
    4     2.8719e+05     0.013624    0.35      "Bank"       NaN     27-Apr-2022 00:00:00
    5     2.9965e+05     0.013191    0.45      "Bank"       NaN     07-Dec-2022 00:00:00

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

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

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

% Counterparty ID
id = 1;

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

% Compute 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 ($)');

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

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

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

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

% Compute 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 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 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 : $2310819.05

Риск взвесил активы (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.127e+05
Для просмотра документации необходимо авторизоваться на сайте