The asymptotic single risk factor function, vectorized over exposures:
PD floors by asset class, LGD input floors for own estimates
(approach = "airb"; the unsecured column of params$lgd_floor unless
collateral names another column, blended with secured_share), the
asset correlation of the class (with the firm-size adjustment of
corporate_sme from sales and the multiplier for large or unregulated
financial institutions when fi is TRUE), the maturity adjustment for
wholesale classes only (m clipped to params$m_range, params$m_default
when missing or under the foundation approach) and
Usage
scr_irb_rw(
pd,
lgd,
ead = 1,
m = NULL,
asset_class,
sales = NULL,
fi = FALSE,
defaulted = NULL,
elbe = NULL,
params = scr_irb_params("bcb"),
approach = c("airb", "firb"),
apply_floors = TRUE,
collateral = NULL,
secured_share = NULL,
claim = NULL
)Arguments
- pd, lgd, ead
Numeric vectors: probability of default, loss given default (decimals) and exposure at default (currency).
- m
Effective maturity in years, non-negative (wholesale classes only, ignored and reported as
NAon retail rows;NULLorNAusesparams$m_default).- asset_class
One of
"corporate","corporate_sme","bank","sovereign","hvcre","retail_mortgage","qrre_revolver","qrre_transactor","retail_other"; a scalar or a vector.- sales
Annual sales of
corporate_smeobligors, in the unit ofparams$correlation$sme, clipped to its bounds. A missing value takes the upper bound, i.e. no firm-size adjustment: the adjustment requires reported sales (Basel Framework CRE31.9; CRR Article 153(4)).- fi
Logical: regulated financial institution above the size threshold, or unregulated one (correlation multiplier).
- defaulted
Optional 0/1 or logical vector.
- elbe
Optional vector with the best estimate of expected loss of the defaulted rows (decimal of
ead); ignored on performing rows.- params
An
scr_irb_params()object.- approach
"airb"(own LGD, floored) or"firb"(supervisory LGD supplied by the caller, no LGD floor, maturity fixed).- apply_floors
TRUE(all input floors),FALSE(none) or a subset ofc("pd", "lgd", "m").- collateral
Optional column of
params$lgd_floornaming the collateral type of each exposure ("financial","receivables","real_estate","other_physical");NULLmeans unsecured.Optional secured share in
[0, 1]blending the unsecured and the collateral floors.- claim
Under
"firb", an optional claim type per exposure naming a row ofparams$lgd_firb(for example"senior_unsecured"or"subordinated"); the supervisory LGD of that row replaceslgd.NULLkeeps the caller'slgd. The row names differ by preset ("senior_unsecured"under"bcb","senior_unsecured_corporate"and"senior_unsecured_fi"otherwise); seeparams$lgd_firb.
Value
A data.table with one row per exposure: pd_used, lgd_used
(after floors; PD one on defaulted rows), m (after clipping;
params$m_default under "firb"; NA on retail rows), r,
b, ma, k, rw, rwa; attribute floors_hit counts the rows
where each floor was binding.
Details
$$K = \left[LGD \cdot N\left(\frac{G(PD) + \sqrt{R}\,G(0.999)}{\sqrt{1-R}}\right) - PD \cdot LGD\right] \cdot MA \cdot s$$
with s = params$scaling_factor and, for wholesale classes,
\(MA = (1 + (M - 2.5)\,b) / (1 - 1.5\,b)\),
\(b = (0.11852 - 0.05478 \ln PD)^2\) (MA = 1 for retail). Below
PD = 1e-5, reachable only without a PD floor (sovereigns), b is
held at its value at 1e-5: the regulatory b makes 1 - 1.5 b vanish
near PD = 2.9e-6, where the adjustment would explode and change sign.
Defaulted rows carry K = max(0, LGD - ELBE) under "airb" and zero under "firb"; a missing elbe is taken
equal to lgd. RW = 12.5 K and RWA = RW * ead.
References
Basel Committee on Banking Supervision (2023). The Basel Framework, CRE31 (IRB approach: risk-weight functions) and CRE32 (risk components). BCBS (2005). An explanatory note on the Basel II IRB risk weight functions.
See also
Other irb-capital:
scr_capital(),
scr_ecl(),
scr_el(),
scr_pd_stress(),
scr_sa_rw()
Examples
scr_irb_rw(0.01, 0.45, m = 2.5, asset_class = "corporate")
#> pd_used lgd_used m r b ma k rw
#> <num> <num> <num> <num> <num> <num> <num> <num>
#> 1: 0.01 0.45 2.5 0.1927837 0.1374861 1.25981 0.07385344 0.923168
#> rwa
#> <num>
#> 1: 0.923168
scr_irb_rw(c(0.01, 0.02), c(0.20, 0.80), asset_class = c("retail_mortgage", "qrre_revolver"))
#> pd_used lgd_used m r b ma k rw rwa
#> <num> <num> <num> <num> <num> <num> <num> <num> <num>
#> 1: 0.01 0.2 NA 0.15 NA 1 0.02005295 0.2506619 0.2506619
#> 2: 0.02 0.8 NA 0.04 NA 1 0.04113480 0.5141850 0.5141850
r <- scr_irb_rw(1e-4, 0.5, asset_class = "retail_other")
attr(r, "floors_hit")
#> floor n
#> <char> <int>
#> 1: pd_floor 1
#> 2: lgd_floor 0
#> 3: m_floor 0
#> 4: m_cap 0
# foundation approach: the supervisory LGD of the claim type
scr_irb_rw(0.01, lgd = 0, m = 2.5, asset_class = "corporate", approach = "firb",
claim = "senior_unsecured")
#> pd_used lgd_used m r b ma k rw
#> <num> <num> <num> <num> <num> <num> <num> <num>
#> 1: 0.01 0.75 2.5 0.1927837 0.1374861 1.25981 0.1230891 1.538613
#> rwa
#> <num>
#> 1: 1.538613
