Implied Default Probability
Calculates the default probabilities that credit spreads imply. Investors in a corporate bond are compensated for the loss they expect from a default, so with a constant default intensity (hazard rate) λ and a share R recovered on default the spread s is about λ (1 - R), the “credit triangle”:
λ = s / (1 - R), P(default within t years) = 1 - e^(-λt)
By default the spreads are the latest ICE BofA option-adjusted spreads of the US corporate bond indices per rating (AAA to CCC), which need a FRED API key. Spreads also pay for liquidity and for the uncertainty of the losses, so these risk-neutral probabilities are higher than the default rates that are observed historically (see get_default_rates); the gap is the credit risk premium.
For more information, see the following book:
- Hull, J.C. (2022). “Options, Futures, and Other Derivatives.” Pearson, 11th edition, chapter 24.
Also known as: implied default probability, hazard rate, credit triangle, risk-neutral default probability.
Implied Default Probability in Python or via the MCP
Install the Finance Toolkit with:
pip install financetoolkit -U
Then call get_implied_default_probability as shown below.
from financetoolkit import FixedIncome
fixedincome = FixedIncome()
fixedincome.get_implied_default_probability(
spreads={'BBB': 0.011, 'BB': 0.021, 'B': 0.031, 'CCC': 0.087}
)
Or, after setting up the Finance Toolkit MCP, ask:
What default probabilities over 1, 3, 5 and 10 years do credit spreads of 1.1% for BBB, 2.1% for BB, 3.1% for B and 8.7% for CCC imply, at a 40% recovery rate?
Which returns:
| Name | Spread | Hazard Rate | 1Y Default Probability | 3Y Default Probability | 5Y Default Probability | 10Y Default Probability |
|---|---|---|---|---|---|---|
| BBB | 0.011 | 0.0183 | 0.0182 | 0.0535 | 0.0876 | 0.1675 |
| BB | 0.021 | 0.035 | 0.0344 | 0.0997 | 0.1605 | 0.2953 |
| B | 0.031 | 0.0517 | 0.0504 | 0.1436 | 0.2277 | 0.4035 |
| CCC | 0.087 | 0.145 | 0.135 | 0.3527 | 0.5157 | 0.7654 |
Parameters
get_implied_default_probability accepts the following parameters.
| Parameter | Type | Description | Example |
|---|---|---|---|
spreads | str | float | dict | pd.Series | None | The credit spread as a decimal (0.01 for 100 basis points), or several by name as a dictionary, Series or string such as “BBB:0.011, B:0.031”. Defaults to None, which uses the latest ICE BofA option-adjusted spread per rating. | None, which uses the latest ICE BofA option-adjusted spread per rating |
recovery_rate | float | The share of the face value recovered on default. Defaults to 0.4. | 0.4 |
horizons | list[float] | str | None | The horizons in years, as a list or a comma-separated string. Defaults to None, which uses 1, 3, 5 and 10 years. | None, which uses 1, 3, 5 and 10 years |
rounding | int | None | The number of decimals to round the results to. Defaults to None. | 2 |