Total Return Swaps on Fixed Income

Overview

A total return swap (TRS) is a bilateral financial contract in that one counterparty pays out the total return of a specified asset, including any interest payment and capital appreciation or depreciation, in return receives a regular fixed or floating cash flow.  Typical reference assets of total return swaps are corporate bonds, loans and equities.  A total return swap can be settled at the terminating date only or periodically, e.g., quarterly.  For convenience we call the asset’s total return a TR-leg and the fixed or floating cash flow a non-TR leg.  This article addresses TRS on bonds, loans and other similar structures.  For total return swaps on equities see the Total Return Equity Swaps and Equity Forwards FINCAD Math Reference document.

A total return swap is a means to transfer the total economic exposure, including both market and credit risk, of the underlying asset.  The payer of a total return swap can confidentially remove all the economic exposure of the asset without having to sell it.  The receiver of a total return swap, on the other hand, can access the economic exposure of the asset without having to buy the asset.  For example, a bank that keeps a huge book of loans may want to reduce its economic exposure to some of its loans, but want to keep its relationship with the customers who have the loans.  The bank can enter into a total return swap with a counterparty, e.g., a pension or a hedge fund that wants to gain economic exposure to the high yield loan market.

Valuation of a total return swap is not difficult.  For valuing the total return of the reference asset one only needs to figure out the interest cash flow of the reference asset up to the terminating date of the total return swap, the forward prices at future reset dates and their present values.  The main issue that must be addressed is the credit risk of the underlying asset.  The credit risk must be taken care of cautiously sometimes.  For example, as a result of credit risk the present value of future price return at two time points is not just the present value of the forward price difference at these time points because of the difference in the default scenarios at the two time points.  Assuming that credit risk and interest rate risk are independent the method to value cash flows of the TR leg of a return swap are parallel to those for valuing credit default swaps (see the document Credit Default Swaps for details).  For the non-TR leg it is simply a fixed leg or a floating leg of an interest rate swap.  One can use swap functions, such as, aaFixlg_p, aaFloatlg_p or aaFRN in the FINCAD math library, to value such fixed or floating cash flows.

FINCAD provides functions to value total return swaps on bonds and loans.  These functions produce for a total return swap interest rate cash flow tables and price return tables, calculate fair value and risk statistics and also calculate a par coupon rate of a fixed non-TR leg and a par spread of a floating non-TR leg.

 

FINCAD Functions

aaCredit_TR_cf_prob2(d_v, contra_d, bond_12, hl, prob_crv, intrp_prob, rate_recover, df_crv_std, intrp, calc_type, output_type):

Given a default probability curve of a defaultable bond, calculates the bond's cash flows and their present values over a given time period.

 

aaCredit_TR_pret_prob2(d_v, contra_d, price, freq_price_reset, d_rul, bond_12, hl, prob_crv, intrp_prob, rate_recover, df_crv_std, intrp, calc_type, output_typ):

Given a default probability curve of the issuer of a defaultable bond, calculates the bond's price returns and their present values over periodic time periods.

 

aaCredit_TR_p_prob2(d_v, contra_d, price, freq_price_reset, d_rul, bond_12, hl, prob_crv, intrp_prob, rate_recover, df_crv_std, intrp, calc_type, stat):

Given a default probability curve of the issuer of a defaultable bond, calculates the fair value and risk statistics of the bond's total return over a given time period.

 

aaCredit_TR_par_prob2(d_v, contra_d, price, freq_price_reset, d_rul, bond_12, hl, prob_crv, intrp_prob, rate_recover, df_crv_std, intrp, fixorfloat, npa, freq_pay, acc_pay_fixfl, acc_accrued_fixfl, d_rul_pay, df_crv_float, calc_type, stat):

Given a default probability curve of the issuer of a defaultable bond, calculates for the non-TR leg of a total return swap the par coupon rate of a fixed leg or the par spread of a floating leg.

 

