This document is organized for each bond type (Periodic,
Level Coupon Bonds; Periodic Bonds with Time Varying Notional; and Coupons and Custom
or Freestyle Bonds) into the following sections:
Let:
be the dirty
price of a bond (per 100 par).
be the yield.
be related to the
frequency of the yield, where
= 1, 2, 4, 12 if the
frequency is annual, semi-annual, quarterly or monthly.
as a function of
, is given by:
where
is the
coupon and
the time
(in years) from the settle date to the
coupon date.
The derivative of with respect to
is
,
while the second derivative is
Definition: Modified
duration,
Definition: Duration (macaulay),
Definition: Convexity,
Definition: Basis
point value is obtained by setting = 0.0001 in the 2nd
order
Note:
This demonstrates how the modified duration and convexity can be used to
approximate price changes as a function of changes in yield. Price in the
formula is the dirty price of the bond.
Definition: the
Yield value of a one basis point change in price is the derivative of the yield
with respect to the price multiplied by 0.01.
The following yields are returned by the function aaBond*_yields():
Domestic yield (yield to maturity) |
Equivalent Annually Compounded Domestic yield. |
Equivalent Semi-Annually Compounded Domestic yield. |
True yield (same compounding and accrual as domestic yield
but the cash flows are adjusted for business days) |
True yield, annually compounded, Act/365 accrual (cash
flows are adjusted for business days) |
True yield, semi-annually compounded, Act/365 accrual
(cash flows are adjusted for business days) |
Equivalent |
Equivalent US Treasury yield (semi-annually compounded,
Actual / Actual accrual). |
Equivalent JGB (Japanese) simple yield |
Equivalent money market yield, Act/365 accrual |
Equivalent money market yield, Act/360 accrual |
The equivalent annually compounded
and semi-annually compounded yields are simply calculated by
taking the domestic yield and converting the basis (using, for example, the
FINCAD function aaConvert_cmpd() or aaConvert_cmpd2()).
The true yield is calculated by taking the actual
adjusted cash flows (adjusted to the next good business day) and, using the
same basis and accrual as the domestic yield, calculating the yield to maturity
(given the dirty price of the bond). Related FINCAD yield to maturity functions
which may be of interest are aaYTM(), aaYTM2() and aaYTM3().
The annually and semi-annually compounded true yields act/365
(actual) are calculated as described in the true yield with, of
course, different bases and accruals.
These yields are interesting because they will be standard across
different classes of bonds.
The equivalent
The equivalent US Treasury yield
is a semi-annually compounded yield with an actual/actual (ISMA-99)
accrual. The difference from the Street
yield is that in the first coupon period, the yield is linear.
The Equivalent money market yields are calculated
as follows. If the time to maturity of
the bond is less than or equal to one year, the yield to maturity, , is calculated from the formula:
.
where
is the time from the
th cash flow to maturity,
is the time from the
value date to maturity, and
is the dirty price of
the bond.
If the time to maturity, , is greater than one year, the annually compounded yield to
maturity is returned. The relevant
related FINCAD function is aaYTM_mmkt().
The equivalent JGB yield (simple yield) is
calculated from
,
where
is the clean price of
the bond and
is the time to
maturity in years (calculated using act/365 (actual)).
For general level coupon bonds that pay periodically, but
may have odd dates, the most general functions are aaBond4* (aaBond4+an
extension). There are also suites of
functions aaBond3*,
aaBond2*
and aaBond*
which are slightly less general versions of aaBond4*, but
nevertheless, very useful.
aaBond4_p(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, cpn, princ, redempt, freq, acc, eom, yield,
linlast, exdivunits, adj_units, hl, weekend, atissue, stat)
Calculates the price and risk statistics given
yield. This function also
calculates bond properties such as accrued interest, number of remaining cash
flows, next cash flow date, etc.
aaBond4_y(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, cpn, princ, redempt, freq, acc, eom, price,
linlast, exdivunits, adj_units, hl, weekend, atissue, stat)
Calculates the yield and risk statistics given
price. This function also
calculates properties such as accrued interest, number of remaining cash flows,
next cash flow date, etc. The price is
input as a clean price (no accrued interest) per 100 notional (e.g. 101 or 99.275).
aaBond4_accrued(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, cpn, princ, freq, acc, eom, exdivunits,
adj_units, hl, weekend, atissue, stat)
Calculates the accrued interest and
other bond properties such as number of remaining cash flows, next cash flow
date, etc.
aaBond4_cf(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, cpn, princ, redempt, freq, acc, eom, hl, d_rul,
weekend, exdivunits, adj_units, atissue, table_type)
Calculates the bond’s cash flows. Several different types of cash flow related
tables can be returned. The most general
is a 6 column table with the columns being: cash flow date, coupon, principal,
total cash flow, accrued interest, and ex-dividend date.
aaBond4_yields(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, cpn, redempt, freq, acc, eom, linlast, price,
hl, weekend, exdivunits, adj_units, atissue, stat)
Calculates a variety of comparative yields given price. The price is input as a clean price (no accrued interest) per 100 notional (e.g. 101 or 99.275).
aaBond4_strip_p(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, cpn, princ, redempt, freq, acc, eom, hl, d_rul,
weekend, exdivunits, adj_units, atissue, intrp, df_crv, stat)
Calculates the price, yield, and risk
statistics given a term structure of interest rates (a discount
factor curve). The zero-coupon price of
each cash flow is calculated from the curve.
This function also calculates bond properties such as accrued interest,
number of remaining cash flows, next cash flow date, etc. The calculations are based on zero-coupon
pricing.
aaBond4_strip_cf(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, cpn, princ, redempt, freq, acc, eom, hl, d_rul,
weekend, exdivunits, adj_units, atissue, intrp, df_crv)
Calculates the cash flows and the present value
of each cash flow (the strip price) given a term structure of
interest rates (a discount factor curve).
aaBond4_strip_par(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, redempt, freq, acc, eom, hl, d_rul, weekend,
exdivunits, adj_units, atissue, intrp, df_crv)
Calculates the Par Yield or Par Coupon Rate
(i.e. the level coupon rate that would make the bond value to par) given a term
structure of interest rates (a discount factor curve) and a description of the
bond. The calculation is based on
zero-coupon pricing.
A suite of bond functions is available related to periodic
bonds with variable notional amounts and coupon rates. This suite of functions will handle many
amortizing, accreting, coupon step-up and coupon step-down type
structures. The functions are all called
aaBond2_dgen_*. The functions provide similar functionality as
the aaBond4*
suite of functions while allowing more flexible inputs. There is also a suite of functions, aaBond_dgen_*,
which have a combined accrual method and end-of-month switch (sw_376), and have
fewer accrual methods. In terms of
inputs, instead of Principal (princ_m), Redemption Value, (redemp_val)
and a Coupon rate (cpn), a table, BondCpn_tbl, is
input. The structure of this table is
shown in the example below.
aaBond2_dgen_p(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, bondcpn_tbl, freq, acc, eom, yield, linlast,
exdivunits, adj_units, hl, weekend, atissue, stat)
Calculates the price and risk statistics given
yield. This function also
calculates bond properties such as accrued interest, number of remaining cash
flows, next cash flow date, etc.
aaBond2_dgen_y(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, bondcpn_tbl, freq, acc, eom, price, linlast,
exdivunits, adj_units, hl, weekend, atissue, stat)
Calculates the yield and risk statistics given
price. This function also
calculates bond properties such as accrued interest, number of remaining cash
flows, next cash flow date, etc. We note
that the price is the total clean price (no accrued interest).
aaBond2_dgen_accrued(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, bondcpn_tbl, freq, acc, eom, exdivunits,
adj_units, hl, weekend, atissue, stat)
Calculates the accrued interest and
other bond properties such as number of remaining cash flows, next cash flow
date, etc.
aaBond2_dgen_cf(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, bondcpn_tbl, freq, acc, eom, hl, d_rul,
weekend, exdivunits, adj_units, atissue, table_type)
Calculates the bond’s cash flows. Several different types of cash flow related
tables can be returned. The most general
is a 6-column table with the columns being: cash flow date, coupon, principal,
total cash flow, accrued, and coupon ex-dividend date. We recommend that one should always check the
bond’s cash flows to ensure that the bond has been properly specified.
aaBond2_dgen_strip_p(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, bondcpn_tbl, freq, acc, eom, hl, d_rul,
weekend, exdivunits, adj_units, atissue, intrp, df_crv, stat)
Calculates the price, yield, and risk
statistics given a term structure of interest rates (a discount
factor curve). The zero-coupon price of
each cash flow is calculated from the curve.
This function also calculates bond properties such as accrued interest,
number of remaining cash flows, next cash flow date, etc.
aaBond2_dgen_strip_cf(d_s,
d_m, d_dated, d_f_cpn, d_l_cpn, bondcpn_tbl, freq, acc, eom, hl, d_rul,
weekend, exdivunits, adj_units, atissue, intrp, df_crv, table_type)
Calculates the bond’s cash flows and the present value
of each cash flow (the strip price) given a term structure of
interest rates (a discount factor curve).
Several functions are available for custom bonds. These are structures that may have no
periodicity, time varying notional and coupon amounts, principal prepayments on
non-coupon dates, coupons that either accrue (like a swap fixed leg) or are level
(like a bond) and other unique characteristics.
Several functions are available:
aaFixlg_fs_p(d_v,
fixleg_pay, fixleg_fixpay, df_crv, acc_pay, acc_accrued, intrp, position, stat)
Calculates the price, several yields, and risk
statistics given a term structure of interest rates (a discount factor
curve). The zero-coupon price of each
cash flow is calculated from the curve.
The risk statistics are calculated with respect to the annualized yield
(as there is no concept of periodicity).
This function is similar to the aaBond*_strip_p()
functions above.
aaFixlg_fs_cfs(d_v,
fixleg_pay, fixleg_fixpay, acc_pay, acc_accrued, position, table_type)
Calculates the bond’s cash flows. Several different types of cash flow related
tables can be returned. The most general
is a 5 column table with the columns being: cash flow date, coupon, principal,
total cash flow, and accrued interest.
This function is similar to the aaBond*_cf()
functions above.
aaFixlg_fs_cfx(d_v,
fixleg_pay, fixleg_fixpay, df_crv, acc_pay, acc_accrued, intrp, position,
table_type)
Calculates the bond’s cash flows and the present value
of each cash flow (the strip price) given a
term structure of interest rates (a
discount factor curve). This
function is similar to the aaBond*_strip_cf() functions above.
aaBond4*(), aaBond3*(), aaBond2*(), aaBond*()
Input Argument |
Description |
d_s |
settlement/valuation date |
d_m |
maturity date |
d_t |
terminating date |
d_dated |
dated date - date from which accrued interest is
calculated on newly issued securities |
d_f_cpn |
date of first coupon after dated date |
d_l_cpn |
date of last coupon prior to maturity date |
cpn |
coupon |
princ |
principal |
redempt |
redemption value (per 100 par) |
freq |
coupon frequency |
acc |
accrual method |
eom |
end-of-month rule |
linlast |
rate basis in last coupon period (simple or compounded) |
exdivunits |
number of units bond is ex-dividend prior to coupon date |
adj_units |
ex-dividend adjustment units |
hl |
holiday list |
d_rul |
business day convention |
weekend |
weekend definition |
atissue |
determines calculation of accrued interest prior to the
dated date (either 0 or negative) |
stat |
output statistics selection |
yield |
yield to maturity |
price |
clean price of bond (per 100 par) |
df_crv |
discount factor curve |
table_type |
output table selection |
aaBond_dgen_*() and aaBond2_dgen_*()
Input Argument |
Description |
d_s |
settlement date |
d_m |
maturity date |
d_dated |
dated date - date from which accrued interest is
calculated on newly issued securities |
d_f_cpn |
date of first coupon after dated date |
d_l_cpn |
date of last coupon prior to maturity date |
bondcpn_tbl |
4 column coupon payment table (date, notional, coupon,
fixed payment) |
freq |
coupon frequency |
acc |
accrual method |
eom |
end-of-month |
yield |
yield to maturity |
price |
price (per 100 par) |
linlast |
rate basis in last coupon period (simple or compounded) |
exdivunits |
number of units bond is ex-dividend prior to coupon date |
adj_units |
ex-dividend adjustment units |
hl |
holiday list |
d_rul |
business day convention |
weekend |
weekend definition |
atissue |
determines calculation of accrued interest prior to the
dated date (either 0 or negative) |
stat |
output statistics selection |
table_type |
output table selection |
We note that the input parameters to these functions
are similar to those of aaBond4*() with the exception of Principal (princ_m),
Redemption Value, (redemp_val) and a Coupon rate (cpn)
which are replaced with a 4-column table, BondCpn_tbl. The Example illustrates the use of this table.
Custom or Freestyle Bonds
Input Argument |
Description |
d_v |
value (settlement) date |
fixleg_pay |
4 column coupon payment table (effective date, terminating
date, notional, coupon) |
fixleg_fixpay |
2 column fixed payment table (date, payment) |
df_crv |
discount factor curve |
acc_pay |
accrual method for coupon payments |
acc_accrued |
accrual method for accrued interest |
intrp |
interpolation method |
position |
trade position |
stat |
statistics selection |
table_type |
output table selection |
aaBond4_accrued, aaBond3_accrued, aaBond2_accrued, and
aaBond_accrued
Statistic |
Description |
1 |
accrued interest |
2 |
next cash flow date |
3 |
previous cash flow date |
4 |
number of days from value date to maturity |
5 |
years to maturity |
6 |
number of days from value date to next cash flow |
7 |
number of days of accrued interest |
8 |
number of remaining cash flows |
9 |
ex-dividend date for next coupon |
aaBond4_cf, aaBond3_cf, aaBond2_cf, and aaBond_cf
Table Type |
Description |
1 |
extended cash flow table 5 cols. (cf date, int, princ, tot
cf, AI) |
2 |
cash flow table 2 cols. (cf date, tot cf) |
3 |
extended cash flow table w/ex-div 6 cols. (cf date, int, princ, tot cf, AI, ex-div date) |
Note: aaBond2_cf and aaBond_cf
have only the first 2 table type options.
aaBond4_p, aaBond3_p, aaBond2_p, and aaBond_p
Statistic |
Description |
1 |
clean bond price (excludes accrued) |
2 |
accrued interest |
3 |
dirty bond price (includes accrued) |
4 |
duration |
5 |
modified duration |
6 |
modified convexity |
7 |
basis point value |
8 |
yield value change per 1bp increase in price |
9 |
next cash flow date |
10 |
previous cash flow date |
11 |
number of days from value date to maturity |
12 |
years to maturity |
13 |
number of days from value date to next cash flow |
14 |
number of days of accrued interest |
15 |
number of remaining cash flows |
16 |
ex-dividend date for next coupon |
aaBond4_y, aaBond3_y, aaBond2_y, and aaBond_y
Statistic |
Description |
1 |
yield to maturity |
2 |
accrued interest |
3 |
dirty bond price (includes accrued) |
4 |
duration |
5 |
modified duration |
6 |
modified convexity |
7 |
basis point value |
8 |
yield value change per 1bp increase in price |
9 |
next cash flow date |
10 |
previous cash flow date |
11 |
number of days from value date to maturity |
12 |
years to maturity |
13 |
number of days from value date to next cash flow |
14 |
number of days of accrued interest |
15 |
number of remaining cash flows |
16 |
ex-dividend date for next coupon |
aaBond4_yields, aaBond3_yields, aaBond2_yields, and
aaBond_yields
Statistic |
Description |
1 |
yield to maturity |
2 |
annualized domestic yield |
3 |
semi-annual domestic yield |
4 |
true yield to maturity |
5 |
true yield annual (actual / 365 actual) |
6 |
true yield semi-annual (actual / 365 actual) |
7 |
|
8 |
|
9 |
Japanese simple interest yield to maturity |
10 |
money market (actual / 365) yield |
11 |
money market (actual / 360) yield |
aaBond4_strip_cf, aaBond3_strip_cf, aaBond2_strip_cf, and
aaBond_strip_cf
Returns |
Description |
cfx_strip |
bond strip cash flow table |
|
column 1:
cash flow date |
|
column 2: cash flow amount |
|
column 3: present value of
cash flow |
|
column 4: discount factor |
aaBond4_strip_p, aaBond3_strip_p, aaBond2_strip_p, and
aaBond_strip_p
Statistic |
Description |
1 |
clean bond price (excludes accrued) |
2 |
accrued interest |
3 |
dirty bond price (includes accrued) |
4 |
duration |
5 |
modified duration |
6 |
modified convexity |
7 |
basis point value |
8 |
yield value change per 1bp increase in price |
9 |
next cash flow date |
10 |
previous cash flow date |
11 |
number of days from value date to maturity |
12 |
years to maturity |
13 |
number of days from value date to next cash flow |
14 |
number of days of accrued interest |
15 |
number of remaining cash flows |
16 |
ex-dividend date for next coupon |
17 |
yield to maturity |
aaBond4_strip_par, aaBond3_strip_par, aaBond2_strip_par,
and aaBond_strip_par
Returns |
Description |
r_par_swap |
par swap rate |
aaBond_dgen_p and aaBond2_dgen_p
Statistic |
Description |
1 |
clean bond price (excludes accrued) |
2 |
accrued interest |
3 |
dirty bond price (includes accrued) |
4 |
duration |
5 |
modified duration |
6 |
modified convexity |
7 |
basis point value |
8 |
yield value change per 1bp increase in price |
9 |
next cash flow date |
10 |
previous cash flow date |
11 |
number of days from value date to maturity |
12 |
years to maturity |
13 |
number of days from value date to next cash flow |
14 |
number of days of accrued interest |
15 |
number of remaining cash flows |
16 |
ex-dividend date for next coupon |
aaBond_dgen_y and aaBond2_dgen_y
Statistic |
Description |
1 |
yield to maturity |
2 |
accrued interest |
3 |
dirty bond price (includes accrued) |
4 |
duration |
5 |
modified duration |
6 |
modified convexity |
7 |
basis point value |
8 |
yield value change per 1bp increase in price |
9 |
next cash flow date |
10 |
previous cash flow date |
11 |
number of days from value date to maturity |
12 |
years to maturity |
13 |
number of days from value date to next cash flow |
14 |
number of days of accrued interest |
15 |
number of remaining cash flows |
16 |
ex-dividend date for next coupon |
aaBond_dgen_accrued and aaBond2_dgen_accrued
Statistic |
Description |
1 |
accrued interest |
2 |
next cash flow date |
3 |
previous cash flow date |
4 |
number of days from value date to maturity |
5 |
years to maturity |
6 |
number of days from value date to next cash flow |
7 |
number of days of accrued interest |
8 |
number of remaining cash flows |
9 |
ex-dividend date for next coupon |
aaBond_dgen_cf and aaBond2_dgen_cf
Table Type |
Description |
1 |
5 column extended cash flow table (cf date, interest,
principal, total cf, accrued interest) |
2 |
2 column cash flow table (cf date, total cf) |
3 |
6 column extended cash flow table w/ex-div (cf date,
interest, principal, total cf, accrued interest, ex-div date) |
4 |
9 column coupon periods (effective date, terminating date,
notional, coupon, interest, principal, total cf, accrued interest,
ex-dividend date) |
aaBond_dgen_strip_p and aaBond2_dgen_strip_p
Statistics |
Description |
1 |
clean bond price (excludes accrued) |
2 |
accrued interest |
3 |
dirty bond price (includes accrued) |
4 |
duration |
5 |
modified duration |
6 |
modified convexity |
7 |
basis point value |
8 |
yield value change per 1bp increase in price |
9 |
next cash flow date |
10 |
previous cash flow date |
11 |
number of days from value date to maturity |
12 |
years to maturity |
13 |
number of days from value date to next cash flow |
14 |
number of days of accrued interest |
15 |
number of remaining cash flows |
16 |
ex-dividend date for next coupon |
17 |
yield to maturity |
aaBond_dgen_strip_cf and aaBond2_dgen_strip_cf
Returns |
Description |
cfx_strip |
bond strip cash flow table |
|
column 1: cash flow date |
|
column 2: cash flow amount |
|
column 3: present value of
cash flow |
|
column 4: discount factor |
aaFixlg_fs_p
Statistic |
Description |
1 |
fair value |
2 |
accrued interest |
3 |
value of future cash flows (fair value + accrued) |
4 |
annually compounded yield |
5 |
semi-annually compounded yield |
6 |
quarterly compounded yield |
7 |
monthly compounded yield |
8 |
money market (actual / 365) yield |
9 |
money market (actual / 360) yield |
10 |
duration |
11 |
modified duration |
12 |
convexity |
13 |
basis point value (old - see function reference) |
14 |
yield value change per 1bp increase in price |
15 |
basis point value (new - see function reference) |
aaFixlg_fs_cfs
Table Type |
Description |
1 |
8 column cash flow table (not pv) (cf date, cpn, npa,
total, acc) |
2 |
2 column cash flow table (not pv) (cf date, cf) |
aaFixlg_fs_cfX
Table Type |
Description |
1 |
8 column extended cash flow table (cf date, cpn, npa,
total, pvcpn, pvnpa, pvtot, acc) |
2 |
2 column cash flow table (not pv) (cf date, cf) |
3 |
5 column present valued cash flow table (cf date, pvcpn,
pvnpa, pvtot, acc) |
4 |
2 column present valued cash flow table (cf date, pvcpn) |
5 |
5 column cash flow table (not pv) (cf date, cpn, npa,
total, acc) |
Suppose the bond frequency is semi-annual and its accrual
is actual/actual (ISMA-99 Normal).
Further, suppose the settle date (our valuation date) is 14-May-2001,
the bond matures on 20-June-2005, there are no odd coupons (d_dated
= d_f_cpn = d_l_cpn = 0), and the bond goes ex-dividend 5 market
days prior to a coupon date. Consider
the following
BondCpn_tbl
Bond Coupon Table
date |
principal amount |
coupon |
payment amount |
|
100 |
0.055 |
20 |
20-Jun-2005 |
80 |
0.055 |
80 |
The inputs required to generate the cash flows using aaBond_dgen_cf()
are:
aaBond2_dgen_cf
Argument |
Description |
Example Data |
Switch |
d_s |
settlement date |
14-May-2001 |
|
d_m |
maturity date |
20-Jun-2005 |
|
d_dated |
dated date |
0 |
|
d_f_cpn |
date of first coupon after dated date |
0 |
|
d_l_cpn |
date of last coupon prior to maturity date |
0 |
|
bondcpn_tbl |
coupon payment table |
BondCpn_tbl above |
|
freq |
date frequency |
2 |
semi-annual |
acc |
accrual method |
1 |
actual/actual (ISMA-99) |
eom |
end-of-month rule |
2 |
non end-of-month |
hl |
holiday list |
0 |
|
d_rul |
business day convention |
1 |
no date adjustment |
weekend |
weekend definition |
1 |
Saturdays and Sundays |
exdivunits |
ex-dividend units |
5 |
|
adj_units |
ex-dividend adjustment units |
1 |
market days |
atissue |
at issue |
1 |
accrued interest is 0 prior to dated date |
table_type |
6 column extended cash flow table |
3 |
|
If we call the function aaBond2_dgen_cf() with
the above inputs, we obtain the following cash flow table:
Results
cash flow date |
interest |
principal |
total cash flow |
accrued interest |
ex-dividend date |
20-Jun-2001 |
2.75 |
0 |
2.75 |
2.19 |
12-Jun-2001 |
20-Dec-2001 |
2.75 |
0 |
2.75 |
0 |
12-Dec-2001 |
20-Jun-2002 |
2.75 |
20 |
22.75 |
0 |
12-Jun-2002 |
20-Dec-2002 |
2.2 |
0 |
2.2 |
0 |
12-Dec-2002 |
20-Jun-2003 |
2.2 |
0 |
2.2 |
0 |
12-Jun-2003 |
20-Dec-2003 |
2.2 |
0 |
2.2 |
0 |
14-Dec-2003 |
20-Jun-2004 |
2.2 |
0 |
2.2 |
0 |
13-Jun-2004 |
20-Dec-2004 |
2.2 |
0 |
2.2 |
0 |
12-Dec-2004 |
20-Jun-2005 |
2.2 |
80 |
82.2 |
0 |
12-Jun-2005 |
The rules for the generation of the cash flows
are as follows:
·
The cash flow dates are generated using d_s,
d_m, d_dated, d_f_cpn, and d_l_cpn. The generation is similar to that of the
function aaDateGen(). For more details see the Date
Generation Functions FINCAD Math Reference document.
·
On a given coupon date, the principal amount and
coupon are obtained from the row in BondCpn_tbl with
the closest date greater than or equal to the coupon
date. Above, we see that the
interest payments up to and including 20-Jun-2002 have been calculated using a
5.5% coupon and a notional of 100 (2.75 = 100 * 5.5% / 2). In contrast we see that the subsequent payments
are calculated using a notional of 80 and a coupon of 5.5% (2.2 = 80 * 5.5% /
2). Note that if there is no entry in BondCpn_tbl
greater than an expected cash flow date, the last entry in BondCpn_tbl
is used.
·
The payment amount in BondCpn_tbl is
paid on the nearest coupon date less than or equal
to the date in the BondCpn_tbl.
Note, that if, for some strange reason, there have been entries in BondCpn_tbl
that would make payments on the same coupon date, the second (and
any later ones) will be ignored.
The functions above can all be used to value zero coupon
bonds by setting the coupon to zero. It
may also be useful to consider some of the functions in the money market area. For more details, see the Money Market Instruments FINCAD
Math Reference document.
There is, of course, a close relationship between fixed
rate bonds and fixed legs of swaps. For
more details on functionality related to fixed legs of swaps, see the Swaps FINCAD Math
Reference document.
There is a wide selection of functions available related
to variable-rate debt. There are
functions for regular FRNs, aaFRN*(), averaged resets FRNs, aaFRNAvg*(),
constant maturity FRNs, aaFRN*_CM(), and many other types. For more details, see the Floating Rate Notes and Floating Legs of
Swaps, the Floating
Rate Notes with Averaging (muni / tax-exempt market), and the Constant Maturity Swaps
FINCAD Math Reference documents.
There is a wide selection of functions related to callable
(or puttable) bonds. The suite of
functions aaCallBond*() provides functionality for pricing callable bonds
using a variety of models. The models
supported range from yield-to-worst and worst (or best) price analyses, to term
structure models like the Black-Karasinski, Hull-White, Ho-Lee and others. For more details, see the Callable and
Puttable Bonds FINCAD Math Reference document.
The functions aaCreditSpread_Bond()
and aaCreditSpread_Bond_dgen()
calculate the spread of a bond versus a benchmark curve. For more details, see the Bond Credit Spreads FINCAD
Math Reference document.
The functions aaBondSeries*()
calculate fair value, risk statistics and cash flows for an issue consisting of
a series of regular bonds. These
functions would be useful to the issuer of a series of bonds with varying
maturities and coupons. There are also
versions of these functions, aaCallBondSeries*(), for cases where the underlying bonds are callable. For more details, see the Serial Bond
Functions (muni / tax-exempt market) FINCAD Math Reference document.
There are functions available that calculate bond curves,
for example treasury curves, from quoted bond prices or yields. For more details, see the Interest Rate Curve
Generation FINCAD Math Reference document.
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.