cds.h File Reference

#include "cx.h"

Functions

TContingentLegJpmcdsCdsContingentLegMake (TDate startDate, TDate endDate, double notional, TBoolean protectStart)
 Makes a contingent leg for a vanilla CDS.
int JpmcdsCdsContingentLegPV (TDate today, TDate valueDate, TDate startDate, TDate endDate, double notional, TCurve *discCurve, TCurve *spreadCurve, double recoveryRate, TBoolean protectStart, double *pv)
 Computes the PV for a contingent leg for a vanilla CDS.
TFeeLegJpmcdsCdsFeeLegMake (TDate startDate, TDate endDate, TBoolean payAccOnDefault, TDateInterval *couponInterval, TStubMethod *stubType, double notional, double couponRate, long paymentDcc, long badDayConv, char *calendar, TBoolean protectStart)
 Makes a fixed fee leg for a vanilla CDS.
int JpmcdsCdsFeeLegPV (TDate today, TDate valueDate, TDate stepinDate, TDate startDate, TDate endDate, TBoolean payAccOnDefault, TDateInterval *couponInterval, TStubMethod *stubType, double notional, double couponRate, long paymentDcc, long badDayConv, char *calendar, TCurve *discCurve, TCurve *spreadCurve, TBoolean protectStart, TBoolean isPriceClean, double *pv)
 Computes the PV for a fixed fee leg for a vanilla CDS.
EXPORT int JpmcdsCdsPrice (TDate today, TDate valueDate, TDate stepinDate, TDate startDate, TDate endDate, double couponRate, TBoolean payAccOnDefault, TDateInterval *couponInterval, TStubMethod *stubType, long paymentDcc, long badDayConv, char *calendar, TCurve *discCurve, TCurve *spreadCurve, double recoveryRate, TBoolean isPriceClean, double *price)
 Computes the price (a.k.a. upfront charge) for a vanilla CDS.
EXPORT int JpmcdsCdsParSpreads (TDate today, TDate stepinDate, TDate startDate, long nbEndDates, TDate *endDates, TBoolean payAccOnDefault, TDateInterval *couponInterval, TStubMethod *stubType, long paymentDcc, long badDayConv, char *calendar, TCurve *discCurve, TCurve *spreadCurve, double recoveryRate, double *parSpread)
 Computes the benchmark par spreads.
EXPORT TCashFlowListJpmcdsCdsFeeLegFlows (TDate startDate, TDate endDate, TDateInterval *dateInterval, TStubMethod *stubType, double notional, double couponRate, long paymentDcc, long badDayConv, char *calendar)
 Computes the non-contingent cash flows for a fee leg.
EXPORT TCurveJpmcdsCleanSpreadCurve (TDate today, TCurve *discCurve, TDate startDate, TDate stepinDate, TDate cashSettleDate, long nbDate, TDate *endDates, double *couponRates, TBoolean *includes, double recoveryRate, TBoolean payAccOnDefault, TDateInterval *couponInterval, long paymentDcc, TStubMethod *stubType, long badDayConv, char *calendar)
 Bootstraps a clean spread curve from par spread inputs.

Detailed Description


Function Documentation

TContingentLeg* JpmcdsCdsContingentLegMake ( TDate  startDate,
TDate  endDate,
double  notional,
TBoolean  protectStart 
)

Makes a contingent leg for a vanilla CDS.

The CDS starts at startDate and ends at endDate. The last date is always protected - the start date is only protected if protectStart=True.

Parameters:
startDate Date when protection begins. Either at start or end of day (depends on protectStart)
endDate Date when protection ends (end of day)
notional Notional value protected
protectStart Should protection include the start date

int JpmcdsCdsContingentLegPV ( TDate  today,
TDate  valueDate,
TDate  startDate,
TDate  endDate,
double  notional,
TCurve discCurve,
TCurve spreadCurve,
double  recoveryRate,
TBoolean  protectStart,
double *  pv 
)

Computes the PV for a contingent leg for a vanilla CDS.

Risk starts at the end of today. The PV is computed for a given value date. The CDS starts at startDate and ends at endDate. The last date is always protected - the start date is only protected if protectStart=True.

