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.
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.
|
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 |
|
|
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. |
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.
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.
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 |
|
|
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 |
[1]
Francis, J. C., Frost, J. A. and Whittaker J.
G., (1999), The Handbook of Credit Derivatives,
[2]
[3]
Nelken, I., (1999), Implementing
Credit Derivatives,
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.