Synthetic CDO Valuation Using Monte Carlo Simulation

Overview

Synthetic collateralized debt obligations (CDOs) are credit derivatives that are “synthesized” through credit derivatives, such as credit default swaps (CDSs), on a pool of reference entities.  Such reference entities can be bonds, loans or simply names of companies or countries.  Most synthetic CDOs in the market do not have a so-called cash flow waterfall structure.  They can be customized so that the payment structure of a tranche doesn’t depend on the payment structures of other tranches.  Such CDOs are thus sometimes called single tranche CDOs.  Single tranche CDOs have been developing rapidly for the last few years and are the most popular synthetic CDOs currently in the market.

A common structure of CDOs involves slicing the credit risk of the reference pool into a few different risk levels.  The level with a higher credit risk supports the levels with lower credit risks.  The risk range of two adjacent risk levels is called a tranche.  The lower bound of the risk level of a tranche is often referred to as an attachment point and the upper bound a detachment point.  For example, a 5-10% tranche has an attachment point of 5% and a detachment point of 10%.  When the accumulated loss of the reference pool is no more than 5% of the total initial notional of the pool, the tranche will not be affected.  However, when the loss has exceeded 5%, any further loss will be deducted from the tranche’s notional until the detachment point, 10%, is reached.

The most commonly used credit derivatives in synthetic CDOs are credit default swaps (CDSs on CDO tranches) and tranche-linked notes (CDO notes).  They can be viewed as extensions of the corresponding single entity credit default swaps and credit-linked notes (for details on single entity CDSs and credit linked notes see the Credit Default Swaps and Credit-linked Notes and Rating Sensitive Notes FINCAD Math Reference documents).  Like a single-entity CDS, a CDS on a CDO tranche has a payoff leg and a premium leg.  The buyer of a CDS on a tranche will be compensated by the seller for any loss to the tranche and in return he/she pays periodic premium to the seller.  In the case of a CDO note the buyer of a CDO note pays upfront a certain amount, called the note’s principal, and receives periodic coupon payments and its principal at maturity if the tranche that the note is linked to doesn’t suffer a loss.  However, when the accumulated loss of the reference entities eats into the tranche, the note’s principal will be reduced by the lost amount and thus the future coupon and principal payment will be reduced.  The main differences between a CDO credit derivative and a single-entity credit derivative are twofold: (1) a CDO derivative has a variable notional whereas a single entity credit derivative has a constant notional; (2) a CDO derivative has a protection layer (except for an equity tranche derivative) whereas a single-entity derivative does not.

A popular CDO derivative is the so-called first-loss CDS (FLCDS). An FLCDS is a CDS on the equity tranche of a CDO.  Whenever a loss occurs in the reference pool, the buyer of an FLCDS will be compensated, up to a predetermined maximum amount, and at the same time the premium notional will be reduced by the lost amount until the notional reaches 0.  It will be interesting to compare an FLCDS with another popular basket CDS, the first-to-default CDS (for details on basket CDSs see the Basket Default Swaps FINCAD Math Reference document).  In a first-to-default CDS, whenever a reference entity defaults, the buyer of the CDS will be compensated the full loss of the defaulted entity and the seller stops receive premium payments.  Here the number of defaults is fixed, but the maximum compensation to the CDS buyer is unknown beforehand, while in an FLCDS, the number of defaults is, in general, unknown beforehand but the maximum compensation, the notional of the equity tranche, is known beforehand.

It should be to be pointed out that an FLCDS is a CDS on the loss of a portfolio of entities up to a certain threshold level.  It doesn’t have to be associated with a formal CDO structure, although an FLCDS can always be viewed as a CDS on the equity tranche of a CDO, i.e., a CDO that has only one tranche, the equity tranche.

An important class of CDSs on CDO tranches is the so-called standardized tranche CDSs, or simply standardized tranches.  For a standardized tranche CDS the reference asset pool is a basket of names, and each name has the same amount of notional and the same recovery rate.

Monte Carlo simulation has been the most popular method for CDO valuation.  It is flexible and relatively simple for implementation.  The disadvantage is that Monte Carlo simulation can be very resource intensive for large CDOs.  In recent years non-Monte Carlo methods, e.g., the fast Fourier transform, have been searched and these methods have proven to be more efficient than Monte Carlo simulation for certain CDOs, in particular, standardized CDOs, when a one-factor copula model is used for modeling credit correlation of reference entities.  However, for CDOs with a generic correlation structure, or a generic reference entity pool or with counterparty default risks, Monte Carlo simulation is still the most reliable method for CDO valuation.

FINCAD provides both Monte Carlo simulation-based and analytic method-based tools to value synthetic CDOs.  This document explains the Monte Carlo simulation-based tools.  For analytic method-based tools see the Synthetic CDO Valuation Using Quasi-Analytic Methods FINCAD Math Reference document.  The Monte Carlo simulation-based tools can handle generic synthetic CDOs.  The reference entities can be bonds or names (or CDSs) and counterparty default risks can be handled.  If the reference entities are bonds, recovery rates on bond coupons are allowed to be different from the recovery rates of bond principals.  For modeling, both the Gaussian (normal) copula model (Li model) and the multi-step credit index model (Hull-White model) are used in the modeling of credit correlation.  No special restriction is imposed on the correlation matrix.

Formulas and Technical Details

Cumulative loss calculation

Suppose a reference pool has  assets,  with notional amounts , respectively.  The total notional amount is:

.

Suppose the loss layer is given by its lower and upper bounds  and , in dollar values.  Let  be the cumulative loss of the jth credit event. Then:

where

, and

 and  are respectively the notional and the recovery rate of the asset that has the jth credit event.

