CreditGrades¶
The CreditGrades model (Finger, Finkelstein, Pan, Lardy, Ta & Tierney, 2002) is the RiskMetrics open-standard structural credit model. It generalises Merton in three ways:
Random default barrier. The recovery ratio
Lis log-normally distributed:\[\log L = \log \bar{L} - \tfrac{1}{2}\lambda^2 + \lambda Z,\quad Z \sim N(0, 1).\]The barrier
L \cdot Dis therefore uncertain, which widens short-horizon credit spreads relative to Merton.Reference firm value. Per-share asset value is
\[V_0 = S_0 + \bar{L}\,D,\]with
Sthe equity price,Dthe debt per share, and\bar{L}the long-run recovery mean (default\bar{L} = 0.5).Leverage-adjusted asset vol.
\sigma = \sigma_E \cdot S / V_0.
Survival probability¶
The practical approximation used in the technical document:
with
Implied CDS spread¶
Given LGD, the flat-hazard CDS spread is
Example¶
from merton import Firm
from merton.extensions import CreditGradesModel, creditgrades_survival, creditgrades_spread
# Direct functional usage
surv = creditgrades_survival(equity=50, equity_vol=0.40, debt_per_share=60, T=1.0)
spread_bps = creditgrades_spread(50, 0.40, 60, 1.0, lgd=0.6)
# Model usage
firm = Firm(equity=50, debt_short=20, debt_long=40, equity_vol=0.40, horizon=1.0)
result = CreditGradesModel(debt_per_share=60).fit(firm)
print(result.summary())
print("Implied CDS spread:", result.diagnostics["implied_cds_spread_bps"], "bps")
When to prefer CreditGrades over Merton¶
Banking, financials, and highly-leveraged firms. The random barrier widens short-end spreads, which fits observed term structures better than vanilla Merton.
Workflows already keyed off CDS markets. CreditGrades was designed to be calibrated from market spreads back to an implied PD; pairing it with
creditgrades_spreadgives a natural CDS pricing engine.
For pure default forecasting on industrial corporates the Merton or Vassalou-Xing calibrations remain competitive.