Callable and Puttable Bonds

Overview

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). 

Key Features

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.

 

FINCAD Functions

*       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.

Functions that calculate the fair value of a callable bond

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 Hull and White (or Ho and Lee) term structure model is used.

 

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 Hull and White (or Ho and Lee) term structure model is used.

 

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 Hull and White (or Ho and Lee) term structure model is used.

 

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 Hull and White (or Ho and Lee) term structure model is used.

 

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 Hull and White, while other FINCAD callable bond functions are based on trinomial trees.

 

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.

Functions that Produce Output Cash Flow Tables

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.

Functions that Calculate the Option Adjusted Spread (OAS)

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.

 

Description of Inputs

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

Holiday list

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

Holiday list

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

Holiday list

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

Holiday list

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

Holiday list

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.

Description of Outputs

Outputs produced by the dgen functions

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.

Functions which calculate the Option Adjusted Spread

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.

References

[1]          Hull, John C., (2002), Options, Futures and other Derivatives, 5th ed., New Jersey, Prentice Hall Inc.

[2]          Hull, John and White, Alan, (Spring 1996), ‘Using Hull-White Interest-Rate Trees’, Journal of Derivatives.

[3]          Hull, John and White, Alan, (Fall 1994), ‘Numerical Procedures for Implementing Term Structure Models I: Single Factor Models’, Journal of 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.