After some googling, I have made some progress but not enough to come to a conclusion, so here we go:

Given that the CDS spread of a counterparty is 100bp (flat across time) and that the risk free interest rate is 0% (also flat), what is the annual implied probability of default, assuming that as the counterparty defaults, we have paid half of our annual spread? The maturity of the contract is 5 years and the expected recovery rate is 40%.

My try:

The present value of the CDS contract for us (the protection buyer) is:

$P(d)*Protection\ leg + (1-P(d))*Premium\ leg=0$,


$Protection\ leg= (1-R)*Notional-0.5*Spread*Notional$ and

$Premium\ leg= Spread*Notional$.

From this I solved that


In this case, I'm assuming this is the hazard rate $\lambda$, which is constant since the CDS term structure is flat. Now, following Hull, we can use the formula


to obtain the (approximate) implied probability of default happening during the time period $(0,t)$.

Now, what if I want to obtain the probability of default happening during, for example, $(1,2)$ or $(2,3)$? How do I properly condition the probabilities?

Thank you!

  • $\begingroup$ There is no recovery assumption here. Are you assuming 0 recovery? Usually CDS quotes are for contracts where the protection buyer owes a defaulted debt to the protection seller. What will this defaulted sebr be worth after the default? $\endgroup$ Jan 31, 2020 at 20:22
  • $\begingroup$ The recovery rate is 40%, forgot to add it, sorry. $\endgroup$ Jan 31, 2020 at 20:40
  • $\begingroup$ I would like to give it a try, but what does "assuming that as the counterparty defaults, we have paid half of our annual spread" mean? Does it mean: if the firm defaults in year 3 the spread paid would be for 3.5 years? $\endgroup$
    – Sandu Ursu
    Feb 2, 2020 at 12:33

1 Answer 1


There is a bit of stuff here so I will incrementally add details if there are any questions. The analysis is pretty much done as in Appendix K from Hull, J. (2012). Risk management and financial institutions,+ Web Site (Vol. 733). John Wiley & Sons.

Python imports:

import numpy as np
import pandas as pd
from scipy.optimize import brentq

TABLE function to construct a table with with all the information we need:

def TABLE(PD, s=0.01, r=0):
    table = pd.DataFrame({'Time': np.arange(1,6)}).set_index('Time')
    table['SurvivingProb'] = np.exp(-PD*table.index)
    table['DefaultProb'] = -np.diff(table['SurvivingProb'], prepend=1)
    table['DF1'] = np.exp(-r*table.index)
    table['PV/ExpPMT'] = table['SurvivingProb']*table['DF1'] # * s
    table['DF2'] = np.exp(-r*(table.index-0.5))
    table['PV/ExpPayoff'] = 0.6*table['DefaultProb']*table['DF2'] # * s
    table['PV/AccrualPMT'] = 0.5*table['DefaultProb']*table['DF2'] # * s
    return table

For instance if we assume a probability of default (hazard rate) of 0.02 we would get the following table:

enter image description here

To compute the precise probability of default implied by the CDS spread we will use the following function:

def defaultProb(PD, s=0.01, r=0):

    table = TABLE(PD, s, r)

    return s*(np.sum(table['PV/ExpPMT'] + table['PV/AccrualPMT'])) \
                - np.sum(table['PV/ExpPayoff'])

Next, use the Brent method to solve for the probability of default:

PD = brentq(defaultProb, 0, 1)

The result is 0.016667.

If we now want to see the updated TABLE:


enter image description here

From here we can directly read the unconditional probabilities of default (DefaultProb column), i.e. the probability of default during a specific year as seen at time zero.

To compute the conditional probability of default just divide to the previous entry in the first column. For instance, if you want the probability of default in the 3rd year conditional on no earlier default:



Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.