aaCredit_TR_fs_cf_prob2(d_v, contra_d, bondcpn, bondnpa, acc_fs, prob_crv, intrp_prob, rate_recover, df_crv_std, intrp, calc_type, output_type):

Given a default probability curve of the issuer of a custom structure (a custom bond or a set of user-defined loans), calculates the structure’s cash flows and their present values over a given time period.

 

aaCredit_TR_fs_pret_prob2(d_v, contra_d, price, freq_price_reset, d_rul, bondcpn, bondnpa, acc_fs, prob_crv, intrp_prob, rate_recover, df_crv_std, intrp, calc_type, output_type):

Given a default probability curve of the issuer of a custom structure (a custom bond or a set of user-defined loans), calculates the structure's price returns and their present values over periodic time periods.

 

aaCredit_TR_fs_p_prob2(d_v, d_e, d_t, price_reset, freq_price_reset, d_rul, bondcpn, bondprinc, acc_fs, prob_crv, intrp_prob, t_recover, acc_time, df_crv_std, intrp, calc_type,stat):

Given a default probability curve of the issuer of a custom structure (a custom bond or a set of user-defined loans), calculates the fair value and risk statistics of the structure's total return over a given time period.

 

aaCredit_TR_fs_par_prob2(d_v, contra_d, price, freq_price_reset, d_rul, bond_12, hl, prob_crv, intrp_prob, rate_recover, df_crv_std, intrp, calc_type, stat):

Given a default probability curve of the issuer of a custom structure (a custom bond or a set of user-defined loans), calculates for the non-TR leg of a total return swap the par coupon rate of a fixed leg or the par spread of a floating leg, assuming that the notional of the non-TR leg remains constant.

 

aaCredit_TR_fs_par_amort(d_v, contra_d, price, freq_price_reset, d_rul, bondcpn, bondnpa, acc_fs, prob_crv, intrp_prob, rate_recover, df_crv_std, intrp, calc_type, fixorfloat, npa, freq_pay, acc_payment, acc_interest, d_rul_pay, hl, df_crv_float, output_type):

Given a default probability curve of the issuer of a custom structure (a custom bond or a set of user-defined loans), calculates for the non-TR leg of a total return swap of the par coupon rate of a fixed leg or the par spread of a floating leg, assuming that the notional of the non-TR leg amortizes.

 

aaCredit_TR_cf_sp2(d_v, contra_d, sprdorprice, RorP_data, rate_recover, bond_12, hl, df_crv_std, intrp, calc_type, output_type):

Given a yield spread or price of a defaultable bond, calculates the bond's cash flows and their present values over a given time period.

 

aaCredit_TR_pret_sp2(d_v, contra_d, price, freq_price_reset, d_rul, sprdorprice, RorP_data, rate_recover, bond_12, hl, df_crv_std, intrp, calc_type, output_type):

Given a yield spread or price of a defaultable bond, calculates the bond's price returns and their present values over periodic time periods.

 

aaCredit_TR_p_sp2(d_v, contra_d, price, freq_price_reset, d_rul, sprdorprice, RorP_data, rate_recover, bond_12, hl, df_crv_std, intrp, calc_type, stat):

Given a yield spread or price of a defaultable bond, calculates the fair value and risk statistics of the bond's total return over a given time period.

 

aaCredit_TR_par_sp2(d_v, contra_d, price, freq_price_reset, d_rul, sprdorprice, RorP_data, rate_recover, bond_12, hl, df_crv_std, intrp, fixorfloat, npa, freq_pay, acc_pay_fixfl, acc_accrued_fixfl, d_rul_pay, df_crv_float, calc_type, stat):

Given a yield spread or price of a defaultable bond, calculates for the non-TR leg of a total return swap of the par coupon rate of a fixed leg or the par spread of a floating leg.

 

Description of Inputs

Input Argument

Description

d_v

Valuation date

contra_d