Then for a given loss layer ( its compensation amount at the credit event  is

 

where

.

If a credit name corresponds to several assets, the losses of all the assets of the credit name must be added together when the name defaults.

1.       Valuation

The essential part of Monte Carlo simulation is to generate the default times of all the credits in the pool.  These default times are then sorted and used to calculate the cumulative loss and notional, and then to derive the premium, payoff values and other related statistics.

For the method of generating default times using credit index processes or copula functions, see the Default Probability Curves and Default Correlations FINCAD Math Reference document.

2.       Sensitivity - DV01 and Delta

The DV01 of a CDO credit derivative with respect to a credit reference entity is defined as the fair value change of the derivative per one basis point up-shift of the par CDS spread curve of the corresponding reference entity.  Since the credit risk of a reference entity is usually expressed with a default probability curve, the par credit default swap spread curve can be derived from the default probability curve.  By adding one basis point at each point of this par CDS spread curve one gets an up-shifted par CDS spread curve.  Then an up-shifted default probability curve can be build with the up-shifted par CDS spread curve.

The delta of a credit derivative with respect to a credit reference asset is defined as:

Delta = - DV01 of the derivative / DV01 (reference CDS at par),

where “DV01 of a reference CDS at par” is defined as the change in the value of the CDS (on the given entity) that has the premium coupon of the entity’s par CDS spread, per one basis point up-shift of the entity’s par CDS spread curve.

3.       Rho of recovery rate of a single reference entity

This statistic is calculated in functions that calculate risk statistics only.  It is defined as the change in the fair value of a CDO derivative per 1% change in the recovery rate of a given reference entity.  In more detail, let be the fair value of the derivative when the recovery rate of the entity is .  Then:

 

4.       BPV (basis point value)

The BPV of a risk free discount factor curve is the change in the fair value of a CDO derivative when the risk-free discount factor curve is shifted up one basis point.  To shift up a discount factor curve simply add one basis point to every point of the corresponding spot rate curve of the discount factor curve.

FINCAD Functions

aaCredit_DS_Firstloss(d_v, contra_d, tranche_type, tranche, protect_rate, cpn_tbl, notion_adj, freq_tbl, bond_bskt, bond_his, corr_mat, meth_corr, prob_bskt, Intrp_prob, hl, df_crv_std, intrp, position, MC_para, stat):

Calculates fair value and risk statistics of a credit default swap on a CDO tranche.

 

aaCredit_DS_FirstLoss_delta(d_v, contra_d, tranche_type, tranche, protect_rate, cpn_tbl, notion_adj, freq_tbl, bond_bskt, bond_his, corr_mat, meth_corr, prob_bskt, intrp_prob, hl, df_crv_std, intrp, position, MC_para, output_type, asset_list):

Calculates sensitivity of the fair value of a credit default swap on a CDO tranche to the credit spread of each entity in the reference pool.

 

aaCredit_Dpremium_FirstLoss_cf(d_v, contra_d, tranche_type, tranche, protect_rate, cpn_tbl, notion_adj, freq_tbl, bond_bskt, bond_his, corr_mat, meth_corr, prob_bskt, intrp_prob, hl, df_crv_std, intrp, position, MC_para, table_type):

Calculates the premium cash flows of a default swap on a CDO tranche.

 

aaCredit_DS_tranche_std(d_v, contra_d, tr_notion_ini, num_credit, tranche, cpn_pr, freq_tbl, prem_fix, loss_cum, loss_type, rate_recover, corr_mat, meth_corr, prob_bskt, intrp_prob, hl, df_crv_std, intrp, position, MC_para, stat):

Calculates fair value and risk statistics of a credit default swap on a standardized tranche.

 

aaCredit_DS_tranche_std_delta(d_v, contra_d, tr_notion_ini, tranche, cpn_pr, freq_tbl, prem_fix, loss_cum, loss_type, rate_recover, num_credit, corr_mat, meth_corr, prob_bskt, intrp_prob, hl, df_crv_std, ntrp, position, MC_para, output_type, asset_list):

Calculates sensitivity of the fair value of a credit default swap on a standardized tranche to the credit spread of each entity in the reference pool.

 

aaCredit_Dpremium_tranche_std_cf(d_v, contra_d, tr_notion_ini, tranche, cpn_pr, freq_tbl, prem_fix, loss_cum, loss_type, rate_recover, num_credit, corr_mat, meth_corr, prob_bskt, intrp_prob, hl, df_crv_std, intrp, position, MC_para, table_type):

Calculates the premium cash flows of a credit default swap on a standardized tranche.

 

aaCDO_tranche(d_v, contra_d, tranche_type, tranche, loss_absorb, cpn_tbl, notion_adj, cpn_freq_tbl, bond_bskt, bond_his, fix_cum, corr_mat, meth_corr, prob_bskt, intrp_prob, hl, df_crv_std, intrp, position, MC_para, stat):

Calculates fair value and risk statistics of a CDO note.

 

aaCDO_tranche_cf(d_v, contra_d, tranche_type, tranche, loss_absorb, cpn_tbl, notion_adj, cpn_freq_tbl, bond_bskt, bond_his, fix_cum, corr_mat, meth_corr, prob_bskt, intrp_prob, hl, df_crv_std, intrp, position, MC_para, table_type):

Calculates the cash flows of a CDO note.

 

aaCDO_tranche_delta(d_v, contra_d, tranche_type, tranche, loss_absorb, cpn_tbl, notion_adj, cpn_freq_tbl, bond_bskt, bond_his, fix_cum, corr_mat, meth_corr, prob_bskt, intrp_prob, hl, df_crv_std, intrp, position, MC_para, output_type, asset_list):

Calculates sensitivity of the fair value of a CDO note to the credit spread of each entity in the reference pool.

 

aaCDO_tranche_par(d_v, contra_d, price, tranche_type, tranche, loss_absorb, cpn_tbl, notion_adj, cpn_freq_tbl, bond_bskt, bond_his, fix_cum, corr_mat, meth_corr, prob_bskt, intrp_prob, hl, df_crv_std, intrp, MC_para):

Calculates for a given price, the implied coupon rate of a CDO note.

 

Description of the Inputs

The following table gives the parameter descriptions of the functions that value credit default swaps on CDO tranches, i.e., all the above functions except the last four:

Input Argument

Description

d_v

Valuation date

contra_d

Table of default swap date(s).  It can be a 1-, 2-, 3-, or 4-entry table.  The 4 entries hold in sequence the maturity date, effective date, odd first coupon date and next-to-maturity coupon date for premium payments.  Only the maturity is required.  The default value of an entry is 0.

tranche_type

Type of a tranche (or loss layer) definition.  A switch:

1 = proportional (to the initial pool principal),

2 = actual dollar amount.  

These two types are mutually convertible. For example, when a proportional tranche boundary value is converted to actual dollar amount, the initial tranche notional is multiplied by the boundary value.

tranche

Tranche (loss layer) table.  It is a two-entry array (lower bound, upper bound).

protect_rate

A scaling factor for a tranche protection.  A protection buyer will receive [protect_rate] x [lost amount of the tranche].  When protect_rate<1, the credit default swap protects only a portion of the tranche loss.

cpn_tbl

Premium coupon and fixed payment table.  A 4-column table (date, notional, coupon rate, fixed premium payment).  The date must be ascending.  At a given date the data in the row of the table that has the closest future date is used in the premium calculation.  If there is no future date, the closest prior will be used.

notion_adj

Premium notional adjustment type; a switch

1 = notional is adjusted for matured bonds,

2 = no adjustment for matured bonds

freq_tbl

A four-entry table (premium frequency, type of premium accrued interest, accrual method, business day convention).  Each entry is from a switch.

bond_bskt

A bond basket table.  It can be of two types.

1.       A 13- or 14- or 15-column table.  Only 13 columns are required. See function aaBond3_p for the details of the entries from column 3 to column 12.  The 14th column contains the coupon recovery rate.  Its default value is the principal recovery rate.  The 15th column stores the reference price of the bond.  Its default value is 100 (per 100 par).  The first column, the bond ID, must be ascending integers.  It is an identifier of a credit reference name.

2.       A 5- or 6-column table (ID, default status, principal, maturity, recovery rate, [optional] reference price).  Bonds that are perfectly correlated and have the same default profile can be grouped with the same ID. The number of IDs plus one must be the same as the number of rows of the correlation matrix.

bond_his

A three-entry historical bond data table: cumulative loss, the total of initial principals and the total of matured bond principals.  If an entry is empty or 0, it will be calculated from the bond basket table where it is used.  The total initial principal is the sum of the principals of the defaulted bonds, the matured principals, and the principals of the active bonds.

corr_mat

The correlation matrix of the reference entities and the counterparty (note that in the standard tranche functions there is no counterparty).  It can be a full correlation matrix or a single entry array.  If it is a single entry array, it is assumed that each pair of the entities has the same correlation.  For a full correlation matrix only the values in the upper triangle will be used.  Note that a correlation matrix must be non-negative definite.

meth_corr

Method of handling credit correlation; a switch:

1 = use a credit index process,

2 = use a normal copula

prob_bskt

A basket default probability curve of an m-name basket and a counterparty.  It can be a m+1 or m+2 column table.  The first column can be time in years (>=0 and <1000), or dates (>=1000) and the (i+1)th column (i=1, ..., m) the default probabilities of the ith entity.  The (m+1)th column contains the counterparty default probabilities if there is a counterparty.  Time and date must be increasing, and probability must be non-decreasing and between 0 and 1.  If the first column is time in years, the time accrual method (default = 30/360) can be put in the first row of the (m+2)th column.  For a date-based curve, the probabilities in the first row must be 0, and the first date must be equal to a valuation date if there is one.  Excel users may pass term strings to represent time intervals.  Term strings must be in the format kB, kD, kW, kM, or kY where k is an integer and B, D, W, M and Y stands for market day, calendar day, week, month and year respectively, e.g., 3M = 3 months.  For the standardized tranche functions there is no counterparty.

intrp_prob

Interpolation method of a probability curve; a switch:

1 = linear,

2 = exponential.  

For both interpolation methods, if the default probability curve is not long enough, the exponential extrapolation method is always used to extend the curve.

hl

Holiday list

df_crv_std

Risk-free discounting factor curve or a risk-free yield.  If it is a risk-free yield table, it can be a 1-entry table of a yield value (annual, actual/365), or a 2-entry table of yield and compounding frequency, or a 3-entry table of yield, compounding frequency and accrual method.

intrp

Interpolation method

position

Trading position - a switch:

1 = buy protection,

2 = sell protection.

MC_para

Monte Carlo parameter table. It can be a one- or two-entries array.  The first entry is the number of random trials.  If it is a decimal number, a fixed seed will be used for each simulation; otherwise, if it is an integer, a random seed will be used.  The second entry has the number of time points in each coupon period to check default.  The default value is 1.

output_type

Used in the delta calculation functions.  It gives three types of outputs; 1) delta, 2) DV01 of credit spread, 3) rho of recovery rate.  See Description of Outputs for their definitions.

