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.

ParameterTypeDescriptionExample
spreadsstr | float | dict | pd.Series | NoneThe 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_ratefloatThe share of the face value recovered on default. Defaults to 0.4.0.4
horizonslist[float] | str | NoneThe 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
roundingint | NoneThe number of decimals to round the results to. Defaults to None.2
Share