main content

calculating regulatory capital with the asrf model -凯发k8网页登录

this example shows how to calculate capital requirements and value-at-risk (var) for a credit sensitive portfolio of exposures using the asymptotic single risk factor (asrf) model. this example also shows how to compute basel capital requirements using an asrf model.

the asrf model

the asrf model defines capital as the credit value at risk (var) in excess of the expected loss (el).

capital=var-el

where the el for a given counterparty is the exposure at default (ead) multiplied by the probability of default (pd) and the loss given default (lgd).

el=ead*pd*lgd

to compute the credit var, the asrf model assumes that obligor credit quality is modeled with a latent variable (a) using a one factor model where the single common factor (z) represents systemic credit risk in the market.

ai=ρiz 1-ρiϵ

under this model, default losses for a particular scenario are calculated as:

l=eadilgd

where i is the default indicator, and has a value of 1 if ai<φa-1(pdi) (meaning the latent variable has fallen below the threshold for default), and a value of 0 otherwise. the expected value of the default indicator conditional on the common factor is given by:

e(ii|z)=φϵ(φa-1(pdi)-ρiz1-ρi)

for well diversified and perfectly granular portfolios, the expected loss conditional on a value of the common factor is:

l|z=ieadilgdiφϵ(φa-1(pdi)-ρiz1-ρi)

you can then directly compute particular percentiles of the distribution of losses using the cumulative distribution function of the common factor. this is the credit var, which we compute at the α confidence level:

creditvar(α)=ieadilgdiφϵ(φa-1(pdi)-ρiφz-1(1-α)1-ρi)

it follows that the capital for a given level of confidence, α, is:

capital(α)=ieadilgdi[φϵ(φa-1(pdi)-ρiφz-1(1-α)1-ρi)-pdi]

basic asrf

the portfolio contains 100 credit sensitive contracts and information about their exposure. this is simulated data.

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

the asset correlations (ρ) in the asrf model define the correlation between similar assets. the square root of this value, ρ, specifies the correlation between a counterparty's latent variable (a) and the systemic credit factor (z). asset correlations can be calibrated by observing correlations in the market or from historical default data. correlations can also be set using regulatory guidelines (see basel capital requirements section).

because the asrf model is a fast, analytical formula, it is convenient to perform sensitivity analysis for a counterparty by varying the exposure parameters and observing how the capital and var change.

the following plot shows the sensitivity to pd and asset correlation. the lgd and ead parameters are scaling factors in the asrf formula so the sensitivity is straightforward.

% 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 object. the axes object with title id: 1, baseline vs. stressed scenarios, ylabel usd ($) contains 3 objects of type bar. these objects represent baseline, stressed pd, stressed r.

basel capital requirements

when computing regulatory capital, the basel documents have additional model specifications on top of the basic asrf model. in particular, basel ii/iii defines specific formulas for computing the asset correlation for exposures in various asset classes as a function of the default probability.

to set up the vector of correlations according to the definitions established in basel 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))));

find the basic asrf capital using the basel-defined asset correlations. the default value for the var level is 99.9%.

asrfcapital = asrf(portfolio.pd,portfolio.lgd,r,'ead',portfolio.ead);

additionally, the basel documents specify a maturity adjustment to be added to each capital calculation. here we compute the maturity adjustment and update the capital requirements.

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

risk weighted assets (rwa) are calculated as capital * 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 

aggregate the regulatory capital by asset class.

summary = groupsummary(results,"assetclass","sum","capital");
pie(summary.sum_capital,summary.assetclass)
title('regulatory capital by asset class');

disp(summary(:,["assetclass" "sum_capital"]))
          assetclass           sum_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 

references

1. basel committe on banking supervision. "international convergence of capital measurement and capital standards." june 2006 ().

2. basel committe on banking supervision. "an explanatory note on the basel ii irb risk weight functions." july 2005 ().

3. gordy, m.b. "a risk-factor model foundation for ratings-based bank capital rules." journal of financial intermediation. vol. 12, pp. 199-232, 2003.

see also

网站地图