asset_list

Used in the delta calculation functions.  It can be any subset of the integers (1, 2,…, number of bonds in the table bond_bskt).

table_type

Used in the cash flow functions.  A premium cash flow table type switch.  See the function reference page and section Description of Outputs for more details.

tr_notion_ini

Initial notional of a standardized tranche.  This is the notional of a tranche before a loss incurs.

prem_cpn

Premium rate

loss_cum

Accumulated loss up to the valuation date.

loss_type

Type of the accumulated loss data - a switch:

1 = dollar amount,

2 = number of credit events

num_credit

The total number of credits in a reference credit pool for standardized tranches.

rate_recover

Recovery rate of all the credits in the credit pool.  Used in the standardized tranche functions only.

stat

Statistic list.  In the function aaCredit_DS_FirstLoss it can be any subset of {1, 2,.., 14}. In the function aaCredit_DS_tranche_std it can be any subset of {1, 2, …, 17}

The following table gives the parameter descriptions of the CDO note functions:

aaCDO_tranche

aaCDO_tranche_cf

aaCDO_tranche_delta

aaCDO_tranche_par

For parameters that are not shown in the table, their descriptions are the same as those given in the above table.

Input Argument

Description

loss_absorb

A scaling factor for tranche loss absorption.  The buyer of the tranche will get a reduction on his principal by the amount of loss_absorb × lost amount of the tranche.  When loss_absorb<1, the buyer will only absorb a portion of the total loss of the tranche

