merton.extensions.creditgrades¶
CreditGrades (Finger, Finkelstein, Pan, Lardy, Ta & Tierney, 2002).
The CreditGrades model is the RiskMetrics open-standard structural credit model. It generalises Merton by:
Stochastic default barrier — the recovery ratio
Lis log-normally distributed (log L = log L_bar − λ²/2 + λZ,Z ~ N(0, 1)), so the barrier itself is uncertain. This widens short-horizon credit spreads relative to Merton.Reference firm value —
V_0 = S_0 + L_bar · Dper share, whereSis equity,Dis debt per share, andL_baris the mean recovery ratio.Asset volatility from equity volatility —
σ = σ_E · S/(S + L_bar·D), the standard leverage-adjusted formula.
Closed-form survival probability (the practical approximation used in the tech doc):
with
The implied flat hazard rate is h(t) = -\log P(t) / t; the CDS spread
is h(t) · LGD.
References
Finger, C. C., Finkelstein, V., Pan, G., Lardy, J.-P., Ta, T., Tierney, J. (2002). CreditGrades Technical Document. RiskMetrics Group.
Attributes¶
Classes¶
CreditGrades-style structural credit model. |
Functions¶
|
Survival probability |
|
|
|
CreditGrades flat-hazard CDS spread. |
Module Contents¶
- merton.extensions.creditgrades.creditgrades_survival(equity: merton._typing.ArrayLike, equity_vol: merton._typing.ArrayLike, debt_per_share: merton._typing.ArrayLike, T: merton._typing.ArrayLike, *, lbar: float = DEFAULT_LBAR, lam: float = DEFAULT_LAMBDA) merton._typing.FloatArray[source]¶
Survival probability
P(t)under CreditGrades.- Parameters:
equity – Equity price
S, annualised equity volatilityσ_E, and debt-per-shareD. All in the same currency units.equity_vol – Equity price
S, annualised equity volatilityσ_E, and debt-per-shareD. All in the same currency units.debt_per_share – Equity price
S, annualised equity volatilityσ_E, and debt-per-shareD. All in the same currency units.T – Horizon (years).
lbar – Mean recovery ratio (default 0.5).
lam – Standard deviation of
log L(default 0.3).
- merton.extensions.creditgrades.creditgrades_pd(equity: merton._typing.ArrayLike, equity_vol: merton._typing.ArrayLike, debt_per_share: merton._typing.ArrayLike, T: merton._typing.ArrayLike, *, lbar: float = DEFAULT_LBAR, lam: float = DEFAULT_LAMBDA) merton._typing.FloatArray[source]¶
1 - creditgrades_survival(...)— risk-neutral PD over[0, T].
- merton.extensions.creditgrades.creditgrades_spread(equity: merton._typing.ArrayLike, equity_vol: merton._typing.ArrayLike, debt_per_share: merton._typing.ArrayLike, T: merton._typing.ArrayLike, *, lgd: merton._typing.ArrayLike = 0.6, lbar: float = DEFAULT_LBAR, lam: float = DEFAULT_LAMBDA, in_bps: bool = True) merton._typing.FloatArray[source]¶
CreditGrades flat-hazard CDS spread.
Returns
-log(P(t))/t · LGDin basis points by default.
- class merton.extensions.creditgrades.CreditGradesModel(*, lbar: float = DEFAULT_LBAR, lam: float = DEFAULT_LAMBDA, debt_per_share: float | None = None)[source]¶
Bases:
merton.extensions.base.StructuralModelCreditGrades-style structural credit model.
The model takes equity per share, equity volatility, and debt per share (all in the same currency units). For aggregate-value firms, convert to per-share by dividing by
shares_outstanding.- fit(firm: merton.core.firm.Firm) merton.extensions.base.StructuralResult[source]¶
Return a
StructuralResultforfirm.