Parameters:
today Risk starts at the end of today
valueDate Date for which the PV is calculated and cash settled
startDate Date when protection begins. Either at start or end of day (depends on protectStart)
endDate Date when protection ends (end of day)
notional Notional value protected
discCurve Interest rate discount curve - assumes flat forward interpolation
spreadCurve Credit clean spread curve
recoveryRate Assumed recovery rate in case of default
protectStart True => protection includes start date
pv Output - the present value is returned

EXPORT TCashFlowList* JpmcdsCdsFeeLegFlows ( TDate  startDate,
TDate  endDate,
TDateInterval dateInterval,
TStubMethod stubType,
double  notional,
double  couponRate,
long  paymentDcc,
long  badDayConv,
char *  calendar 
)

Computes the non-contingent cash flows for a fee leg.

These are the cash flows you will receive if there is no default.

Interest accrues for the same number of days as there is protection. Since protectStart is set to True you get one extra day of accrued interest in comparison with an interest rate swap. This extra day is assumed to be the last day of the CDS and means that the last period is one day longer than for an interest rate swap.

Parameters:
startDate Date when protection begins. Either at start or end of day (depends on protectStart)
endDate Date when protection ends for each benchmark (end of day).
dateInterval Interval between coupon payments. Can be NULL when 3M is assumed
stubType If the startDate and endDate are not on cycle, then this parameter determines location of coupon dates.
notional Notional of the fee leg
couponRate Fixed coupon rate (a.k.a. spread) for the fee leg
paymentDcc Day count convention for coupon payment. Normal is ACT_360
badDayConv Bad day convention for adjusting coupon payment dates.
calendar Calendar used when adjusting coupon dates. Can be NULL which equals a calendar with no holidays and including weekends.

TFeeLeg* JpmcdsCdsFeeLegMake ( TDate  startDate,
TDate  endDate,
TBoolean  payAccOnDefault,
TDateInterval couponInterval,
TStubMethod stubType,
double  notional,
double  couponRate,
long  paymentDcc,
long  badDayConv,
char *  calendar,
TBoolean  protectStart 
)

Makes a fixed fee leg for a vanilla CDS.

The CDS starts at startDate and ends at endDate. The last date is always protected - the start date is only protected if protectStart=True.

Interest accrues for the same number of days as there is protection. Thus if protectStart=True you get one extra day of accrued interest in comparison with an interest rate swap. This extra day is assumed to be the last day of the CDS and means that the last period is one day longer than for an interest rate swap.

Parameters:
startDate Date when protection begins. Either at start or end of day (depends on protectStart)
endDate Date when protection ends (end of day)
payAccOnDefault Should accrued interest be paid on default. Usually set to TRUE
couponInterval Interval between coupon payments. Can be NULL when 3M is assumed
stubType If the startDate and endDate are not on cycle, then this parameter determines location of coupon dates.
notional Notional value protected
couponRate Fixed coupon rate (a.k.a. spread) for the fee leg
paymentDcc Day count convention for coupon payment. Normal is ACT_360
badDayConv Bad day convention for adjusting coupon payment dates.
calendar Calendar used when adjusting coupon dates. Can be NULL which equals a calendar with no holidays and including weekends.
protectStart Should protection include the start date

int JpmcdsCdsFeeLegPV ( TDate  today,
TDate  valueDate,
TDate  stepinDate,
TDate  startDate,
TDate  endDate,
TBoolean  payAccOnDefault,
TDateInterval couponInterval,
TStubMethod stubType,
double  notional,
double  couponRate,
long  paymentDcc,
long  badDayConv,
char *  calendar,
TCurve discCurve,
TCurve spreadCurve,
TBoolean  protectStart,
TBoolean  isPriceClean,
double *  pv 
)

Computes the PV for a fixed fee leg for a vanilla CDS.

Risk starts at the end of today. The PV is computed for a given value date. The CDS starts at startDate and ends at endDate. The last date is always protected - the start date is only protected if protectStart=True.