cpn_tbl

Coupon and fixed payment table.  A 4-column table (date, notional, coupon rate, fixed payment).  The date must be ascending.  At a given date the data in the closest future date will used.  If there is no future date, the closest prior will be used.

notion_adj

Notional adjustment type, a switch with one value (1 = notional is adjusted for fixed payments but not for matured bonds).

freq_tbl

A four-entry table coupon frequency, type of accrued interest, accrual method, business day convention).  Each entry is from a switch.

fix_cum

Accumulated fixed payments up to the valuation date, inclusive.

stat

Stat list.  It can be any subset of {1, 2, .., 13}.

 

Description of the Outputs

aaCredit_DS_FirstLoss

aaCredit_DS_tranche_std

The function aaCredit_DS_FirstLoss has fourteen outputs and the function aaCredit_DS_tranche_std has three extra outputs:

Output Statistics

Description

1

Fair value of a CDS on a tranche

2

Present value of the payoff (default) leg.

3

Present value of the premium leg.

4

Premium accrued interest

5

Fair value minus premium accrued interest

6

Par premium coupon rate.  This is the premium rate that makes a CDS on a tranche have a fair value minus accrued interest equal to 0.

7

Basis point value on risk-free curve: change of the fair value of CDS on a tranche per one basis up shift of the risk-free discount factor curve

8

Number of days that premium accrues

9

Next premium payment date

10

Previous premium payment date

11

Remaining coupons: number of remaining premium coupons until maturity

12

Total outstanding bond principal

13

Accumulated loss

14

Outstanding premium leg notional

15

Minimum number of defaults needed for the tranche to incur any loss

16

Minimum number of defaults needed for the tranche to loose all its notional

17

Remaining number of defaults needed for the tranche to loose all its notional

 

aaCredit_Dpremium_FirstLoss_cf

Credit_Dpremium_tranche_std_cf

These functions output premium cash flows tables. There are five types of output tables:

Table Type

Label

Description

1

No-default cash flows

A five column table of premium cash flows (date, interest, fixed premium payment, total, accrued interest) given that no default occurs

2

Expected cash flows

A four-column expected cash flow table (date, expected interest,  expected fixed payment, total)

3

PV of cash flows

A four-column present value cash flow table (date, present value of interest, present value of fixed premium payment, total)

4

Interests

a five-column of premium interest table (date, interest given no default, expected interest, present value of interest, accrued interest)

5

Extended cash flow table

A thirteen-column cash flow table (effective date, terminating date, interest given no default, fixed payment given no default, total cash flow given no default, accrued interest, expected interest, expected fixed payment, total expected cash flow, present value of interest, present value of fixed payment, total present value of cash flow, discount factor)

 

aaCDO_tranche

Output Statistics

Description

1

Fair value of a tranche

2

Accrued interest

3

Fair value plus accrued interest

4

Value of interest

5

Value of fixed payment

6

BPV on risk-free curve

7

Number of days that interest accrues

8

Next coupon payment date

9

Previous coupon payment date

10

Remaining coupons: number of remaining interest payments

11

Total outstanding notional of the pool

12

Accumulated loss of the pool

13

Outstanding principal of the tranche

 

aaCDO_tranche_cf

Table Type

Label

Description

1

No-default cash flow table

A five column no-default cash flow table (date, interest, principal, total, accrued interest) - cash flows given that there is no default.

2

Expected cash flow table

A four-column expected cash flow table (date, expected interest, expected principal, total)

3

PV of cash flow table

A four-column present value cash flow table (date, present value of interest, present value of principal, total)

4

Interest payment table

A five-column interest table (date, interest given no default, expected interest, present value of interest, accrued interest)

5

Extended cash flow table

A thirteen-column cash flow table (effective date, terminating date, interest given no default, principal given no default, total cash flow given no default, accrued interest, expected interest,  expected principal, total expected cash flow, present value of interest, present value of principal, total present value of cash flow, discount factor)

 

aaCDO_tranche_par

Output

Description

Implied coupon rate

The coupon rate that values the CDO note to a given price.

 

aaCredit_DS_FirstLoss_delta

aaCredit_DS_tranche_std_delta

aaCDO_tranche_delta

 

These functions output three types of risk statistics: delta, DV01 or credit spread and rho of recovery rate.  See the section Formulas & Technical Details for their definitions.

 

