The suites of functions described in this document
calculate cash flows, price, and yield for FRNs (or Variable Rate Bonds) whose
payments are based upon the arithmetic average of the reset rates. This is in contrast to functions such as aaFRN
and aaFRN_cfm_FRN,
which use compounded reset rates. For
example, if a payment period is comprised of exactly two reset periods, with
reset rates r and r, then the payment on an average rate coupon is based
upon (r+r)/2, whereas the payment on a compounded coupon is based upon
(1+r)(1+r)-1. The average rate is
actually calculated as a weighted average, using the notional times the length
of each reset period as the weight.
There are three sets of functions available for average
rate FRNs. The first set of functions, aaFRNavg
and aaFRNavg_cf,
generate the coupon dates and the reset period dates, and use an accruing curve
and a discounting curve to calculate cash flows, price, and yield to
maturity. There is also a function, aaFRNavg_Tables,
which can be used to calculate the active reset dates, which are needed as an
input table to the above functions.
In the second set of functions, aaFRNavg_fs and aaFRNavg_fs_cf,
the coupon dates, reset dates, notional dates, and fixed payment dates are
completely user defined (freestyle), allowing for totally arbitrary periods to
be defined. The notional table and fixed
payment table allow for an amortizing notional.
The functions take in an accruing curve for calculating future reset
rates, and a discounting curve for discounting cash flows, and calculate cash
flows, price, and yield to maturity. The
function aaFNRavg_Tables_fs
can be used to calculate the coupon dates, reset dates, and amortization dates
needed for the input tables to the above functions.
In the third set of functions, aaFRNavg_FixFwds_fs_cf,
aaFRNavg_FixFwds_fs_p,
and aaFRNavg_FixFwds_y,
the coupon dates, reset dates, notional dates, and fixed payment dates are also
completely user defined (freestyle), allowing for totally arbitrary
periods. These functions, however, do
not take in an accruing curve or a discounting curve. Active and future reset rates can be given in
the input reset table, where rates that are not given are assumed to be equal
to the previous rate given in the reset table.
The behavior of the reset table is described in more detail in the
Formulas & Technical Details section below.
For pricing the FRN or floating leg of a swap, cash flows are priced
using the given yield, rate basis, and accrual method. The function aaFRNavg_Tables_fs
can be used to calculate the dates for the input tables for these functions.
For the functions aaFRNavg, aaFRNavg_cf, aaFRNavg_fs, and aaFRNavg_fs_cf, active reset rates are entered in the reset
table, and future reset rates are calculated using forward rates from a given
accruing curve.
For the reset period, let:
be the forward rate
be the accrual factor from the effective date
to the terminating date of the reset period calculated using acc_reset
be the discount factor from the accruing
curve at the terminating date of the reset period
be the discount factor from the accruing curve at
the effective date of the reset period
Then:
Equation 1
For the
functions aaFRNavg_FixFwds_fs_p, aaFRNavg_FixFwds_fs_y, and aaFRNavg_FixFwds_fs_y, no accruing curve is used, and active and
future reset rates can be given in the input reset table. For periods where the rate is not given or is
equal to 0, the previous non-zero rate given will be used. This is described in more detail below.
For a particular
coupon period, for the reset period, let:
be the accrual factor from the effective date to
the terminating date of the reset period calculated using acc_pay
be the notional
principal amount
be the spread over the reset
The
difference between the subscript and subscript
is that subscript
counts split reset
periods (in cases where a coupon date or an amortization date occurs within a
reset period), whereas subscript
refers to complete
reset periods.
Then:
Equation 2
and:
.
Equation 3
Hence the
average rate is the weighted average of the reset rates (or forward rates),
using the quantity as the weight. This quantity is
shown in column 8 of the Reset Table (table_type = 2) that is output by aaFRNavg_cf, aaFRNavg_fs_cf, and aaFRNavg_FixFwds_fs_cf.
If the margin () is constant for
all periods (as it is in aaFRNavg and aaFRNavg_cf), then the formula for the average rate reduces
to:
.
Equation 4
This set of functions
does not take in an accruing curve for calculating future reset rates. Instead, the future rates can be given in the
input reset table. Reset rates are taken
from the reset table using the following rules:
1.
For a given
reset period, if the rate is given in the reset table (for active or future
resets), then the given rate and margin are used for that period
2.
For a given
reset period, if the reset rate is not given or is equal to 0, then the
previous non-zero rate given will be used for this period
3.
For a given
reset period, if a non-zero margin is given, this margin will be used
regardless of whether or not the rate was given for this period
4.
For a given
reset period, if the margin is not given or is equal to 0, then the previously
used margin will be used for this period
5.
If the
terminating date of the last reset period given is prior to the last coupon
payment date, then the function will insert a reset period effective from the
last reset period terminating date given to the last coupon payment date. The reset rate for this period will be the
previous non-zero rate given
The actual
reset rates that are used by the functions can be verified by examining the
Reset Table (table_type = 2) that is output by the function aaFRNavg_FixFwds_fs_cf.
The price and yield functions output several risk
statistics: Duration, Modified Duration, Convexity, Basis Point Value, and
Effective Duration. Some of these
statistics are calculated using a finite difference method. The reset rates for periods that reset after
the value date will be bumped by a small amount. The yield, rate basis, and accrual method
being used to price the cash flows can be used to calculate a forward rate for each
coupon period. These forward rates are
bumped by the same small amount as the reset rates. These bumped forward rates are then used to
discount cash flows that are calculated using the bumped future reset
rates. A central difference
approximation is used to calculate Effective Duration and Convexity, as
follows:
Equation 5
Equation 6
where
is the size of the bump,
is the dirty price,
is the dirty price
using bumped up rates, and
is the dirty price
using bumped down rates.
These statistics
are used to calculate Basis Point Value (BPV):
Equation 7
where .
Duration and
Modified duration are calculated from the cash flows (which are generated using
the function FRNavg_FixFwds_cf) similar to the way duration and modified duration are calculated for
bonds (see the General
Bond Functions FINCAD Math Reference document).
aaFRNavg(d_v,
d_dated, d_m, d_f_cpn, d_l_cpn, freq, d_rul_pay, d_reset_cycle, reset_freq,
d_rul_reset, reset_mktdays, reset_tbl, mgn, npa, redemp_val, hl,
df_crv_acc, df_crv_disc, acc_rt, acc_pay, intrp, position, stat)
Calculates the fair value, accrued interest and various
yields for an average-rate FRN or floating leg with regular coupons and
resets. The coupons may be annual,
semi-annual, quarterly, monthly, biweekly, weekly and 35 days. The resets can be on a separate cycle at any
of those frequencies plus daily. The
function allows the input of separate accruing and discounting curves.
aaFRNavg_cf(d_v,
d_dated, d_m, d_f_cpn, d_l_cpn, freq, d_rul_pay, d_reset_cycle, reset_freq,
d_rul_reset, reset_mktdays, reset_tbl, mgn, npa, redemp_val, hl, df_crv_acc,
df_crv_disc, acc_rt, acc_pay, intrp, position, table_type)
Calculates the future cash flows, present value of future
cash flows and reset rates for average-rate FRNs with regular coupons and
resets.
aaFRNavg_Tables(d_v,
d_dated, d_m, d_f_cpn, d_l_cpn, freq, d_rul_pay, d_reset_cycle, reset_freq,
d_rul_reset, reset_mktdays, hl, table_type)
Calculates various dates related to average-rate FRNs with
regular coupons and resets. For
instance, it calculates the dates for all active resets. This is a utility function which helps set up
the input tables for calls to aaFRNavg and aaFRNavg_cf.
aaFRNavg_fs(d_v,
payperiod, npa_tbl, reset_tbl, flleg_fixpay, df_crv_acc, df_crv_disc, acc_rt,
acc_pay, intrp, position, stat)
Calculates the fair value, accrued interest and various
yields for an average-rate FRN or floating leg with user specified coupon
dates, reset dates, notional schedule, and notional payments. The function
allows the input of separate accruing and discounting curves.
aaFRNavg_fs_cf(d_v,
payperiod, npa_tbl, reset_tbl, flleg_fixpay, df_crv_acc, df_crv_disc, acc_rt,
acc_pay, intrp, position, stat)
Calculates the future cash flows, present value of future cash
flows and reset rates for an average-rate FRN or floating leg with user
specified coupon dates, reset dates, notional schedule, and notional payments.
aaFRNavg_Tables_fs(d_v,
d_dated, d_m, d_f_cpn, d_l_cpn, freq, d_rul_pay, d_reset_cycle, reset_freq,
d_rul_reset, reset_mktdays, d_f_amort, d_l_amort, amort_freq, d_rul_amort,
amort_type, hl, table_type)
Calculates various dates related to average-rate FRNs with
user specified coupon dates, reset dates, notional schedule and notional
payments. This is a utility function
which helps set up the input tables for calls to aaFRNavg_fs, aaFRNavg_fs_cf, and aaFRNavg_FixFwds_fs_*.
Note: Examples
of how to use the above functions are contained in the FINCAD pre-built workbooks.
aaFRNavg_FixFwds_fs_cf(d_v,
payperiod, npa_tbl, reset_tbl, flleg_fixpay, acc_pay, position, table_type)
Calculates the future cash flows and reset rates for an
average-rate FRN or floating leg with user specified coupon dates, reset dates,
notional schedule, and notional payments.
Active and future reset rates are taken from the input reset table. If a rate is missing or 0 for a given period,
the previous known rate in the table will be used.
aaFRNavg_FixFwds_fs_p(d_v,
payperiod, npa_tbl, reset_tbl, flleg_fixpay, yield, yield_basis, acc_pay,
position, stat)
Calculates price given a yield and rate basis for an
average-rate FRN or floating leg with user specified coupon dates, reset dates,
notional schedule, and notional payments.
Active and future reset rates are taken from the input reset table. If a rate is missing or 0 for a given period,
the previous known rate in the table will be used.
aaFRNavg_FixFwds_fs_y(d_v,
payperiod, npa_tbl, reset_tbl, flleg_fixpay, price, acc_pay, position, stat)
Calculates yield given price for an average-rate FRN or
floating leg with user specified coupon dates, reset dates, notional schedule,
and notional payments. Active and future
reset rates are taken from the input reset table. If a rate is missing or 0 for a given period,
the previous known rate in the table will be used.
aaFRNavg, aaFRNavg_cf, aaFRNavg_Tables
Input Argument |
Description |
d_v |
value (settlement) date |
d_dated |
dated date - date from which accrued interest is
calculated on newly issued securities |
d_m |
maturity date |
d_f_cpn |
date of first coupon after dated date |
d_l_cpn |
date of last coupon prior to maturity date |
freq |
cash flow frequency |
d_rul_pay |
business day convention for payment dates |
d_reset_cycle |
any reset period effective date. Is used to establish the reset period
cycle. |
reset_freq |
reset period frequency |
d_rul_reset |
business day convention for reset dates * |
reset_mktdays |
number of business days prior to the reset date that the
rate is fixed |
reset_tbl |
table containing active reset information. Dates may be calculated using aaFRNavg_Tables. |
mgn |
margin above or below a floating rate |
npa |
notional principal amount |
redemp_val |
redemption value at maturity (per 100 notional) |
hl |
holiday list |
df_crv_acc |
discount factor curve for accruing rates |
df_crv_disc |
discount factor curve for discounting rates |
acc_rt |
accrual method for reset rates |
acc_pay |
accrual method for coupon payments |
intrp |
interpolation method |
position |
trade position - long or short |
table_type |
output table type selection |
stat |
output statistic(s) selection |
aaFRNavg_fs, aaFRNavg_fs_cf
Input Argument |
Description |
d_v |
value (settlement) date |
payperiod |
table defining the coupon payment dates |
npa_tbl |
table specifying the amortization schedule for the
notional principal amount |
reset_tbl |
table defining the reset periods |
flleg_fixpay |
table of fixed payment dates (e.g. exchange of principal) |
df_crv_acc |
discount factor curve for accruing rates |
df_crv_disc |
discount factor curve for discounting rates |
acc_rt |
accrual method for reset rates |
acc_pay |
accrual method for coupon payments |
intrp |
interpolation method |
position |
trade position - long or short |
table_type |
output table type selection |
stat |
output statistic(s) selection |
aaFRNavg_fs_Tables
Input Argument |
Description |
d_v |
value (settlement) date |
d_dated |
dated date - date from which accrued interest is
calculated on newly issued securities |
d_m |
maturity date |
d_f_cpn |
date of first coupon after dated date |
d_l_cpn |
date of last coupon prior to maturity date |
freq |
cash flow frequency |
d_rul_pay |
business day convention for payment dates |
d_reset_cycle |
any reset period effective date that is used to establish
the reset period cycle. |
reset_freq |
reset period frequency |
d_rul_reset |
business day convention for reset dates * |
reset_mktdays |
number of business days prior to the reset date that the
rate is fixed |
d_f_amort |
first amortization after dated date (optional) |
d_l_amort |
last amortization before maturity (optional) |
amort_freq |
amortization frequency |
d_rul_amort |
business day convention for amortizations |
amort_type |
defines whether or not the amortization is independent of
coupon dates |
hl |
holiday list |
table_type |
table type |
aaFRNavg_FixFwds_fs_cf, aaFRNavg_FixFwds_fs_p,
aaFRNavg_FixFwds_fs_y
Input Argument |
Description |
d_v |
value (settlement) date |
payperiod |
table defining the coupon payment dates |
npa_tbl |
table specifying the amortization schedule for the
notional principal amount |
reset_tbl |
table defining the reset periods |
flleg_fixpay |
table of fixed payment dates (e.g. exchange of principal) |
yield |
yield to maturity |
yield_basis |
rate basis of yield to maturity |
price |
clean price |
acc_pay |
accrual method for coupon payments |
position |
trade position - long or short |
table_type |
output table type selection |
stat |
output statistic(s) selection |
(*) The Third Wednesday setting is included in this
switch for standardization with other functions; however this setting is not
recommended and does not have a practical application for this instrument class.
aaFRNavg and aaFRNavg_fs
Statistics |
Description |
pricing statistics: |
fair value, accrued
interest, and fair value + accrued interest |
yield to maturity
statistics: |
annually compounded,
semi-annually compounded,
|
aaFRNavg_FixFwds_fs_p
Statistics |
Description |
pricing statistics: |
fair value, accrued
interest, and fair value + accrued interest |
risk statistics: |
duration, modified
duration, effective duration, convexity, basis point value |
aaFRNavg_FixFwds_fs_y
Statistics |
Description |
yield statistics: |
annually compounded,
semi-annually compounded,
|
risk statistics: |
duration, modified
duration, effective duration, convexity, basis point value |
aaFRNavg_cf, aaFRNavg_fs_cf, and aaFRNavg_FixFwds_fs_cf
These functions
output three different tables:
Output Table |
Description |
Cash flows: |
contains all future
cash flow information (interest payments, principal payments, accrued
interest). |
Reset table: |
contains all
information related to the reset periods.
The date of associated coupon is given in the first column. A reset period will be split if a coupon
date or an amortization date occurs within it. |
Interest summary
table: |
contains information
related to the coupons, (e.g. average rate, interest payment, accrued
interest) |
aaFRNavg, aaFRNavg_fs
Output Statistics |
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 |
aaFRNavg_cf, aaFRNavg_fs_cf
Table Type |
Description |
1 |
Cash Flows - 8 col: date, interest, principal, total cash
flow, PV interest, PV principal, PV total cash flow, accrued interest |
2 |
Reset Table - 10 col: payment date, rate fixing date, rate
effective date, rate terminating date, notional, rate, rate + margin, weight,
interest, accrued interest |
3 |
Interest Summary Table - 4 col: payment date, average
coupon, interest, accrued interest |
aaFRNavg_Tables
Table Type |
Description |
1 |
Payment Dates Table (effective date, terminating date ) |
2 |
Reset Dates Table (rate fixing date, rate effective date,
rate terminating date) |
3 |
Active Reset Table (rate fixing date, rate effective date,
rate terminating date) |
aaFRNavg_Tables_fs
Table Type |
Description |
1 |
Payment Dates Table (effective date, terminating date ) |
2 |
Reset Dates Table (rate fixing date, rate effective date,
rate terminating date) |
3 |
Active Reset Table (rate fixing date, rate effective date,
rate terminating date) |
4 |
Notional Table (effective date, terminating date) |
aaFRNavg_FixFwds_fs_p
Output Statistics |
Description |
1 |
fair value |
2 |
accrued interest |
3 |
fair value + accrued interest |
4 |
duration |
5 |
modified duration |
6 |
convexity |
7 |
basis point value |
8 |
number of days of accrued interest |
9 |
effective duration |
aaFRNavg_FixFwds_fs_y
Output Statistics |
Description |
1 |
annually compounded yield |
2 |
semi-annually compounded yield |
3 |
quarterly compounded yield |
4 |
monthly compounded yield |
5 |
simple yield |
6 |
accrued interest |
7 |
fair value + accrued interest |
8 |
duration |
9 |
modified duration |
10 |
convexity |
11 |
basis point value |
12 |
number of days of accrued interest |
13 |
effective duration |
aaFRNavg_FixFwds_fs_cf
Table Type |
Description |
1 |
Cash Flows - 5 col: date, interest, principal, total cash
flow, accrued interest |
2 |
Reset Table - 10 col: payment date, rate fixing date, rate
effective date, rate terminating date, notional, rate, rate + margin, weight,
interest, accrued interest |
3 |
Interest Summary Table - 4 col: payment date, average
coupon, interest, accrued interest |
Suppose today is 14-Feb-2005, and we want to calculate the
cash flows, price, and yield to maturity of an FRN using average rate
coupons. The FRN was issued on
24-Feb-2004, and will mature on 24-Feb-2006.
Coupons are paid monthly, and the rates are reset weekly on Wednesday,
effective on Thursday. There is a 1%
margin above the floating rate.
The first step is to construct a reset table containing
the dates and reset rates for the active reset periods. The active reset dates can be calculated
using the function aaFRNavg_Tables with the following inputs.
aaFRNavg_Tables
Argument |
Description |
Example Data |
Switch |
d_v |
value (settlement) date |
14-Feb-2005 |
|
d_dated |
dated date |
|
|
d_m |
maturity date |
24-Feb-2006 |
|
d_f_cpn |
date of first coupon after dated date |
|
|
d_l_cpn |
date of last coupon prior to maturity date |
|
|
freq |
cash flow frequency |
4 |
monthly |
d_rul_pay |
business day convention for payment dates |
1 |
no adjustment |
d_reset_cycle |
reset cycle date |
17-Feb-2005 |
|
reset_freq |
reset frequency |
6 |
weekly |
d_rul_reset |
business day convention for reset dates |
1 |
no adjustment |
reset_mktdays |
number of business days prior to the reset date that the
rate is fixed |
1 |
|
hl |
holiday list (not needed in this example since no date
adjustments are made) |
0 |
|
table_type |
table type |
3 |
active reset table |
This gives us the following active reset table:
reset date |
effective date |
terminating date |
|
20-Jan-2005 |
27-Jan-2005 |
26-Jan-2005 |
27-Jan-2005 |
3-Feb-2005 |
2-Feb-2005 |
3-Feb-2005 |
10-Feb-2005 |
9-Feb-2005 |
10-Feb-2005 |
17-Feb-2005 |
We must then add a fourth column to this table, in
which we specify the known active reset rates.
This four column reset table will then be used as input into aaFRNavg
and aaFRNavg_cf.
reset date |
effective date |
terminating date |
reset rate |
|
20-Jan-2005 |
27-Jan-2005 |
5.00% |
26-Jan-2005 |
27-Jan-2005 |
3-Feb-2005 |
5.05% |
2-Feb-2005 |
3-Feb-2005 |
10-Feb-2005 |
5.10% |
9-Feb-2005 |
10-Feb-2005 |
17-Feb-2005 |
5.15% |
Next, we need a discount factor curve that will be
used for accruing rates. This curve will
be used to calculate the forward rates for all future reset periods. For this example, we will use the following
curve:
date |
discount factor |
|
1 |
15-May-2005 |
0.987342 |
15-Aug-2005 |
0.974088 |
15-Nov-2005 |
0.960392 |
15-Feb-2006 |
0.945762 |
15-May-2006 |
0.932451 |
We also need a discount factor curve that will be
used to discount the cash flows to the value date. For simplicity, in this example we will
assume that the accruing curve and the discounting curve are the same.
We can now call aaFRNavg_cf and aaFRNavg
to calculate the cash flows, price and yield to maturity of the FRN:
aaFRNavg_cf and aaFRNavg
Argument |
Description |
Example Data |
Switch |
d_v |
value (settlement) date |
14-Feb-2005 |
|
d_dated |
dated date |
|
|
d_m |
maturity date |
24-Feb-2006 |
|
d_f_cpn |
date of first coupon after dated date |
|
|
d_l_cpn |
date of last coupon prior to maturity date |
|
|
freq |
cash flow frequency |
4 |
monthly |
d_rul_pay |
business day convention for payment dates |
1 |
no adjustment |
d_reset_cycle |
reset cycle date |
17-Feb-2005 |
|
reset_freq |
reset frequency |
6 |
weekly |
d_rul_reset |
business day convention for reset dates |
1 |
no adjustment |
reset_mktdays |
number of business days prior to the reset date that the
rate is fixed |
1 |
|
reset_tbl |
active reset table |
see above |
|
mgn |
margin above or below a floating rate |
1% |
|
npa |
notional principal amount |
100,000 |
|
redemp_val |
redemption value (per 100 notional) |
100 |
|
hl |
holiday list (not needed in this example since no date
adjustments are made) |
0 |
|
df_crv_acc |
discount factor curve for accruing rates |
see above |
|
df_crv_disc |
discount factor curve for discounting rates |
see above |
|
acc_rt |
accrual method for reset rates |
1 |
actual/365 (fixed) |
acc_pay |
accrual method for coupon payments |
1 |
actual/365 (fixed) |
intrp |
interpolation method |
3 |
exponential |
position |
trade position |
1 |
long |
table_type |
table type (cash flow function) |
1 |
cash flows |
stat |
output statistic(s) (price and yield function) |
{1, 2,
, 7} |
|
Results: aaFRNavg_cf
date |
interest |
principal payment |
total cash flow |
present value of interest |
present value of principal
payment |
present value total of cash flows |
accrued interest |
|
519.70 |
0 |
519.70 |
518.96 |
0 |
518.96 |
349.73 |
24-Mar-2005 |
477.70 |
0 |
477.70 |
475.11 |
0 |
475.11 |
0 |
24-Apr-2005 |
528.88 |
0 |
528.88 |
523.68 |
0 |
523.68 |
0 |
24-May-2005 |
515.58 |
0 |
515.58 |
508.31 |
0 |
508.31 |
0 |
24-Jun-2005 |
540.55 |
0 |
540.55 |
530.50 |
0 |
530.50 |
0 |
24-Jul-2005 |
523.11 |
0 |
523.11 |
511.13 |
0 |
511.13 |
0 |
24-Aug-2005 |
547.57 |
0 |
547.57 |
532.56 |
0 |
532.56 |
0 |
24-Sep-2005 |
562.32 |
0 |
562.32 |
544.31 |
0 |
544.31 |
0 |
24-Oct-2005 |
544.18 |
0 |
544.18 |
524.32 |
0 |
524.32 |
0 |
24-Nov-2005 |
575.27 |
0 |
575.27 |
551.56 |
0 |
551.56 |
0 |
24-Dec-2005 |
583.03 |
0 |
583.03 |
556.21 |
0 |
556.21 |
0 |
24-Jan-2006 |
602.46 |
0 |
602.46 |
571.79 |
0 |
571.79 |
0 |
24-Feb-2006 |
594.87 |
100,000.00 |
100,594.87 |
561.71 |
94,425.72 |
94,987.44 |
0 |
Results: aaFRnavg
Statistic |
Description |
Value |
1 |
fair value |
100,986.15 |
2 |
accrued interest |
349.73 |
3 |
value of future cash flows (fair value + accrued) |
101,335.88 |
4 |
annually compounded yield |
5.735% |
5 |
semi-annually compounded yield |
5.655% |
6 |
quarterly compounded yield |
5.616% |
7 |
monthly compounded yield |
5.590% |
Suppose today is 5-Feb-2005, and we want to evaluate an
FRN based on average rate coupons, but do want to use an accruing curve or a
discounting curve. The FRN was issued on
1-Jan-2005, and matures on 1-Jul-2007.
The notional is fixed at $100,000, which will be paid on the maturity
date of 1-Jul-2007. Coupons are paid
quarterly, and rates reset semi-annually.
The first reset date was 1-Jan-2005, at which time the rate reset at
5%. Suppose we want all future reset
rates to be 5.5%. If we are using the aaFRNavg_FixFwds_*
functions, future rates can be specified in the input reset
table. Future rates that are not given
are set equal to the previous known rate in the table. Thus, for the 1-Jul-2005 reset date, the rate
of 5.5% can be specified in the table, and all future reset periods will also
use 5.5%.
Since these are user defined (freestyle) functions, dates
must be given in the input tables for the coupon periods, reset periods, notional
amounts, and fixed payments. The
notional is constant, and there is only one fixed payment, at maturity, so the
notional table and fixed payment table will each contain only one date. The coupon payment table and reset table can
be constructed using the function aaFRNavg_Tables_fs,
given the following inputs:
aaFRNavg_Tables_fs
Argument |
Description |
Example Data |
Switch |
d_v |
value (settlement) date |
5-Feb-2005 |
|
d_dated |
dated date |
|
|
d_m |
maturity date |
1-Jul-2007 |
|
d_f_cpn |
date of first coupon after dated date |
|
|
d_l_cpn |
date of last coupon prior to maturity date |
|
|
freq |
cash flow frequency |
3 |
quarterly |
d_rul_pay |
business day convention for payment dates |
1 |
no adjustment |
d_reset_cycle |
reset cycle date |
1-Jan-2005 |
|
reset_freq |
reset frequency |
2 |
semi-annual |
d_rul_reset |
business day convention for reset dates |
1 |
no adjustment |
reset_mktdays |
number of business days prior to the reset date that the
rate is fixed |
0 |
|
d_f_amort |
first amortization after dated date (optional) |
|
|
d_l_amort |
last amortization before maturity (optional) |
|
|
amort_freq |
amortization frequency |
1 |
annual |
d_rul_amort |
business day convention for amortizations |
1 |
no adjustment |
amort_type |
amortization rule |
1 |
independent of payments |
hl |
holiday list (not needed in this example since no date
adjustments are made) |
0 |
|
table_type |
table type |
1, 2 |
payment and reset tables |
This function will output both the coupon payment dates
table, and the reset dates table. The
coupon dates table can be used as is by
the aaFRNavg_FixFwds_fs_*
functions, but the reset table needs two extra columns; one for the reset rate,
and one for the margin above or below the reset rate. All four tables needed by aaFRNavg_FixFwds_fs_*
for this example are given below:
Payment Periods Table (table_type
= 1)
effective date |
terminating date |
|
1-Apr-2005 |
1-Apr-2005 |
1-Jul-2005 |
1-Jul-2005 |
1-Oct-2005 |
1-Oct-2005 |
1-Jan-2006 |
1-Jan-2006 |
1-Apr-2006 |
1-Apr-2006 |
1-Jul-2006 |
1-Jul-2006 |
1-Oct-2006 |
1-Oct-2006 |
1-Jan-2007 |
1-Jan-2007 |
1-Apr-2007 |
1-Apr-2007 |
1-Jul-2007 |
Notional Table
date |
notional principal amount |
|
100,000 |
Reset Table (table_type =
2 = all reset periods)
reset date |
effective date |
terminating date |
reset rate |
margin |
|
|
|
5.000% |
0.000% |
|
|
|
5.500% |
0.000% |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Note that these functions do not require all of the
reset periods to be defined in the reset table.
The last rate given, 5.5% in this case, is going to be used for all
periods where no rate is entered. If a
reset table that only contained the first 2 reset periods is used, the function
will add one extra reset period from the last given terminating date to the
maturity date, and the last rate given will apply to the additional
period. Thus, a reset table consisting
of only the first two periods will give the same results as the table shown.
Fixed Payment Table
payment date |
fixed payment amount |
|
100,000 |
The function aaFRNavg_FixFwds_fs_cf
can be called using the above tables, and the inputs below, to calculate the
cash flows, as well as output a reset table showing the rate used, the notional
amount, interest, and accrued interest for each reset period.
Argument |
Description |
Example Data |
Switch |
d_v |
value (settlement) date |
5-Feb-2005 |
|
payperiod |
pay periods |
see above |
|
npa_tbl |
notional table |
see above |
|
reset_tbl |
reset table |
see above |
|
flleg_fixpay |
fixed payment table |
see above |
|
acc_pay |
accrual method for coupon payments |
1 |
actual/365 (fixed) |
position |
trade position |
1 |
long |
table_type |
table type |
1,2,3 |
cash flow, reset, and interest summary tables |
Results: Cash Flow Table (table_type
= 1)
date |
interest |
principal payment |
total cash flow |
accrued interest |
|
1,232.88 |
0 |
1,232.88 |
479.45 |
1-Jul-2005 |
1,246.58 |
0 |
1,246.58 |
0 |
1-Oct-2005 |
1,386.30 |
0 |
1,386.30 |
0 |
1-Jan-2006 |
1,386.30 |
0 |
1,386.30 |
0 |
1-Apr-2006 |
1,356.16 |
0 |
1,356.16 |
0 |
1-Jul-2006 |
1,371.23 |
0 |
1,371.23 |
0 |
1-Oct-2006 |
1,386.30 |
0 |
1,386.30 |
0 |
1-Jan-2007 |
1,386.30 |
0 |
1,386.30 |
0 |
1-Apr-2007 |
1,356.16 |
0 |
1,356.16 |
0 |
1-Jul-2007 |
1,371.23 |
100,000 |
101,371.23 |
0 |
Results: Reset Table (table_type
= 2)
payment date |
reset date |
effective date |
terminating date |
notional |
rate |
rate + mgn |
weight |
interest |
accrued |
1-Apr-2005 |
1-Jan-2005 |
1-Jan-2005 |
1-Feb-2005 |
100,000 |
5.0% |
5.0% |
8493 |
424.66 |
424.66 |
1-Apr-2005 |
1-Jan-2005 |
1-Feb-2005 |
1-Apr-2005 |
100,000 |
5.0% |
5.0% |
16164 |
808.22 |
54.79 |
1-Jul-2005 |
1-Jan-2005 |
1-Apr-2005 |
1-Jul-2005 |
100,000 |
5.0% |
5.0% |
24932 |
1,246.58 |
0 |
1-Oct-2005 |
1-Jul-2005 |
1-Jul-2005 |
1-Oct-2005 |
100,000 |
5.5% |
5.5% |
25205 |
1,386.30 |
0 |
1-Jan-2006 |
1-Jul-2005 |
1-Oct-2005 |
1-Jan-2006 |
100,000 |
5.5% |
5.5% |
25205 |
1,386.30 |
0 |
1-Apr-2006 |
1-Jan-2006 |
1-Jan-2006 |
1-Apr-2006 |
100,000 |
5.5% |
5.5% |
24658 |
1,356.16 |
0 |
1-Jul-2006 |
1-Jan-2006 |
1-Apr-2006 |
1-Jul-2006 |
100,000 |
5.5% |
5.5% |
24932 |
1,371.23 |
0 |
1-Oct-2006 |
1-Jul-2006 |
1-Jul-2006 |
1-Oct-2006 |
100,000 |
5.5% |
5.5% |
25205 |
1,386.30 |
0 |
1-Jan-2007 |
1-Jul-2006 |
1-Oct-2006 |
1-Jan-2007 |
100,000 |
5.5% |
5.5% |
25205 |
1,386.30 |
0 |
1-Apr-2007 |
1-Jan-2007 |
1-Jan-2007 |
1-Apr-2007 |
100,000 |
5.5% |
5.5% |
24658 |
1,356.16 |
0 |
1-Jul-2007 |
1-Jan-2007 |
1-Apr-2007 |
1-Jul-2007 |
100,000 |
5.5% |
5.5% |
24932 |
1,371.23 |
0 |
Results: Interest Summary Table (table_type = 3)
payment date |
avg cpn |
interest |
accrued |
|
5.000% |
1,232.88 |
479.45 |
1-Jul-2005 |
5.000% |
1,246.58 |
0 |
1-Oct-2005 |
5.500% |
1,386.30 |
0 |
1-Jan-2006 |
5.500% |
1,386.30 |
0 |
1-Apr-2006 |
5.500% |
1,356.16 |
0 |
1-Jul-2006 |
5.500% |
1,371.23 |
0 |
1-Oct-2006 |
5.500% |
1,386.30 |
0 |
1-Jan-2007 |
5.500% |
1,386.30 |
0 |
1-Apr-2007 |
5.500% |
1,356.16 |
0 |
1-Jul-2007 |
5.500% |
1,371.23 |
0 |
The function aaFRNavg_FixFwds_fs_p
can be used to calculate the price of the FRN given a yield and the rate basis
of that yield. Several risk statistics
are also calculated, including Duration, Modified Duration, Convexity, and
Basis Point Value.
aaFRNavg_FixFwds_fs_p
Argument |
Description |
Example Data |
Switch |
d_v |
value (settlement) date |
5-Feb-2005 |
|
payperiod |
pay periods |
see above |
|
npa_tbl |
notional table |
see above |
|
reset_tbl |
reset table |
see above |
|
flleg_fixpay |
fixed payment table |
see above |
|
yield |
yield to maturity |
4.65% |
|
yield_basis |
rate basis of yield to maturity |
3 |
quarterly |
acc_pay |
accrual method for coupon payments |
1 |
actual/365 (fixed) |
position |
trade position |
1 |
long |
stat |
statistic |
{1, 2,
, 9} |
|
Results
Statistic |
Description |
Value |
1 |
fair value |
101,721.14 |
2 |
accrued interest |
479.45 |
3 |
value of future cash flows (fair value + accrued) |
102,200.59 |
4 |
duration |
2.259791 |
5 |
modified duration |
2.233822 |
6 |
convexity |
0.279005 |
7 |
basis point value |
-4.1917 |
8 |
number of days of accrued interest |
35 |
9 |
effective duration |
0.410158 |
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.