Interest accrues for the same number of days as there is protection. Thus if protectStart=True you get one extra day of accrued interest in comparison with an interest rate swap. This extra day is assumed to be the last day of the CDS and means that the last period is one day longer than for an interest rate swap.

Parameters:
today Risk starts at the end of today
valueDate Date for which the PV is calculated and cash settled
stepinDate Date when step-in becomes effective
startDate Date when protection begins. Either at start or end of day (depends on protectStart)
endDate Date when protection ends (end of day)
payAccOnDefault Should accrued interest be paid on default. Usually set to TRUE
couponInterval Interval between coupon payments. Can be NULL when 3M is assumed
stubType If the startDate and endDate are not on cycle, then this parameter determines location of coupon dates.
notional Notional value protected
couponRate Fixed coupon rate (a.k.a. spread) for the fee leg
paymentDcc Day count convention for coupon payment. Normal is ACT_360
badDayConv Bad day convention for adjusting coupon payment dates.
calendar Calendar used when adjusting coupon dates. Can be NULL which equals a calendar with no holidays and including weekends.
discCurve Interest rate discount curve - assumes flat forward interpolation
spreadCurve Credit clean spread curve
protectStart Should protection include the start date
isPriceClean Should the present value be computed as a clean price (removing accrued interest)
pv Output - the present value is returned

EXPORT int JpmcdsCdsParSpreads ( TDate  today,
TDate  stepinDate,
TDate  startDate,
long  nbEndDates,
TDate endDates,
TBoolean  payAccOnDefault,
TDateInterval couponInterval,
TStubMethod stubType,
long  paymentDcc,
long  badDayConv,
char *  calendar,
TCurve discCurve,
TCurve spreadCurve,
double  recoveryRate,
double *  parSpread 
)

Computes the benchmark par spreads.

Risk starts at the end of today. The PV is computed for a given value date. The CDS starts at startDate and ends at endDate. The last date is always protected - the start date is also protected because internally protectStart is set to True.

Interest accrues for the same number of days as there is protection. Since protectStart is set to True you get one extra day of accrued interest in comparison with an interest rate swap. This extra day is assumed to be the last day of the CDS and means that the last period is one day longer than for an interest rate swap.

Parameters:
today Risk starts at the end of today
stepinDate Date when step-in becomes effective
startDate Date when protection begins. Either at start or end of day (depends on protectStart)
nbEndDates Number of benchmark dates
endDates Date when protection ends (end of day), no bad day adjustment
payAccOnDefault Should accrued interest be paid on default. Usually set to TRUE
couponInterval Interval between coupon payments. Can be NULL when 3M is assumed
stubType If the startDate and endDate are not on cycle, then this parameter determines location of coupon dates.
paymentDcc Day count convention for coupon payment. Normal is ACT_360
badDayConv Bad day convention for adjusting coupon payment dates.
calendar Calendar used when adjusting coupon dates. Can be NULL which equals a calendar with no holidays and including weekends.
discCurve Interest rate discount curve - assumes flat forward interpolation
spreadCurve Credit clean spread curve
recoveryRate Assumed recovery rate in case of default
parSpread Output - par spreads for the CDS are returned (see also isPriceClean)

EXPORT int JpmcdsCdsPrice ( TDate  today,
TDate  valueDate,
TDate  stepinDate,
TDate  startDate,
TDate  endDate,
double  couponRate,
TBoolean  payAccOnDefault,
TDateInterval couponInterval,
TStubMethod stubType,
long  paymentDcc,
long  badDayConv,
char *  calendar,
TCurve discCurve,
TCurve spreadCurve,
double  recoveryRate,
TBoolean  isPriceClean,
double *  price 
)

Computes the price (a.k.a. upfront charge) for a vanilla CDS.

Risk starts at the end of today. The PV is computed for a given value date. The CDS starts at startDate and ends at endDate. The last date is always protected - the start date is also protected because internally protectStart is set to True.

Interest accrues for the same number of days as there is protection. Since protectStart is set to True you get one extra day of accrued interest in comparison with an interest rate swap. This extra day is assumed to be the last day of the CDS and means that the last period is one day longer than for an interest rate swap.