*       Remark:  The Delta and DV01 of a credit spread are often not sensitive to the change of a single entity’s credit spread. Hence a large number of random trials (e.g., 50,000) is recommended for their calculation.

 

Examples

Context examples are given for a first-loss credit default swap, a credit default swap on a standard tranche and a CDO note.

Example 1:  A first-loss credit default swap. 

Bank A holds a portfolio of risky bonds.  To improve its capital efficiency and also reduce concentration risk, it decides to market the bonds.  However, market conditions and liquidity issues would put the bank in an unfavorable and difficult position if it directly sells these bonds.  Instead, the bank restructures the portfolio by forming several tranches with different risk levels.  

All the tranches are ranked BBB and above except for the equity tranche, the one with the highest risk level, which is not rated.  This way the bank finds it is easy to find buyers for the rated tranches.  To completely eliminate the credit risk of the bond portfolio the bank bought a 5-year first-loss credit default swap.  The equity piece has 5% of the total portfolio principal, 21,300,000.  The bank pays a 12% premium coupon quarterly on an initial notional of 1,000,000.  If any of the bonds default within 5 years, the bank will be compensated by the counterparty for losses up to 5% of the total bond principal.  The FINCAD functions given above can be used to calculate the fair price.


Here are the details of the first loss CDS.  The bond portfolio has 10 bonds given as follows:

table_bskt:  Reference Bond Pool

ID

Dflt Status

Principal

Maturity

Odd Days

Cpn

Redempt

Freq

Accrual Method

Day Count

Principal Recovery

Coupon Recovery

1

0

1000000

1-Nov-2012

0

0

0

0.1

100

2

14

1

0.4

0

2

0

2000000

1-Dec-2015

0

0

0

0.15

100

2

14

1

0.3

0

3

0

1500000

1-Dec-2012

0

0

0

0.15

100

2

14

1

0.4

0

4

0

3000000

1-Nov-2015

0

0

0

0.1

100

2

14

1

0.4

0

5

0

2000000

1-Dec-2014

0

0

0

0.15

100

2

14

1

0.3

0

6

0

4000000

1-Jun-2003

0

0

0

0.15

100

2

14

1

0.4

0

7

0

3000000

1-Mar-2010

0

0

0

0.1

100

2

14

1

0.3

0

8

0

2000000

1-Dec-2014

0

0

0

0.15

100

2

14

1

0.3

0

9

0

1000000

1-Apr-2007

0

0

0

0.17

100

2

14

1

0.4

0

10

0

1800000

1-Dec-2012

0

0

0

0.15

100

2

14

1

0.4

0

 


All of the bond issuers are from the same industry sector.  The credit index correlation of each pair of issuers is around 0.4.  It is reasonable to assume that all the correlations are equal to this number.  The default probability curves of the bond issuers and the CDS counterparty are given as:

table_prob:  Default Probability Curve

 

Issuer

Years

1

2

3

4

5

6

7

8

9

10

Counter-party

1

0.05

0.043

0.036

0.036

0.026

0.024

0.015

0.025

0.017

0.019

0.005

2

0.1

0.096

0.087

0.093

0.08

0.078

0.066

0.078

0.073

0.076

0.01

3

0.15

0.146

0.145

0.146

0.13

0.134

0.119

0.132

0.128

0.135

0.015

4

0.2

0.206

0.204

0.199

0.189

0.189

0.176

0.187

0.185

0.185

0.02

5

0.25

0.26

0.256

0.254

0.24

0.245

0.229

0.243

0.244

0.237

0.025

10

0.5

0.502

0.505

0.505

0.513

0.521

0.525

0.534

0.54

0.545

0.03

The CDS matures on Dec 1, 2010.  Today’s date is Dec 1, 2005 and the current risk-free discount factor curve is:

table_df:  Risk-free Discount Factor Curve

Date

Discount Factor

1-Dec-2005

1

1-Dec-2006

0.99

1-Dec-2007

0.9

1-Dec-2008

0.86

1-Dec-2009

0.818

1-Dec-2015

0.57

Use an accrual method of act/360.  Call the FINCAD function aaCredit_DS_FirstLoss with a 10000.5 random trials to get the following results:

aaCredit_DS_FirstLoss

Argument

Description

Example Data

Switch

d_v

value (settlement) date

1-Dec-2005

 

contra_d

CDS contract dates

table_dates

 

tranche_type

type of tranche definition

1

tranche boundaries are proportional to the total notional

tranche

tranche boundaries

table_tranche

 

protect_rate

portion of protection

1

 

cpn_tbl

coupon and fixed payment table

 

 

notion_adj

type of notional adjustment

1

notional is adjusted for matured bonds

freq_tbl

premium frequency and accrual

table_freq

 

bond_bskt

bond basket table

above

 

bond_his

bond historical statistics

table_his

 

corr_mat

credit index correlation matrix

0.4

 

meth_corr

method of handling credit correlation

2

normal copula

prob_bskt

default probability curve

table_prob

 

intrp_prob

interpolation method of probability curve

1

linear

hl

holiday list

0

 

df_crv_std

discount factor curve – risk free

table_df

 

intrp

interpolation method

1

linear

position

trade position

1

buy protection

MC_para

parameters for Monte Carlo simulation

10000.5

 

stat

stat list

1,     14

 

Results

Output Statistics

Description

Value

1

fair value

331154.8

2

value of payoff

643082.9

3

value of premium

-311928

4

premium accrued interest

-0

5

fair value minus accrued interest

331154.8

6

par premium coupon rate.

0.247397

7

BPV on risk-free curve

-71.3173

8

