Bootstrap default probability curve from credit default swap market quotes
[ProbData,HazData] = cdsbootstrap(ZeroData,MarketData,Settle)
[ProbData,HazData] = cdsbootstrap(___,Name,Value)
the default probability curve using credit default swap (CDS) market
quotes. The market quotes can be expressed as a list of maturity dates
and corresponding CDS market spreads, or as a list of maturities and
corresponding upfronts and standard spreads for standard CDS contracts.
The estimation uses the standard model of the survival probability.
This example shows how to use
cdsbootstrap with market quotes for CDS contracts to generate
Settle = '17-Jul-2009'; % valuation date for the CDS Spread_Time = [1 2 3 5 7]'; Spread = [140 175 210 265 310]'; Market_Dates = daysadd(datenum(Settle),360*Spread_Time,1); MarketData = [Market_Dates Spread]; Zero_Time = [.5 1 2 3 4 5]'; Zero_Rate = [1.35 1.43 1.9 2.47 2.936 3.311]'/100; Zero_Dates = daysadd(datenum(Settle),360*Zero_Time,1); ZeroData = [Zero_Dates Zero_Rate]; format long [ProbData,HazData] = cdsbootstrap(ZeroData,MarketData,Settle)
ProbData = 1.0e+05 * 7.343360000000000 0.000000233427859 7.347010000000000 0.000000575839968 7.350670000000000 0.000001021397017 7.357970000000000 0.000002064539982 7.365280000000000 0.000003234110940
HazData = 1.0e+05 * 7.343360000000000 0.000000232959886 7.347010000000000 0.000000352000512 7.350670000000000 0.000000476383354 7.357970000000000 0.000000609055766 7.365280000000000 0.000000785241515
ZeroData— Zero rate data
Zero rate data, specified as a
of dates and zero rates or an
of zero rates.
ZeroData is an
ZeroData and are redundant inside this
function. In this case, specify these optional parameters when constructing
IRDataCurve object before using the
MarketData— Bond market data
Bond market data, specified as a
of dates and corresponding market spreads or
of dates, upfronts, and standard spreads of CDS contracts. The dates
must be entered as serial date numbers, upfronts must be numeric values
1, and spreads
must be in basis points.
Settle— Settlement date
Settlement date, specified as a serial date number or a date
character vector. The
Settle date must be earlier
than or equal to the dates in
comma-separated pairs of
the argument name and
Value is the corresponding value.
Name must appear inside single quotes (
' '). You can
specify several name and value pair arguments in any order as
[ProbData,HazData] = cdsbootstrap(ZeroData,MarketData,Settle,'RecoveryRate',Recovery,'ZeroCompounding',-1)
Any optional input of size
also acceptable as an array of size
or as a single value applicable to all contracts. Single values are
internally expanded to an array of size
'RecoveryRate'— Recovery rate
0.4(default) | decimal
Recovery rate, specified as a
of recovery rates, specified as a decimal from
'Period'— Premium payment frequency
4(default) | numeric with values
Premium payment frequency, specified as a
with values of
'Basis'— Day-count basis of contract
2(actual/360) (default) | integers of the set
[0...13]| vector of integers of the set
Day-count basis of the contract, specified as a positive integer
0 = actual/actual
1 = 30/360 (SIA)
2 = actual/360
3 = actual/365
4 = 30/360 (PSA)
5 = 30/360 (ISDA)
6 = 30/360 (European)
7 = actual/365 (Japanese)
8 = actual/actual (ICMA)
9 = actual/360 (ICMA)
10 = actual/365 (ICMA)
11 = 30/360E (ICMA)
12 = actual/365 (ISDA)
13 = BUS/252
For more information, see basis.
'BusDayConvention'— Business day conventions
'actual'(default) | character vector
Business day conventions, specified by a character vector. The selection for business day convention determines how non-business days are treated. Non-business days are defined as weekends plus any other date that businesses are not open (for example, statutory holidays). Values are:
'actual' — Non-business
days are effectively ignored. Cash flows that fall on non-business
days are assumed to be distributed on the actual date.
'follow' — Cash flows that
fall on a non-business day are assumed to be distributed on the following
'modifiedfollow' — Cash
flows that fall on a non-business day are assumed to be distributed
on the following business day. However if the following business day
is in a different month, the previous business day is adopted instead.
'previous' — Cash flows
that fall on a non-business day are assumed to be distributed on the
previous business day.
'modifiedprevious' — Cash
flows that fall on a non-business day are assumed to be distributed
on the previous business day. However if the previous business day
is in a different month, the following business day is adopted instead.
'PayAccruedPremium'— Flag for accrued premiums paid upon default
true(default) | integer with value
Flag for accrued premiums paid upon default, specified as a
of Boolean flags that is
true (default) if accrued
premiums are paid upon default,
'TimeStep'— Number of days as time step for numerical integration
10(days) (default) | nonnegative integer
Number of days to take as time step for the numerical integration, specified as a nonnegative integer.
'ZeroCompounding'— Compounding frequency of the zero curve
2(semiannual) (default) | integer with value of
Compounding frequency of the zero curve, specified using values:
1 — Annual compounding
2 — Semiannual compounding
3 — Compounding three times
4 — Quarterly compounding
6 — Bimonthly compounding
12 — Monthly compounding
−1 — Continuous compounding
'ZeroBasis'— Basis of the zero curve
0(actual/actual) (default) | integer with value of
Basis of the zero curve, where the choices are identical to
'ProbDates'— Dates for probability data
MarketData(default) | serial date number | date character vector
Dates for probability data, specified as a
of dates, given as serial date numbers or date character vectors.
HazData— Hazard rate values
Hazard rate values, returned as a
with dates and corresponding hazard rate values for the survival probability
model. The dates match those in
A warning is displayed when non-monotone default probabilities (that is, negative hazard rates) are found.
If the time to default is denoted by τ, the default probability curve, or function, PD(t), and its complement, the survival function Q(t), are given by:
In the standard model, the survival probability is defined in terms of a piecewise constant hazard rate h(t). For example, if h(t) =
0 ≤t ≤ t1
λ2, for t1 < t ≤ t2
λ3, for t2 <t
then the survival function is given by Q(t) =
0 ≤ t ≤ t1
, for t1 < t ≤ t2
, for t2 < t
Given n market dates t1,...,tn and
corresponding market CDS spreads S1,...,Sn,
the parameters λ1,...,λn and
evaluates PD(t) on the market dates, or an optional
user-defined set of dates.
 Beumee, J., D. Brigo, D. Schiemert, and G. Stoyle. “Charting a Course Through the CDS Big Bang.” Fitch Solutions, Quantitative Research, Global Special Report. April 7, 2009.
 Hull, J., and A. White. “Valuing Credit Default Swaps I: No Counterparty Default Risk.” Journal of Derivatives. Vol. 8, pp. 29–40.
 O'Kane, D. and S. Turnbull. “Valuation of Credit Default Swaps.” Lehman Brothers, Fixed Income Quantitative Credit Research, April 2003.