merton.portfolio.vasicek_factor¶
Vasicek (1987, 2002) single-factor portfolio model.
Used by Basel II/III IRB regulations to set capital requirements without running a Monte Carlo. Each obligor’s default indicator is generated from a latent variable
with M, ε_i ~ N(0, 1) independent. Obligor i defaults when
Y_i < \Phi^{-1}(\mathrm{PD}_i).
In the homogeneous limit (a portfolio of infinitely many infinitesimally
small loans with identical PD, LGD, ρ), the loss fraction has
the closed-form CDF
and the α-quantile (Basel IRB confidence level: α = 0.999) is
References
Vasicek, O. (2002). Loan Portfolio Value. Risk 15 (12), 160-162.
Basel Committee on Banking Supervision (2005). An Explanatory Note on the Basel II IRB Risk Weight Functions.
Classes¶
Holder for a Vasicek single-factor parametrisation. |
Functions¶
|
|
|
|
|
Basel III IRB unexpected-loss capital requirement. |
|
Basel III asset correlation as a function of PD and asset class. |
Module Contents¶
- merton.portfolio.vasicek_factor.vasicek_loss_cdf(x: merton._typing.ArrayLike, pd: merton._typing.ArrayLike, rho: merton._typing.ArrayLike) merton._typing.FloatArray[source]¶
F_L(x) = Φ((√(1-ρ) Φ⁻¹(x) - Φ⁻¹(PD)) / √ρ).
- merton.portfolio.vasicek_factor.vasicek_var(pd: merton._typing.ArrayLike, rho: merton._typing.ArrayLike, alpha: float = 0.999) merton._typing.FloatArray[source]¶
α-quantile of the asymptotic loss distribution.
- merton.portfolio.vasicek_factor.basel_irb_capital(pd: merton._typing.ArrayLike, lgd: merton._typing.ArrayLike = 0.45, rho: merton._typing.ArrayLike | None = None, maturity: float = 1.0, *, alpha: float = 0.999, apply_maturity_adjustment: bool = True, asset_class: str = 'corporate') merton._typing.FloatArray[source]¶
Basel III IRB unexpected-loss capital requirement.
For corporate exposures, the BCBS prescribes
\[\rho(\mathrm{PD}) = 0.12\,\frac{1 - e^{-50\,\mathrm{PD}}}{1 - e^{-50}} + 0.24\,\left(1 - \frac{1 - e^{-50\,\mathrm{PD}}}{1 - e^{-50}}\right),\]with a maturity adjustment
\[b(\mathrm{PD}) = (0.11852 - 0.05478\,\ln(\mathrm{PD}))^2,\quad \mathrm{MA}(M) = \frac{1 + (M - 2.5)\,b(\mathrm{PD})}{1 - 1.5\,b(\mathrm{PD})}.\]The capital requirement per unit of exposure is
\[K = \mathrm{LGD}\,\left(L_\alpha(\mathrm{PD}, \rho) - \mathrm{PD}\right)\,\mathrm{MA}(M).\]
- merton.portfolio.vasicek_factor.basel_irb_correlation(pd: merton._typing.ArrayLike, *, asset_class: str = 'corporate') merton._typing.FloatArray[source]¶
Basel III asset correlation as a function of PD and asset class.
- class merton.portfolio.vasicek_factor.VasicekFactor[source]¶
Holder for a Vasicek single-factor parametrisation.
Use either an explicit
rhoor a Basel-IRB-derived one (rho=Nonetriggersbasel_irb_correlation()).