number of days that premium accrues

0

9

next premium payment date

1-Mar-2006

10

previous premium payment date

1-Dec-2005

11

number of remaining coupons

20

12

total outstanding bond principal

17300000

13

cumulative loss

0

14

outstanding premium leg notional

1000000

The input tables in the input parameter list are given as follows:

table_dates - contract dates table

Maturity Date

Effective Date

1-Dec-2010

1-Dec-2005

table_tranche - tranche definition

Lower Bound

Upper Bound

0

0.05

table_cpn – premium coupon and fixed payment table

Date

Notional

Coupon

Fixed Payments

1-Dec-2010

1000000

0.12

0

table_freq - premium frequency and other inputs

Frequency

Premium Accrual Type

Accrual Method

Business Day Convention

3

1

2

1

table_his - historical statistics

Accumulated Loss

Total Initial Principal

Total Matured Bond Principal

0

0

0

To get the premium cash flows, call the function aaCredit_Dpremium_FirstLoss_cf with a table type = 4 to get the following results:

Results

Date

Cash Flow Given No Default

Expected Cash Flow

Present Value

Accrued Interest

1-Mar-2006

-30000

-28642.5

-28571.87466

-0

1-Jun-2006

-30666.66667

-27884.89333

-27745.85085

-0

1-Sep-2006

-30666.66667

-26704.53333

-26504.06643

-0

1-Dec-2006

-30333.33333

-25349.87

-25096.3713

-0

1-Mar-2007

-30000

-23391

-22638.00205

-0

1-Jun-2007

-30666.66667

-21327.34498

-20156.9704

-0

1-Sep-2007

-30666.66667

-20053.37678

-18498.00391

-0

1-Dec-2007

-30333.33333

-18609.44304

-16748.49873

-0

1-Mar-2008

-30333.33333

-17523.26618

-15596.66446

-0

1-Jun-2008

-30666.66667

-16658.09014

-14659.11932

-0

1-Sep-2008

-30666.66667

-15714.11687

-13670.42298

-0

1-Dec-2008

-30333.33333

-14717.25626

-12656.84038

-0

1-Mar-2009

-30000

-13679.89155

-11623.03553

-0

1-Jun-2009

-30666.66667

-13213.80739

-11087.14464

-0

1-Sep-2009

-30666.66667

-12444.27562

-10309.72436

-0

1-Dec-2009

-30333.33333

-11524.8723

-9427.345542

-0

1-Mar-2010

-30000

-9083.04507

-7337.400714

-0

1-Jun-2010

-30666.66667

-8764.858717

-6989.09274

-0

1-Sep-2010

-30666.66667

-8304.628357

-6535.625016

-0

1-Dec-2010

-30333.33333

-7823.054961

-6076.053602

-0

To calculate the sensitivities, e.g., deltas of bond 1 and bond 2 call the function aaCredit_FirstLoss_delta with the asset_list = {1, 2) and a random trial number of 50,000.5 to get the following results:

Results

Bond List

Delta

1

-0.294987271

2

-0.203419397

 


Example 2:  A standardized tranche

An investor bought a credit default swap one year ago on a 10-15% standardized credit tranche, i.e., a tranche with an attachment point 10% and a detachment point 15%.  The tranche has a notional of 1,500,000.  The credit pool has 15 credits and none has defaulted so far.  The maturity date of the swap is Dec 1, 2010 and the premium coupon is 12%, paid quarterly.  The default probability curves of the credits are given as follows:

table_prob:  Default Probability Curve

 

Issuer

Years

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

1

0.05

0.043

0.036

0.036

0.03

0.024

0.015

0.025

0.017

0.019

0.02

0.036

0.057

0.02

0.027

2

0.1

0.096

0.087

0.093

0.08

0.078

0.066

0.078

0.073

0.076

0.08

0.096

0.132

0.097

0.154

3

0.15

0.146

0.145

0.146

0.13

0.134

0.119

0.132

0.128

0.135

0.15

0.177

0.225

0.175

0.208

4

0.2

0.206

0.204

0.199

0.19

0.189

0.176

0.187

0.185

0.185

0.195

0.222

0.273

0.232

0.277

5

0.25

0.26

0.256

0.254

0.24

0.245

0.229

0.243

0.244

0.237

0.237

0.324

0.386

0.278

0.331

10

0.5

0.502

0.505

0.505

0.51

0.521

0.525

0.534

0.54

0.545

0.565

0.435

0.482

0.367

0.436

 


The credit correlation of each pair of credits can be modeled approximately with an identical correlation value of 0.4.  Today’s date is Dec 1, 2005.  The current discount factor is as given in Example 1.  Suppose the accrual method is act/360 and there is no date adjustment.  Call function aaCredit_DS_tranche_std to get the following results.

aaCredit_DS_tranche_std

Argument

Description

Example Data

Switch

d_v

value (settlement) date

1-Dec-2005

 

contra_d

CDS contract dates

table_dates

 

tr_notion_ini

initial notional of the tranche

1,500,000

 

tranche

tranche boundaries

table_tranche

 

prem_cpn

premium coupon rate

0.12

 

freq_tbl

premium frequency and accrual

table_freq

 

prem_fix_tbl

fixed premium payment table

1

 

loss_cum

accumulated loss

0

 

loss_type

type of loss data

1

total of lost notionals of the pool

num_credit

number of credits of the pool

15

 

rate_recover

recovery rate

0.3

 

corr_mat

credit index correlation matrix

0.4

 

meth_corr

method of handling credit correlation

2

normal copula

prob_bskt

default probability curve

table_prob

 

intrp_prob

interpolation method of probability curve

1

linear

hl

holiday list

