cdsprice

Determine price for credit default swap

Syntax

[Price, AccPrem, PaymentDates, PaymentTimes,
PaymentCF] = cdsprice(ZeroData, ProbData, Settle,
Maturity, ContractSpread)
[Price, AccPrem, PaymentDates, PaymentTimes,
PaymentCF] = cdsprice(ZeroData, ProbData,
Settle, Maturity, ContractSpread,
Name,Value)

Description

[Price, AccPrem, PaymentDates, PaymentTimes,
PaymentCF] = cdsprice(ZeroData, ProbData, Settle,
Maturity, ContractSpread)
computes the price, or the mark-to-market value for CDS instruments.

[Price, AccPrem, PaymentDates, PaymentTimes,
PaymentCF] = cdsprice(ZeroData, ProbData,
Settle, Maturity, ContractSpread,
Name,Value)
computes the price, or the mark-to-market value for CDS instruments with additional options specified by one or more Name,Value pair arguments.

Input Arguments

ZeroData

M-by-2 vector of dates and zero rates or an IRDataCurve object of zero rates.

ProbData

P-by-2 array of dates and default probabilities.

Settle

Settlement date is a serial date number or date string. This must be earlier than or equal to the Maturity dates.

Maturity

N-by-1 vector of serial date numbers or date strings containing the maturity dates.

ContractSpread

N-by-1 vector of contract spreads, expressed in basis points.

Name-Value Pair Arguments

Specify optional comma-separated pairs of Name,Value arguments. Name is 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 Name1,Value1,...,NameN,ValueN.

    Note:   Any optional input of size N-by-1 is also acceptable as an array of size 1-by-N, or as a single value applicable to all contracts. Single values are internally expanded to an array of size N-by-1.

'Basis'

N-by-1 vector of day-count basis of the CDS:

  • 0 = actual/actual

  • 1 = 30/360 (SIA)

  • 2 = actual/360

  • 3 = actual/365

  • 4 = 30/360 (BMA)

  • 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/actual (ISDA)

  • 13 = BUS/252

For more information, see basis.

Default: 2 (actual/360)

'BusDayConvention'

String or N-by-1 cell array of strings of business day conventions. Values are:

  • actual

  • follow

  • modifiedfollow

  • previous

  • modifiedprevious

Default: actual

'Notional'

N-by-1 vector of contract notional values. Use positive values for long positions and negative values for short positions.

Default: 10MM

'PayAccruedPremium'

N-by-1 vector of Boolean flags. True, if accrued premiums are paid upon default, False otherwise.

Default: True

'Period'

N-by-1 vector of number of premiums per year of the CDS. Allowed values are 1, 2, 3, 4, 6, and 12.

Default: 4

'RecoveryRate'

N-by-1 vector of recovery rates, expressed as a decimal from 0 to 1.

Default: 0.4

'TimeStep'

Positive integer indicating the number of days to take as time step for the numerical integration.

Default: 10 (days)

'ZeroBasis'

Basis of the zero curve, where the choices are identical to Basis.

Default: 0 (actual/actual)

'ZeroCompounding'

Compounding frequency of the zero curve. Allowed values are:

  • 1 — Annual compounding

  • 2 — Semiannual compounding

  • 3 — Compounding three times per year

  • 4 — Quarterly compounding

  • 6 — Bimonthly compounding

  • 12 — Monthly compounding

  • -1 — Continuous compounding

    Note:   When ZeroData is an IRDataCurve object, the arguments ZeroCompounding and ZeroBasis are implicit in ZeroData and are redundant inside this function. In that case, specify these optional arguments when constructing the IRDataCurve object before calling this function.

Default: 2 (Semiannual compounding)

Output Arguments

Price

N-by-1 vector of CDS clean prices.

AccPrem

N-by-1 vector of accrued premiums.

PaymentDates

N-by-numCF matrix of payment dates.

PaymentTimes

N-by-numCF matrix of accrual fractions.

PaymentCF

N-by-numCF matrix of payments.

Examples

expand all

Determine the Price For a Credit Default Swap

This example shows how to use cdsprice to compute the clean price for a CDS contract using the following data.

Settle = '17-Jul-2009'; % valuation date for the CDS
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(Settle,360*Zero_Time,1);
ZeroData = [Zero_Dates Zero_Rate];

ProbData = [daysadd(datenum(Settle),360,1), 0.0247];
Maturity = '20-Sep-2010';
ContractSpread = 135;

[Price,AccPrem] = cdsprice(ZeroData,ProbData,Settle,Maturity,ContractSpread)
Price =

   1.5461e+04


AccPrem =

       10500

More About

expand all

CDS Price

The price or mark-to-market (MtM) value of an existing CDS contract is computed using the following formula:

CDS price = Notional * (Current Spread - Contract Spread) * RPV01

Current Spread is the current breakeven spread for a similar contract, according to current market conditions. RPV01 is the 'risky present value of a basis point,' the present value of the premium payments, taking into consideration the default probability. This formula assumes a long position, and the right side is multiplied by -1 for short positions.

Algorithms

The premium leg is computed as the product of a spread S and the risky present value of a basis point (RPV01). The RPV01 is given by:

RPV01=j=1NZ(tj)Δ(tj1,tj,B)Q(tj)

when no accrued premiums are paid upon default, and it can be approximated by

RPV0112j=1NZ(tj)Δ(tj1,tj,B)(Q(tj1)+Q(tj))

when accrued premiums are paid upon default. Here, t0 = 0 is the valuation date, and t1,...,tn = T are the premium payment dates over the life of the contract,T is the maturity of the contract, Z(t) is the discount factor for a payment received at time t, and Δ(tj-1, tj, B) is a day count between dates tj-1 and tj corresponding to a basis B.

The protection leg of a CDS contract is given by the following formula:

ProtectionLeg=0TZ(τ)(1R)dPD(τ)

(1R)i=1MZ(τi)(PD(τi)PD(τi1))

=(1R)i=1MZ(τi)(Q(τi1)Q(τi))

where the integral is approximated with a finite sum over the discretization τ0 = 0,τ1,...,τM = T.

If the spread of an existing CDS contract is SC, and the current breakeven spread for a comparable contract is S0, the current price, or mark-to-market value of the contract is given by:

MtM = Notional (S0SC )RPV01

This assumes a long position from the protection standpoint (protection was bought). For short positions, the sign is reversed.

References

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 8, 29-40.

O'Kane, D. and S. Turnbull, "Valuation of Credit Default Swaps." Lehman Brothers, Fixed Income Quantitative Credit Research, April, 2003.

Was this topic helpful?