A callable bond is bond in which the issuer has the right
to call the bond away from the investor for a price determined at the time that
the bond is issued. This amount will
typically be greater than the principal amount of the bond. A puttable bond, on the other hand, allows
the investor to sell the bond back to the issuer, prior to maturity, at a price
that is specified at the time that the bond is issued. In the case of a callable bond, the
individual with a long position in this security will essentially be long the
bond and short the embedded call option.
The call feature is positive for the issuer of the bond as it allows the
issuer to essentially refinance debt at more favorable terms when interest
rates fall. For the investor, on the
other hand, this represents a drawback as it causes the price behavior of this
security to exhibit negative convexity when interest rate levels fall. This limits the capital appreciation
potential of the bonds when interest rates fall. Investors are usually compensated for this
drawback through a greater return potential as callable bonds are usually
priced at a discount to other comparable non-callable fixed income securities. By the same token, the holder of a puttable
bond is essentially long the bond and long the embedded put option. This has the effect of increasing the
convexity of the price-yield relationship associated with this security and
thus reduces the downside risk to the investor.
This has the effect of increasing the price of the security and hence
reducing the potential return to the investor.
When callable/puttable bonds are issued, the terms
governing the bond (frequency, coupon, maturity,) and the terms governing the
embedded option such as the strike schedule are defined. The terms of the bond component are virtually
identical to those of other bonds. The
embedded call/put option, on the other hand, may have a lockout period
associated with it (i.e. an initial period during which it cannot be called).
The functions are capable of handling valuations for a
broad range of callable bonds. Features
include the ability to value callable bonds with changing notional (i.e.
accreting or amortizing notional amount) and changing coupon payments. This flexibility is provided by the _dgen
functions. Furthermore, functions that
calculate the option adjusted spread (OAS), spread duration and spread
convexity for callable bonds have been provided. The functions also allow for the calculation
of the expected present value of cash flows as well as a value for the
probability that the option will be exercised at each coupon date. The functions can output various risk
statistics, such as the effective duration which takes into consideration the
fact that future cash flows may change depending on whether or not the embedded
call/put option is exercised.
Note: Many of the functions employ either the
Hull-White term structure model or the Black-Karasinski term structure
model. For details on these models,
refer to the references at the end of this document.
aaCallBond2_BK(optstyle,
princ, d_m, cpn, freq, acc_bond, d_rul, d_v, option_type, ex_sched1, df_crv,
hl, a, vlt, intrp, iter_p, stat)
Calculates fair value and risk statistics for an American
or Bermudan style callable (or puttable) bond given a user defined exercise
schedule. The Black Karasinski (or Lognormal) term structure model is used.
aaCallBond2_HW(optstyle,
princ, d_m, cpn, freq, acc_bond, d_rul, d_v, option_type, ex_sched1, df_crv,
hl, a, vlt, intrp, iter_p, stat)
Calculates fair value and risk statistics for an American
or Bermudan style callable (or puttable) bond given a user defined exercise
schedule. The
aaCallBond3_BK(optstyle,
princ, d_m, cpn, freq, acc_bond, d_rul, d_v, ex_sched2, df_crv, hl, a, vlt,
intrp, iter_p, stat)
Calculates fair value and risk statistics for an American
or Bermudan style bond with both call and put options given a user defined
exercise schedule. The Black Karasinski (or Lognormal) term structure model is
used.
aaCallBond3_HW(optstyle,
princ, d_m, cpn, freq, acc_bond, d_rul, d_v, ex_sched2, df_crv, hl, a, vlt,
intrp, iter_p, stat)
Calculates fair value and risk statistics for an American
or Bermudan style bond with both call and put options given a user defined
exercise schedule. The
aaCallBond_BK(optstyle,
princ, d_m, cpn, freq, acc_bond, d_rul, d_v, d_call, d_exp, option_type, ex,
df_crv, hl, a, vlt, intrp, iter_p, stat)
Calculates fair value and risk statistics for an American
or Bermudan style callable (puttable) bond. This is a simpler version of aaCallBond2_BK
as it allows only one fixed exercise price. Uses the Black Karasinski (or
Lognormal) term structure model.
aaCallBond_dgen_p(d_s,
d_t, d_e, d_f_cpn, d_l_cpn, bondcpn_tbl, freq, acc_bond, hl, d_rul, exdays,
adj_units, atissue, ex_sched, df_crv, intrp, model_type, model_parms, refine,
stat)
Calculates fair value and risk statistics for an American
or Bermudan style bond with both call and put options given a user defined
exercise schedule. The bond may have
varying notional and coupon amounts (e.g. amortizing). Several term structure models are supported.
aaCallBond_eu_BK(princ,
d_m, cpn, freq, acc_bond, d_rul, d_v, d_exp, option_type, ex, df_crv, hl, a,
vlt, intrp, iter_p, stat)
Calculates fair value and risk statistics for a European
style callable (or puttable) bond. The
Black Karasinski (or Lognormal) term structure model is used.
aaCallBond_eu_HW(princ,
d_m, cpn, freq, acc_bond, d_rul, d_v, d_exp, option_type, ex, df_crv, hl, a,
vlt, intrp, stat)
Calculates fair value and risk statistics for a European
style callable (or puttable) bond. The
aaCallBond_HW(optstyle,
princ, d_m, cpn, freq, acc_bond, d_rul, d_v, d_call, d_exp, option_type,
ex,df_crv, hl, a, vlt,intrp, iter_p, stat)
Calculates fair value and risk statistics for an American
or Bermudan style callable (puttable) bond. This is a simpler version of aaCallBond2_HW
as it allows only one fixed exercise price. The
aaCallBondSeries_strip_p(d_v,
bondseries_tbl, freq, acc_bond, ex_sched1, hl, d_rul, intrp, df_crv, stat)
Given a term structure of interest rates, calculates the
worst (or best) price of a callable or puttable bond series assuming each bond
is called (or put) on relevant bond coupon dates. Returns price, yield, duration, and other risk
measures for the series.
Note: aaCallBond_eu_HW function
uses a closed-form analytical solution by
Functions aaCallBond2_BK, aaCallBond2_HW, aaCallBond3_BK,
aaCallBond3_HW have the exercise tables that specify the exercise
and expiry dates. The last row of the
table gives the option expiry date. The
call/put price on any given date is taken from the last row whose date is prior
to or equal to the given date. The price
given in the last row is used as the exercise price on the expiry date.
aaCallBond_dgen_cf(d_s,
d_t, d_e, d_f_cpn, d_l_cpn, bondcpn_tbl, freq, acc_bond, hl, d_rul, exdays,
adj_units, atissue, ex_sched, df_crv, intrp, model_type, model_parms, refine,
table_type)
Calculates cash flow related tables (including
probabilities of call for each cash flow) for an American or Bermudan style
bond with both call and put options given a user defined exercise schedule. The bond may have varying notional and coupon
amounts (e.g. amortizing). Several term
structure models are supported.
aaCallBond_strip_cf2(princ,
d_m, d_dated, d_f_cpn, d_l_cpn, cpn, freq, acc_bond, d_rul, d_v, ex_sched1,
df_crv, hl, intrp, table_type)
Calculates the worst (or best) price of a callable or puttable
bond assuming it is called (or put) on relevant bond coupon dates. Returns call
price, yield, duration, and other risk measures at each date. Allows dated date and odd first/last coupons.
aaCallBond_dgen_strip_cf(d_v,
d_m, d_dated, d_f_cpn, d_l_cpn, bondcpn_tbl, ex_sched1, freq, acc_bond, d_rul,
df_crv, hl, intrp, table_type)
Calculates the worst (or best) price of a callable/puttable
user-defined bond with generated dates assuming it is called (or put) on
relevant bond coupon dates. Returns call
price, yield, duration, and other risk measures at each date.
aaCallFloatlg_strip_cf(d_v,
d_e, d_t, d_f_cpn, d_l_cpn, freq, npa, acc_pay, acc_rt, d_rul, mgn, redemp_val,
rate_reset, intrp, df_crv_acc, df_crv_disc, hl, ex_sched1, table_type)
Given a term-structure of interest rates calculates the
worst (or best) price of a callable/puttable FRN assuming it is called (or put)
on relevant payment dates. Returns
price, yield, at each date.
aaCallFloatlg_fs_strip_cf(d_v, frn_cpn_tbl,
flleg_r_rate, flleg_fixpay, df_crv_acc, df_crv_disc, acc_pay, acc_rt, intrp,
position, table_type)
Given a term-structure of interest rates calculates the
worst (or best) price of a callable/puttable user defined FRN assuming it is
called (or put) on relevant payment dates. Returns price, yield, at each date.
aaCallBond_strip_cf(princ,
d_m, cpn, freq, acc_bond, d_rul, d_v, ex_sched1, df_crv, hl, intrp, table_type)
Given a term structure of interest rates, calculates the
worst (or best) price of a callable or puttable bond assuming it is called (or
put) on relevant bond coupon dates. Returns
call price, yield, duration, and other risk measures at each date.
aaCallBond_fs_strip_cf(d_v,
cpn_tbl, bondnpa, df_crv, acc_pay, acc_accrued, intrp, table_type)
Calculates the worst (or best) price of a callable/puttable
user-defined bond assuming it is called (or put) on relevant bond coupon dates.
Returns call price, yield, duration, and
other risk measures at each date.
aaCallBondSeries_strip_cf(d_v, bondseries_tbl, freq,
acc_bond, ex_sched1, hl, d_rul, intrp, df_crv, table_type)
Given a term-structure of interest rates, calculates the
worst (or best) price of a callable (puttable) bond series assuming each bond
is called (or put) on relevant bond coupon dates.
aaCallBond_ytw_cf(price_callbond,
d_m, cpn, freq, acc_bond, d_rul, d_v, ex_sched1, table_type)
Given the price of a European, Bermudan or American style
callable (puttable) bond, calculates a yield to worst (yield to best) by
assuming it is called (put) on relevant coupon dates. Returns call price, yield, duration, and other
risk measures.
aaCallBond_dgen_OAS(d_s,
d_exp, d_dated, d_f_cpn, d_l_cpn, bondcpn_tbl, freq, acc_bond, hl, d_rul,
exdays, adj_units, atissue, ex_sched, df_crv, intrp, model_type, model_parms,
refine, price_clean, stat)
Given a benchmark curve, calculates the option adjusted spread
(OAS) and risk statistics (spread duration and spread convexity) for an
American or Bermudan style bond with both call and put options given a user
defined exercise schedule. The bond may
have varying notional and coupon amounts (e.g. amortizing). Several term structure models are supported.
aaCallBond_ytw_OAS(d_exp,
d_dated, d_f_cpn, d_l_cpn, cpn, freq, acc_bond, d_rul, d_v, ex_sched1, df_crv,
hl, intrp, price, price_type, rate_basis_mgn, acc_mgn, sprd_type, stat)
Given a benchmark curve, calculates the option adjusted
spread for a callable (or puttable) bond given the price. A simple worst price for a callable/puttable
analysis is used. The function also
calculates various risk statistics including BPV, duration, and convexity.
The following input descriptions apply to the dgen
functions listed above
Input Argument |
Description |
d_s |
Settlement Date |
d_t |
Terminating Date |
d_e |
Effective Date |
d_f_cpn |
Date of the first coupon |
d_l_cpn |
Date of the last coupon |
bondcpn_tbl |
Coupon payment table |
Freq |
Bond frequency |
acc_bond |
Accrual Method |
Hl |
|
d_rul |
Business Day Conventions |
Exdays |
Ex-dividend units |
adj_units |
Ex-dividend adjustment units |
Atissue |
At issue |
ex_sched |
Bond exercise schedule (call and put prices are per 100
notional) |
df_crv |
Discount factor curve |
Intrp |
Interpolation method to be used |
model_type |
Hull-White short rate model |
model_parms |
Volatility and the mean reversion constant. |
Refine |
Integer number to refine. |
Stat |
Statistic is to be output. |
The following input descriptions apply to functions
employing either the Hull-White or the Black-Karasinski (lognormal term
structure) model to value European-style callable/puttable bonds
Input Argument |
Description |
Princ |
Principal |
d_m |
Maturity date |
Cpn |
Coupon |
Freq |
Coupon payment frequency |
acc_bond |
Accrual method |
d_rul |
Business Day Conventions |
d_v |
Valuation Date |
d_exp |
Expiration date |
option_type |
Option Type (Call or Put) |
Ex |
Exercise Price |
df_crv |
Discount factor curve |
Hl |
|
A |
Mean Reversion Constant |
Vlt |
Volatility |
Intrp |
Interpolation Method (linear or Cubic spline) |
Stat |
Statistic selected for output |
For the Black-Karasinski (lognormal term structure) model,
the following parameter must be specified in addition to those listed in the immediately
preceding table:
Input Argument |
Description |
inter_p |
Number of time steps per coupon period |
The following input descriptions apply to functions
employing either the Hull-White or the Black-Karasinski (lognormal term
structure) model to value Bermudan or American-style callable/puttable bonds
Input Argument |
Description |
Optstyle |
American or Bermudan Style |
Princ |
Principal |
d_m |
Maturity date |
Cpn |
Coupon |
Freq |
Coupon payment frequency |
acc_bond |
Accrual method |
d_rul |
Business Day Conventions |
d_v |
Valuation Date |
d_exp |
Expiration date |
option_type |
Option Type (Call or Put) |
ex |
Exercise Price |
df_crv |
Discount factor curve |
hl |
|
a |
Mean Reversion Constant |
vlt |
Volatility |
intrp |
Interpolation Method (linear or Cubic spline) |
Iter_p |
Number of time steps per coupon period |
stat |
Statistic that is to be output |
The following input descriptions apply to the
function aaCallBond_dgen_OAS. Applicable to both American and Bermudan
style options
Input Argument |
Description |
d_s |
Settlement date |
d_exp |
Expiry date |
d_dated |
Dated date-date from which accrued interest is calculated
on newly issued securities. |
d_f_cpn |
Date of the first coupon after the dated date. |
d_l_cpn |
Date of the last coupon prior to the maturity date |
bondcpn_tbl |
Coupon payment table |
freq |
Bond Frequency |
acc_bond |
Accrual method |
hl |
|
d_rul |
Business day convention |
exdays |
Ex-dividend units |
adj_units |
Ex-dividend adjustment units |
atissue |
At issue |
ex_sched |
Bond exercise schedule (Call and put prices are per 100
notional) |
df_crv |
Discount factor curve |
intrp |
Interpolation method |
model_type |
Hull-White Short rate model |
model_parms |
Volatility and mean reversion constant |
refine |
Integer number of refine.
Number of iterations used in the algorithm. |
price_clean |
The clean price. |
stat |
The statistic to be selected. |
The following input descriptions apply to the
function aaCallBond_ytw_OAS
Input Argument |
Description |
d_exp |
Expiry date |
d_dated |
Dated date-date from which accrued interest is calculated
on newly issued securities. |
d_f_cpn |
Date of the first coupon after the dated date. |
d_l_cpn |
Date of the last coupon prior to the maturity date |
cpn |
Coupon payment table |
freq |
Bond Frequency |
acc_bond |
Accrual method |
d_rul |
Business day convention |
d_v |
Valuation Date |
ex_sched1 |
Exercise Schedule |
df_crv |
Discount factor curve |
hl |
|
intrp |
Interpolation Method |
price |
Price |
price_type |
Price type (worst or best price) |
rate_basis_mgn |
Rate quotation basis for the spread |
acc_mgn |
Accrual method of spread |
sprd_type |
Spread type (Absolute or relative) |
price_clean |
The clean price. |
stat |
The statistic to be selected. |
The aaCallBond_dgen_cf functions return the following results:
Returns a probability table for an American or Bermudan-style bond with either
an embedded call or put option given a user-defined exercise schedule. A key distinguishing feature of the analytics
provided by this function is the ability to introduce both a varying notional
as well as varying coupon amounts into the analysis.
The aaCallBond_dgen_p functions return the fair value and other
risk statistics including option price, the probability of the call being
exercised, probability of the put being exercised etc. for an American or
Bermudan-style bond.
The aaCallBond_dgen_strip_cf functions return either the worst or the
best price cash flow table.
The option
adjusted spread is the spread that the investor receives for assuming various
risks (including credit risk, liquidity risk, model risk), net of the cost of
the embedded option.
OAS = (total
spread) – (spread due to optionality)
The OAS
specifically excludes the cost of the embedded option. It allows the comparison of the value of a
callable bond with a non-callable bond or the comparison of two callable bonds
with different call provisions.
Spread duration
and spread convexity are defined as the sensitivity of a bond’s price with
embedded options to a change in its OAS. For a callable or puttable bond, a change in
the OAS does affect the cash flows an investor would receive. This is equivalent to a change in interest
rates. Thus, the spread statistics is
directly related to effective risk statistics.
The aaCallBond_ytw_OAS function outputs the option adjusted spread
for a callable or puttable bond given the current market price of the bond in
question. This function utilizes the
worst price for a given callable or puttable bond.
The
aaCallBond_dgen_OAS function outputs the option adjusted spread and
various risk statistics including spread duration, spread convexity and other
measures consistent with those of aaCallBond_dgen_p, given the worst price for
an American or Bermudan-style callable or puttable bond.
[1]
[2]
[3]
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.