0

 

df_crv_std

discount factor curve – risk free

table_df

 

intrp

interpolation method

1

linear

position

trade position

1

buy protection

MC_para

parameters for Monte Carlo simulation

10000.5

 

stat

stat list

1…17

 

Results

Output Statistics

Description

Value

1

fair value

110421.6133

2

value of payoff

715244.2857

3

value of premium

-604822.6724

4

premium accrued interest

-0

5

fair value minus accrued interest

110421.6133

6

par premium coupon rate.

0.141908229

7

BPV on risk-free curve

-58.73229261

8

number of days that premium accrues

0

9

next premium payment date

1-Mar-2006

10

previous premium payment date

1-Dec-2005

11

number of remaining coupons

20

12

total outstanding bond principal

30000000

13

accumulated pool loss

0

14

outstanding premium leg notional

1500000

15

minimum defaults needed for tranche loss

2.142857143

16

minimum defaults needed for full tranche loss

3.214285714

17

remaining defaults needed for full tranche loss

3.214285714

The input tables in the input parameter list are given as follows:

table_dates - contract dates table

Maturity Date

Effective Date

1-Dec-2010

1-Dec/2004

table_tranche – tranche definition

Lower Bound

Upper Bound

0.1

0.15

table_freq - premium frequency and other inputs

Frequency

Premium Accrual Type

Accrual Method

Business Day Convention

3

1

2

1

 


Example 3:  A CDO note

An investor bought a note that is linked to the 10-15% bond CDO tranche.  The note has a principal of 1,000,000 and matures on Dec 1, 2010.  The reference bond pool has 10 bonds with an initial total notional of 20,000,000.  Before the accumulated loss of the bond pool reaches 10% of the total initial notional of the pool, the investor will receive 12% semiannual coupon payments.  When the accumulated loss breaches 10%, the tranche’s principal will be reduced by the lost amount that exceeds 10% until the tranche’s notional principal is totally wiped out or the CDO matures.  At maturity the principal, whatever is left, will be paid to the investor.  The details of reference bond pool are given in the following table:

table_bskt:  reference bond pool

ID

Dflt

Status

Principal

Maturity

Odd

Dates

Cpn

Redempt

Freq

Accrual

Method

Day

Count

Princ

Recov

Coup

Recov

1

0

1000000

1-Nov-2012

0

0

0

0.10

100

2

14

1

0.4

0.4

2

0

2000000

1-Dec-2015

0

0

0

0.15

100

2

14

1

0.3

0.3

3

0

1400000

1-Dec-2012

0

0

0

0.15

100

2

14

1

0.4

0.4

4

0

3000000

1-Nov-2015

0

0

0

0.10

100

2

14

1

0.4

0.4

5

0

2000000

1-Dec-2014

0

0

0

0.15

100

2

14

1

0.3

0.3

6

0

3000000

1-Jun-2013

0

0

0

0.15

100

2

14

1

0.4

0.4

7

0

3000000

1-Mar-2010

0

0

0

0.10

100

2

14

1

0.3

0.3

8

0

2000000

1-Dec-2014

0

0

0

0.15

100

2

14

1

0.3

0.3

9

0

1000000

1-Apr-2007

0

0

0

0.17

100

2

14

1

0.4

0.4

10

0

1600000

1-Dec-2012

0

0

0

0.15

100

2

14

1

0.4

0.4

 


All of the bond issuers are from the same industry sector.  The credit index correlation of each pair of issuers is around 0.4.  It is reasonable to assume that all the correlations are equal to this number.  The default probability curves of the bond issuers and the tranche seller (counterparty) are given in the following table:

table_prob:  default probability curve

 

Issuer

Years

1

2

3

4

5

6

7

8

9

10

Counter-party

1

0.05

0.043

0.036

0.036

0.026

0.024

0.015

0.025

0.017

0.019

0.005

2

0.10

0.096

0.087

0.093

0.08

0.078

0.066

0.078

0.073

0.076

0.01

3

0.15

0.146

0.145

0.146

0.13

0.134

0.119

0.132

0.128

0.135

0.015

4

0.20

0.206

0.204

0.199

0.189

0.189

0.176

0.187

0.185

0.185

0.02

5

0.25

0.26

0.256

0.254

0.24

0.245

0.229

0.243

0.244

0.237

0.025

10

0.50

0.502

0.505

0.505

0.513

0.521

0.525

0.534

0.54

0.545

0.03

Today’s date is Dec 1, 2005. The current risk-free discount factor curve is:

table_df:  risk-free discount factor curve

grid date

discount factor

1-Dec-2005

1

1-Dec-2006

0.99

1-Dec-2007

0.9

1-Dec-2008

0.86

1-Dec-2009

0.818

1-Dec-2015

0.57

The time accrual method of the contract is actual/360.

Fair value and risk statistics

Call FINCAD function aaCDO_tranche to get the following results:

aaCDO_tranche

Argument

Description

Example Data

Switch

d_v

value (settlement) date

1-Dec-2005

 

contra_d

CDS contract dates

table_dates

 

tranche_type

type of tranche definition

1

tranche boundaries are proportional to the total notional

tranche

tranche boundaries

table_tranche

 

loss_absorb

portion of loss absorption in the tranche

1

 

cpn_tbl

coupon and fixed payment table

table_cpn

 

notion_adj

notional adjustment

1

adjusted for fixed payments but not for matured bonds

freq_tbl

coupon and frequency table

table_freq

 

bond_bskt

bond basket table

above

 

bond_his

bond historical statistics

table_his

 

fix_cum

accumulated fixed payments

0

 

corr_mat

credit index correlation matrix

0.4

 

meth_corr