Parameters:
today Risk starts at the end of today
valueDate Date for which the PV is calculated and cash settled
stepinDate Date when step-in becomes effective
startDate Date when protection begins. Either at start or end of day (depends on protectStart)
endDate Date when protection ends (end of day)
couponRate Fixed coupon rate (a.k.a. spread) for the fee leg
payAccOnDefault Should accrued interest be paid on default. Usually set to TRUE
couponInterval Interval between coupon payments. Can be NULL when 3M is assumed
stubType If the startDate and endDate are not on cycle, then this parameter determines location of coupon dates.
paymentDcc Day count convention for coupon payment. Normal is ACT_360
badDayConv Bad day convention for adjusting coupon payment dates.
calendar Calendar used when adjusting coupon dates. Can be NULL which equals a calendar with no holidays and including weekends.
discCurve Interest rate discount curve - assumes flat forward interpolation
spreadCurve Credit clean spread curve
recoveryRate Assumed recovery rate in case of default
isPriceClean Is the price expressed as a clean price (removing accrued interest)
price Output - price (a.k.a. upfront charge) for the CDS is returned (see also isPriceClean)

EXPORT TCurve* JpmcdsCleanSpreadCurve ( TDate  today,
TCurve discCurve,
TDate  startDate,
TDate  stepinDate,
TDate  cashSettleDate,
long  nbDate,
TDate endDates,
double *  couponRates,
TBoolean *  includes,
double  recoveryRate,
TBoolean  payAccOnDefault,
TDateInterval couponInterval,
long  paymentDcc,
TStubMethod stubType,
long  badDayConv,
char *  calendar 
)

Bootstraps a clean spread curve from par spread inputs.

Risk starts at the end of today. The PV is computed for a given value date. The CDS starts at startDate and ends at endDate. The last date is always protected - the start date is also protected because internally protectStart is set to True.

Interest accrues for the same number of days as there is protection. Since protectStart is set to True you get one extra day of accrued interest in comparison with an interest rate swap. This extra day is assumed to be the last day of the CDS and means that the last period is one day longer than for an interest rate swap.

Parameters:
today Risk starts at the end of today
discCurve Interest rate discount curve - assumes flat forward interpolation
startDate Effective date of the benchmark CDS
stepinDate Step in date of the benchmark CDS
cashSettleDate Date when payment should be make
nbDate Number of benchmark dates
endDates Dates when protection ends for each benchmark (end of day). Array of size nbDate
couponRates Coupon rates for each benchmark instrument. Array of size nbDate
includes Flags to denote that we include particular benchmarks. This makes it easy for the user to include or exclude benchmarks on a one-by-one basis. Can be NULL if all are included. Otherwise an array of size nbDate.
recoveryRate Recovery rate in case of default
payAccOnDefault Should accrued interest be paid on default. Usually set to TRUE
couponInterval Interval between coupon payments. Can be NULL when 3M is assumed
paymentDcc Day count convention for coupon payment. Normal is ACT_360
stubType If the startDate and endDate are not on cycle, then this parameter determines location of coupon dates.
badDayConv Bad day convention for adjusting coupon payment dates.
calendar Calendar used when adjusting coupon dates. Can be NULL which equals a calendar with no holidays and including weekends.


Distributed by BN Algorithms Ltd -- consulting in quantitative finance, mathematical algorithms and software implementations. CDS Home Page. For enquires contact webs@bnikolic.co.uk.
This documentation is derived from ISDA CDS Standard Model version 1.7. You can get a copy of the original ISDA code at www.bnikolic.co.uk. This is a derivative work under the terms of the ISDA CDS Standard Model Public License. BN Algorithms Ltd licenses this work to you solely for on-screen viewing on your own computer. Making copies and further distribution of this work is prohibited.
This documentation is provided "as-is", without warranty of any kind, either expressed or implied, including, without limitation, warranties that the documentation is free of defects, merchantable, fit for a particular purpose or non-infringing. the entire risk as to the quality of the documentation is with you. Should this documentation prove defective in any respect, you (not the licensor) assume the cost of any necessary correction. This disclaimer of warranty constitutes an essential part of this license.