Contract dates table of a total return swap.  It can hold up to 6 entries.  For cash flow functions, whose names have the suffix "_cf", it can have up to two entries.  For price return functions, the "_pret" functions, and the total return value functions, the "_p" functions, it can have up to 4 entries.  For other functions it can have up to 6 entries.  Only the first entry of the maturity date of the swap is required.  Default entries have a 0 value.  The second entry has the effective date, the third and fourth entries have the odd reset date and odd last reset date.  The fifth and sixth entries can hold the first odd coupon date and the last odd coupon date for a non-TR leg.

d_rul

Business date convention of a total return swap - a switch

bond_tbl

A 12-column table of bond data (princ_m, d_m, d_dated, d_f_cpn, d_l_cpn, cpn, freq, redem_val, acc_x, d_rul, exdays, adj_units).  See aaBond3_p for more details.

hl

Holiday list

prob_crv

A default probability curve.  It can be a two or three column table.  The first column can be time in years (>=0 and <1000 ), or dates (>=1000) and the second default probability values.  Time and date must be increasing.  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 third column.  For a date based curve, the first value of the second column must be 0 and the first date must be the valuation date.  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 D, W, M and Y stands for calendar day, week, month and year respectively, e.g., 3M = 3 months.

intrp_prob

Interpolation method of a probability curve, a switch:  

1.       linear

2.       exponential  

For both interpolation methods, if curve extension is needed, the exponential extrapolation method is always used for curve extension.

rate_recover

Expected recovery rate table.  It can be of 4 types:  

1.       a one-entry table which has the recovery rate for both principal and coupon.  