method of handling credit correlation

2

normal copula

prob_bskt

default probability curve

table_prob

 

intrp_prob

interpolation method of probability curve

1

linear

hl

holiday list

0

 

df_crv_std

discount factor curve – risk free

table_df

 

intrp

interpolation method

1

linear

position

trade position

1

long

MC_para

parameters for Monte Carlo simulation

10000.5

 

stat

stat list

1…13

 

Results

Output Statistics

Description

Value

1

Fair value of the tranche

851909.1181

2

accrued interest

0

3

Fair value plus accrued interest

851909.1181

4

value of interest

420205.5521

5

value of fixed payment

431703.566

6

BPV on risk-free curve

-287.78798

7

number of days that interest accrues

0

8

next coupon payment date

1-Jun-2006

9

previous coupon payment date

1-Dec-2005

10

remaining coupons

10

11

total outstanding bond principal

20000000

12

accumulated loss

0

13

outstanding principal of the tranche

1000000

where the input data tables in the input list are:

table_dates:  contract dates table

Maturity Date

Effective Date

1-Dec-2010

1-Dec-2005

table_tranche:  tranche definition

Lower Bound

Upper Bound

0.1

0.15

table_cpn:  coupon and fixed payment table

Date

Notional

Coupon

Fixed Payments

1-Dec-2010

1000000

0.12

1000000

 

*       Note that the principal payment must be put in table_cpn as a fixed payment at maturity.

 

table_freq:  frequency and other related inputs

Frequency

Coupon Accrual Type

Accrual Method

Business Day Convention

2

1

2

1

table_his:  historical statistics

Accumulated Loss

Total Initial Principal

Total Matured Bond Principal

0

0

0

 

Present value cash flow table

To calculate the present values of cash flows, call the FINCAD function aaCDO_tranche_cf with table_type = 3 in order to get the following outputs:

Date

Present Value of Interest

Present Value of Principal

Total

1-Jun-2006

59284.61167

0

59284.6117

1-Dec-2006

57866.66425

0

57866.6642

1-Jun-2007

51866.56652

0

51866.5665

1-Dec-2007

46705.95541

0

46705.9554

1-Jun-2008

42939.92033

0

42939.9203

1-Dec-2008

39079.23766

0

39079.2377

1-Jun-2009

35222.1071

0

35222.1071

1-Dec-2009

31935.31879

0

31935.3188

1-Jun-2010

28971.25288

0

28971.2529

1-Dec-2010

26333.91752

431703.566

458037.483

 

Par coupon rate

To get the coupon rate for a tranche priced at par, call the FINCAD function aaCDO_tranche_par with the following inputs:

aaCDO_tranche_par

Argument

Description

Example Data

Switch

d_v

value (settlement) date

1-Dec-2005

 

contra_d

CDS contract dates

table_dates

 

price

price

1000000

 

tranche_type

type of tranche definition

1

tranche boundaries are proportional to the total notional

tranche

tranche boundaries

table_tranche

 

loss_absorb

portion of loss absorption in the tranche

1

 

cpn_tbl

notional and fixed payment table

table_notion

 

notion_adj

notional adjustment

1

adjusted for fixed payments but not for matured bonds

freq_tbl

coupon and frequency table

table_freq

 

bond_bskt

bond basket table

above

 

bond_his

bond historical statistics

table_his

 

fix_cum

accumulated fixed payments

0

 

corr_mat

credit index correlation matrix

0.4

 

meth_corr

method of handling credit correlation

2

normal copula

prob_bskt

default probability curve

table_prob

 

intrp_prob

interpolation method of probability curve

1

linear

hl

holiday list

0

 

df_crv_std

discount factor curve – risk free

table_df

 

intrp

interpolation method

1

linear

MC_para

parameters for Monte Carlo simulation

50000.5

 

stat

stat list

1

 

where the notional principal table is given as follows:

table_notion:  notional and fixed payment table

Date

Notional

Fixed Payments

1-Dec-2010

1000000

1000000

 

Results

Output Statistics

Description

Value

1

par coupon rate

0.162290983

Risk statistics

To find out the sensitivity of the fair value to a subset of entities in the pool, e.g., entity 1 and 2 in the list, call the FINCAD function aaCDO_tranche_delta with a random trial number of 50, 000.5 to get the following results:

Results

Delta of Credit Spread

Entity Number

0.013166827

1

0.096210315

2

 

Related Functions

All functions explained in the Synthetic CDOs Valuation Using Quasi-Analytic Methods FINCAD Math Reference document and functions listed below:

aaCDS

aaCDS_bskt

 

References

[1]          Fabozzi, F. and L. Goodman, (2001), Investing in Collateralized Debt Obligations, New Hope, J. Fabozzi Associates.

[2]          Merrill Lynch, (June 2004) ‘Standardized Tranches’, Credit Derivatives Research.

[3]          Schonbucher, P. J., (2003) Credit Derivatives Pricing Models, Models, Pricing and Implementation, Wiley Finance.

 

 

Disclaimer

 

With respect to this document, FinancialCAD Corporation (“FINCAD”) makes no warranty either express or implied, including, but not limited to, any implied warranty of merchantability or fitness for a particular purpose. In no event shall FINCAD be liable to anyone for special, collateral, incidental, or consequential damages in connection with or arising out of the use of this document or the information contained in it. This document should not be relied on as a substitute for your own independent research or the advice of your professional financial, accounting or other advisors.

 

This information is subject to change without notice. FINCAD assumes no responsibility for any errors in this document or their consequences and reserves the right to make changes to this document without notice.

 

Copyright

 

Copyright © FinancialCAD Corporation 2008. All rights reserved.