2.       a two-entry table which has the recovery rates for principal (the first entry and coupon (the second entry) respectively.  

3.       a three-column table which is a time-dependent recovery rate table for principal and coupon.  The first column has time in years.

4.       a four-column table which is similar to a three-column table except that the entry in the first row of the fourth column holds the delay time (in years) for the recovery payment.  The default recovery delay time is 0, which represents the assumption that recovery is made immediately at default.

df_crv_std

Risk-free discounting factor curve

intrp

Interpolation method

SpreadorPrice

Use a spread or bond price - a switch.  This switch has three values:

1.       bond yield spread,

2.       rate spread over the risk-free discount factor curve,

3.       bond price.

RorP_data

It can be a 1- or 2 - or 3 - entry table.  If SpreadorPrice = 1 or 3, it has the bond yield or spot price respectively.  In these cases only one entry is needed.  For the other case where SpreadOrPrice = 2, its first entry has the spread value, the second entry the compounding frequency (switch sw_43) and the third the accrual method (switch sw_331).  The default value of the second and third entries is 1.

bondcpn

Free-style bond coupon payment table.  A four-column table (effective date, terminating date, notional principal, rate).  If a coupon's terminating date <= d_v or  its effective date >= terminating date then the coupon is ignored.

bondnpa

Free-style bond fixed payment table.  It is a two-column table: (date, payment).  The dates of the table must be in increasing order.  The larger of the last date and the maximum terminating date in the table bondcpn must be larger than the terminating date of the total return swap.  Payment paid prior to, or equal to, the valuation date is ignored.

acc_fs

Accrual method(s) of a free-style bond.  If it has only one entry, both future coupon payments and accrued interests have the same accrual method; otherwise they are the first and second entries of the table, respectively.

output_type

In coupon cash flow functions:

1.       cash flow table,

2.       total present value of cash flow.  

In price return cash flow functions,

1.       price return table,

2.       total present value of price return.

In aaCredit_TR_fs_par_amort,

1.       par coupon rate or spread,

2.       notional table (date, notional) of the non-TR leg.

price_reset

Reset price of a reference asset.  If there is no reset, this is the initial price of the asset.  If d_v < effective date Or d_v = effective date and price_reset = 0, the reset price will be calculated.

freq_price_reset

Price reset (settlement) frequency - a switch.  It has 5 possible values,

1.       annual,

2.       semi-annual,

3.       quarterly,

4.       monthly,

5.       no reset.  The default value is 5.  Here "no reset" means that the price return of the reference asset is settled at the swap's termination only.

calc_type

Type of calculation method - a switch.  For most functions the switch has four values.  They represent different integration methods for calculating values of premiums and payoffs.  There are four selections:

1.       simplified calculation method;

2.       extended trapzoidal,

3.       Simpson's rule,

4.       extended Simpson's rule.  

For the functions that have names with the suffix "_sp2" the switch has an extra value

5.       using a risky discount factor curve.  For this method a risky discount factor curve is built directly from the input spread or bond price to calculate the bond's total return value, while for the other methods, a default probability curve is built first with the bond data and then the function aaCredit_TR_p_prob2 is used to calculate the total return leg.

acc_cpn

Accrual method of non-TR leg coupons

acc_accrued

Accrual method of accrued interests of a non-TR leg

d_rul_pay

Business date convention of non-TR leg payments - a switch

stat

Statistics: any subset of {1,…10} for aaCredit_TR_p_prob2 and aaCredit_TR_p_sp2, and any subset of {1,…11} in aaCredit_TR_fs_p_prob.  For the functions aaCredit_par_prob2, aaCredit_par_sp2 and aaCredit_fs_par_prob2 it can be any sub set of {1,2}.

fixorfloat

Payment type of the non-TR leg - a switch.

1.       fixed coupon,

2.       floating coupon.

npa

Notional principal amount of the non-TR leg payments.  If it is not set, it will be calculated as the bond's forward price at the effective date.

 

Description of Outputs

aaCredit_TR_cf_prob2 and aaCredit_TR_cf_sp2

Output

Type

Description

Column 1

Date

date

Column 2

Number

cash flow

Column 3

Number

accrued interest

Column 4

Number

present value

Column 5

Number

clean present value

Column 6

Number

risk-free discount factor

Column 7

Number

default probability

Column 8

Rate

principal recovery rate

Column 9

Rate

coupon recovery rate

If d_v >= d_e, the first row has the accrued interest at the value date; otherwise, it has the accrued interest at the effective date of the total return swap.  A present value is either the present value of a cash flow or that of an accrued interest.  The clean (present) value of a cash flow is the same as the present value except for the first row, whose clean value is 0, and the second row, whose clean value is the present value of the second row minus the present value of the accrued interest of the first row.

aaCredit_TR_fs_cf_prob2

Output

Type

Description

Column 1

Date

date

Column 2

Number

interest

Column 3

Number

principal

Column 4

Number

total cash flow

Column 5

Number

accrued interest at valuation/effective date

Column 6

Number

accrued interest at terminating date

Column 7

Number

present value of interest

Column 8

Number

present value of principal payment

Column 9

Number

total present value

Column 10

Number

present value of an accrued interest at the effective date

Column 11

Number

present value of an accrued interest at a terminating date

Column 12

Number

clean value

The cash flow table outputs cash flows or accrued interests that fall into the time period of the valuation date and terminating date of the total return swap.  The table is sorted according to the ordering of dates and for each date cash flows are aggregated.  If the valuation date is larger than the effective date, an accrued interest at valuation/effective date is an accrued interest at the valuation date; otherwise it is an accrued interest at the effective date.  The clean value of a cash flow (a true cash flow or accrued interest at terminating date plus principal cash flows, if any, at this date) is the difference of the present value of the cash flow and the present value of an accrued interest at the valuation/effective date.

aaCredit_TR_pret_prob2, aaCredit_TR_pret_sp2 and aaCredit_TR_fs_pret_pro2

Output

Type

Description

Column 1

Date

date

Column 2

Number

forward price

Column 3

Number

expected (i.e. no-default) value of the forward price

Column 4

Number

expected price return

Column 5

Number

present value of price return

Column 6

Number

nominal price return

Column 7

Number

survival probability

Column 8

Rate

risk-free discount factor

The output tables of these functions are eight-column tables of price return information.  The first row always displays the reset price as a forward price at the valuation date.  The expected price return at the second row is the difference of the expected value of forward price at the second row and the reset price.  For , the  expected price return is the difference of the expected value of forward price at the ith row and that of  row.  The ith nominal price return is the difference of the ith and  row forward prices.

aaCredit_TR_p_prob2, aaCredit_TR_p_sp2 and aaCredit_TR_fs_p_prob2

Output Statistic

Type

Description

1

Number

fair value (clean price)

2

Number

present value of accrued interest at valuation/delivery date

3

Number

fair value plus accrued interest

4

Number

present value of bond price return

5

Number

present value of bond coupons

6

Number

value of bond coupons plus accrued interest

7

Number

bond clean price

8

Number

bond dirty price

9

Number

BPV (fair value change per one basis up shift of the risk free curve)

10

Rate

rate spread of the risky bond over the risk-free curve

11

Number

accrued interest (at the valuation/effective day)

aaCredit_TR_par_prob2, aaCredit_TR_par_sp and aaCredit_TR_fs_par_prob

Output Statistic

Type

Description

1

rate

coupon rate or spread

2

Number

notional principal amount

For stat 1, if the non-TR leg has a fixed coupon rate these functions output the par coupon rate of the fixed leg, otherwise, a par coupon spread over floating coupon rates of a floating rate curve, e.g., a Libor curve.  A par coupon rate is the coupon rate that makes the total return swap has a present value of 0.  A par spread is the spread over the floating interest rates of a floating rate curve that makes the present value of a total return swap have a present value of 0.  For stat 2, the outputs of these functions are the notional principal of the non-TR leg.  If it is given, it is outputted directly; otherwise, it is calculated as the spot bond clean price if d_v >= d_e or the bond forward price at the effective date if d_v < d_e.

Examples

Example 1: Total return swap on a regular corporate bond

A bank holds a large position of a bond of a high-tech company.  The bank feels that although the company has made several important inventions in technology, it will take at least 5 years for the company to start to make any profit from these inventions.  During the following several years the company will continue to loose money and its bond price may go down further and the company may even default if the melting down of the high tech industry persists.  The bank wants to get out from the short term uncertainty of the bond but wants to keep the bond for future profitability.  To achieve this it entered into a total return swap with an investment company, who believes that the downturn of the high-tech industry has reached its bottom and the bond of the high-tech company is significantly under-valued.

The total return swap started Oct. 1, 2001 and will mature at Oct. 1, 2007.  It resets quarterly.  The bond has a principal of 1,000,000 and a coupon rate of 10%, paid semi-annually.  The bond will mature at Oct. 1, 2015 and has a present value of 100 per 100 par.  During the lifetime of the total return swap, the investment company will receive all the coupons of the bond as well as its price appreciation or depreciation, in return, it will pay the bank 2.0% spread over Libor quarterly on a notional of 1000000.  The current reset rate of the floating payments is 2.2%.  Today’s date is Oct. 1, 2002.  Suppose the bond has the accrual method 30/360, the Libor rate has the accrual method of actual/365 (actual) and calendar days are used for day counting.  Suppose further that the bond’s issuer has the default probability curve given as follows:

Default Probability Curve

term (in years)

default probability

1

0.022031639

2

0.046242249

3

0.072660268

4

0.101233086

5

0.131884986

and a recovery rate of 25% for both coupon and principal, the time accrual method of the default probability curve is 30/360 and the risk-free treasury discount factor curve and the spot Libor discount factor curve are given as follows:

Risk Free Curve

 

Libor

grid date

discount factor

 

grid date

discount factor

1-Oct-2002

1

 

1-Oct-2002

1

3-Jan-2003

0.9961085

 

6-Jan-2003

0.9969173

1-Mar-2004

0.9708528

 

7-Apr-2003

0.9896652

15-Feb-2005

0.9444831

 

1-Oct-2004

0.9558796

15-Feb-2006

0.910439

 

7-Mar-2005

0.9383724

15-Feb-2007

0.8776221

 

6-Sep-2005

0.9209978

15-Feb-2008

0.83994

 

6-Mar-2006

0.9012652

15-Feb-2009

0.7981108

 

5-Sep-2006

0.8817442

15-Feb-2010

0.7584706

 

5-Mar-2007

0.8607091

15-Feb-2011

0.7207992

 

5-Sep-2007

0.8398396

15-Feb-2012

0.6849988

 

5-Mar-2008

0.8182203

15-Feb-2013

0.6489791

 

5-Sep-2008

0.7969291

18-Feb-2014

0.6128812

 

5-Mar-2009

0.7752835

17-Feb-2015

0.5791514

 

8-Sep-2009

0.7535376

16-Feb-2016

0.5472778

 

5-Mar-2010

0.7329819

15-Feb-2017

0.517078

 

7-Sep-2010

0.7121012

Using the FINCAD function aaCredit_TR_p_prob2 we get the following results:

aaCredit_TR_p_prob2

Argument

Description

Example Data

Switch

d_v

value (settlement) date

1-Oct-2002

 

contra_d

CDS contract dates

see below

 

price

reset price per 100 par

100

 

freq_price_reset

frequency of price reset

3

quarterly

d_rul

business day convention

1

no date adjustment

bond_12

bond table

see below

 

hl

holiday list

0

 

prob_crv

default probability curve

see above

 

intrp_prob

interpolation method of probability curve

1

linear

rate_recover

recovery rate table

0.25

 

df_crv_std

discount factor curve – risk free

risk-free curve

 

intrp

interpolation method

1

linear

calc_type

type of calculation

1

simplified calculation method

stat

stat list

1…10

 

Contract Dates Table

maturity date

effective date

1-Oct-2007

1-Oct-2001

Bond Data Table

principal

maturity date

dated date

first coupon date

last coupon date

coupon

1000000

1-Oct-2015

0

0

0

0.1

 

 

 

 

 

 

redemption per 100 par

frequency

accrual method

business day convention

exdividend day units

date adjustment

100

2

14

1

0

1

Results

Statistics

Description

Value

1

fair value (clean price)

243028.7

2

accrued interest

0

3

fair value + accrued interest

243028.7

4

present value of bond price return

-173195

5

present value of bond coupons

416224.1

6

value of bond coupons + accrued interest

416224.1

7

bond clean price

1150739

8

bond dirty price

1150739

9

basis point value (fair value change per one basis up shift of risk free curve)

-482.016

10

rate spread of risky bond over risk-free curve

0.041074

Use aaFloatlg_p to calculate the value of the non-TR leg as 258404.9. Hence the present value of the TRS is:

243028.7 - 258404.9  = -15376.1.

Suppose the non-TR leg is a floating leg with semi-annual coupon payment frequency and the accrual mehod act/365.  Call the function aaCredit_TR_par_prob2 to get the following results:

aaCredit_TR_par_prob2

Argument

Description

Example Data

Switch

d_v

value (settlement) date

1-Oct-2002

 

contra_d

CDS contract dates

see below

 

price

reset price per 100 par

100

 

freq_price_reset

frequency of price reset

3

quarterly

d_rul

business day convention

1

no date adjustment

bond_12

bond table

see above

 

hl

holiday list

0

 

prob_crv

default probability curve

see above

 

intrp_prob

interpolation method of probability curve

1

linear

rate_recover

recovery rate table

0.25

 

df_crv_std

discount factor curve – risk free

risk-free curve

 

intrp

interpolation method

1

linear

fixorfloat

fixed or floating rate payment

2

floating rate

npa

notional principal amount

1000000

 

freq_pay

frequency of fixed or floating payment

3

quarterly

acc_pay_fixfl

accrual method for fixed/floating payments

4

30/360 (ISDA)

acc_accrued_fixfl

accrual method for accrued interest of fixed/floating payments

4

30/360 (ISDA)

d_rul_pay

business day convention for fixed/floating payment dates

1

no date adjustment

df_crv_float

discount factor curve of fixed/floating payment

Libor

 

calc_type

type of calculation

1

simplified calculation method

stat

stat list

1…2

 

Contract Dates Table

maturity date

effective date

1-Oct-2007

1-Oct-2001

Results

Statistics

Description

Value

1

coupon rate or spread

0.017232

2

notional principal amount

1000000

In the above example, if the default probability is unknown and, instead, the bond price or the yield spread over the risk-free curve is given, one can use the function aaCredit_p_sp2 to value the total return swap and aaCredit_TR_par_sp2 to find out the par spread over Libor rates.

Example 2:  Total return swap on a loan book

Suppose in example 1 the total return swap is not on a regular bond, instead, is a loan book which has cash payment schedules given as in the following two tables:

Coupon Payment Table

effective date

terminating date

notional principal amount

rate

14-Jan-2002

14-Jan-2003

1000000

0.07

14-Jan-2003

14-Jan-2004

1000000

0.07

1-Jul-2003

2-Jan-2004

5000000

0.08

2-Jan-2004

1-Jul-2004

5000000

0.08

1-Jul-2004

1-Jul-2005

5000000

0.08

1-Jul-2005

3-Jul-2006

5000000

0.08

3-Jul-2006

3-Jul-2007

5000000

0.08

3-Jul-2007

3-Jul-2008

5000000

0.08

Fixed Payment Table

payment date

payment amount

15-Jan-2004

30000

15-Mar-2006

10000

Using the FINCAD function aaCredit_TR_fs_p_prob2, we get the following results:

aaCredit_TR_fs_p_prob2

Argument

Description

Example Data

Switch

d_v

value (settlement) date

1-Oct-2002

 

contra_d

CDS contract dates

see below

 

price

reset price per 100 par

1600000

 

freq_price_reset

frequency of price reset

3

quarterly

d_rul

business day convention

1

no date adjustment

loanCpn

coupon table

see above

 

loanfixed_tbl

fixed payment table

see above

 

acc_fs

accrual method(s) of bond coupon

1

actual/365 fixed

prob_crv

default probability curve

see example 1

 

intrp_prob

interpolation method of probability curve

1

linear

rate_recover

recovery rate table

0.25

 

df_crv_std

discount factor curve – risk free

see above

 

intrp

interpolation method

1

linear

calc_type

type of calculation

1

simplified calculation method

stat

stat list

1…10

 

Contract Dates Table

maturity date

effective date

1-Oct-2007

1-Oct-2001

Results

Statistics

Description

Value

1

fair value (clean price)

206401.8

2

present value of accrued interest at valuation/delivery date

49863.01

3

fair value plus present of accrued interest

256264.8

4

fair value of forward price return

-1275401

5

present value of bond coupons

1481803

6

present value of bond coupons plus present value of accrued interest

1531666

7

bond clean price

1668845

8

bond dirty price (clean price + accrued interest at valuation date)

1718708

9

basis point value (fair value change per one basis point shift of risk free curve)

-124.164

10

rate spread over risk-free curve

0.043893

11

accrued interest at valuation/delivery date

49863.01

Suppose the non-TR leg is a fixed leg on a notional of 1,000,000 that pays a coupon of 4.5% quarterly on the basis of 30/360. Call the function aaFixlg_p to get the value of the non-TR leg as 185191.7. The value of the TRS is then:

206401.8 - 185191.7 = 21210.04

To calculate the par coupon rate call the function aaCredit_TR_fs_par_prob2 to get the following results:

aaCredit_TR_fs_par_prob2

Argument

Description

Example Data

Switch

d_v

value (settlement) date

1-Oct-2002

 

contra_d

CDS contract dates

see below

 

price

reset price per 100 par

1600000

 

freq_price_reset

frequency of price reset

3

quarterly

d_rul

business day convention

1

no date adjustment

loanCpn

coupon table

see above

 

loanfixed_tbl

fixed payment table

see above

 

acc_fs

accrual method(s) of bond coupon

1

actual/365 fixed

prob_crv

default probability curve

see above

 

intrp_prob

interpolation method of probability curve

1

linear

rate_recover

recovery rate table

0.25

 

df_crv_std

discount factor curve - risk free

see above

 

intrp

interpolation

1

linear

calc_type

calculation type

1

simplified calculation method

fixorfloat

fixed or floating rate payment

1

fixed rate

npa

notional principal amount

1000000

 

freq_pay

frequency of fixed or floating payment

2

semi-annual

acc_pay_fixfl

accrual method for fixed/floating payments

2

actual/360

acc_accrued_fixfl

accrual method for accrued interest of fixed/floating payments

2

actual/360

d_rul_pay

business day convention for fixed/floating payment dates

1

no date adjustment

hl

holiday list

0

 

df_crv_float

discount factor curve of fixed/floating payment

libor

 

stat

stat list

1…2

 

Contract Dates Table

maturity date

effective date

1-Oct-2007

1-Oct-2001

Results

Statistics

Description

Value

1

coupon rate or spread

0.047466

2

notional principal amount

1000000

 

*       Remark:   In example 2, in calculating the par coupon rate, it is assumed that the notional of the non-TR leg does not change during the life of the swap.  If the notional principal amortizes, i.e., the amount of fixed payment is subtracted from the notional amount at the time the payment is made, we can use the function aaCredit_TR_fs_par_amort to calculate the par coupon rate and the amortizing notional table.  Here are the results:

 

aaCredit_TR_fs_par_amort

Argument

Description

Example Data

Switch

d_v

value (settlement) date

1-Oct-2002

 

contra_d

CDS contract dates

see below

 

price

reset price per 100 par

1600000

 

freq_price_reset

frequency of price reset

3

quarterly

d_rul

business day convention

1

no date adjustment

loanCpn

coupon table

see above

 

loanfixed_tbl

fixed payment table

see above

 

acc_fs

accrual method(s) of bond coupon

1

actual/365 fixed

prob_crv

default probability curve

see above

 

intrp_prob

interpolation method of probability curve

1

linear

rate_recover

recovery rate table

0.25

 

df_crv_std

discount factor curve - risk free

see above

 

intrp

interpolation

1

linear

calc_type

calculation type

1

simplified calculation method

fixorfloat

fixed or floating rate payment

1

fixed rate

npa

notional principal amount

1000000

 

freq_pay

frequency of fixed or floating payment

2

semi-annual

acc_payment

accrual method for coupon payments

2

actual/360

acc_interest

accrual method for accrued interest

2

actual/360

d_rul_pay

business day convention for fixed/floating payment dates

1

no date adjustment

hl

holiday list

0

 

df_crv_float

discount factor curve of fixed/floating payment

Libor

 

stat

stat list

1…2

 

Results

Statistics

Description

Value

1

par coupon rate

0.046246

Output Table:  Notional Table

Date

Notional

1-Apr-2003

1000000

1-Oct-2003

1000000

1-Apr-2004

1000000

1-Oct-2004

970000

1-Apr-2005

970000

1-Oct-2005

970000

1-Apr-2006

970000

1-Oct-2006

960000

1-Apr-2007

960000

1-Oct-2007

960000

 

References

[1]          Francis, J. C., Frost, J. A. and Whittaker J. G., (1999), The Handbook of Credit Derivatives, Toronto, McGraw-Hill.

[2]          Hull, J. and White, A., (Fall 2000), ‘Valuing Credit Default Swaps I, No Counterparty Default Risk’, The Journal of Derivatives, 8 (1), p. 29-40.

[3]          Nelken, I., (1999), Implementing Credit Derivatives, Toronto, McGraw-Hill.

 

 

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.