﻿
Interest Rate Models
241
could be extended to allow for options on coupon bonds. These models remain important
for their analytic solutions, but have to a great extent been superseded by the approach
of matching the term structure, to be covered in the next chapter.
REFERENCES
Chan, K. C., G. A. Karolyi, F. A. Longstaff and A. B. Sanders, 1992, “An Empirical Comparison of Alterna-
tive Models of the Short-Term Interest Rate”, Journal of Finance, 47, 1209–1227.
Cox, J. C., J. E. Ingersoll and S. A. Ross, 1985, “A Theory of the Term Structure of Interest Rates”, Econo-
metrica, 53, 385–407.
Jamshidian, F., 1989, “An Exact Bond Option Formula”, Journal of Finance, 44, 205–209
Schroder, M., 1989, “Computing the Constant Elasticity of Variance Option Pricing Formula”, Journal of
Finance, 44, 211–219.
Vasicek, O. A.,1977,“An Equilibrium Characterisation of theTermStructure”, Journalof Financial Economics,
5, 177–188.
Enable VB.NET Users to Read, Write, Edit, Delete and Update PDF Document Metadata
16
Matching the Term Structure
In the previous chapter, the starting point was the continuous stochastic models for the
short rate of Vasicek and Cox, Ingersoll and Ross. From these models, analytic solu-
tions were obtained for zero-coupon bond prices and subsequently methods developed
for valuing options on bonds. In this chapter by contrast we model the short rate using a
discrete binomial tree. By so doing, we can match a given term structure of zero-coupon
prices and subsequently derive tree-based values for options on bonds.
In section 14.3, we used an example of an interest rate tree that allowed the matching
of zero prices. In this chapter, we describe how such a rate tree can be calculated so
that it matches the term structure and the associated volatilities. The price we pay, in
computational terms, is that analytic solutions are no longer available and an iterative
approach is needed to develop the binomial tree for the short rate.
When building binomial trees for equity options, the starting point involves two known
values, the current share price S and the (risk-free) interest rate r, from which a distribution
of share prices at the expiry date for the option is generated. The binomial tree is then
used to value options, or indeed any pattern of cash ﬂows that can be associated with the
nodes in the tree.
With binomial trees for interest rate options, the two known values are the current
zero-coupon value P and the cash ﬂow at maturity (equal to 1) from which a binomial
tree of interest rates is to be generated. The binomial tree is built up from the current
short rate and at each subsequent time step an iterative process ensures that the tree up
to and including the present time step can be used to match the appropriate zero-coupon
bond price seen in the market. At each time step in the tree, the rates in the cross-section
are linked together by a formula that reﬂects the local volatility. We can then solve for
the remaining unknown rate to ensure that the interest rate tree correctly prices the zero-
coupon bond corresponding to that time step in the tree. Thus the tree, unlike share price
trees, has a drift that varies at each time step. This solution process is done in time-series
fashion with increasing time steps until bond maturity is reached.
The associated models are in the BOND2.xls workbook. There are two relatively simple
sheets (LnNormal and Normal) and two using the more complicated Black, Derman and
Toy tree (one illustrating the building of the tree and the second using the tree to value a
zero-coupon option). The simple trees use continuously-compounded interest rates while
the BDT trees use discretely-compounded interest rates.
16.1 TREES WITH LOGNORMALLY DISTRIBUTED INTEREST
RATES
Figure 16.1 shows the zero-coupon bond prices for different maturities (and hence the
current term structure of interest rates) and also volatilities. The rate tree which has been
calculated to be consistent with the zero prices and short-rate volatilities is shown in range
B48:E51. In fact, the bond prices and volatilities shown in columns H and J have been
VB.NET PDF - WPF PDF Viewer for VB.NET Program
C#.NET PDF Create, C#.NET PDF Document Viewer, C#.NET PDF Windows Viewer, C#.NET search text in PDF, C#.NET edit PDF bookmark, C#.NET edit PDF metadata, C#.NET
VB.NET PDF- View PDF Online with VB.NET HTML5 PDF Viewer
C#.NET PDF Create, C#.NET PDF Document Viewer, C#.NET PDF Windows Viewer, C#.NET search text in PDF, C#.NET edit PDF bookmark, C#.NET edit PDF metadata, C#.NET
244
derived from this rate tree as a demonstration of consistency. We now explain how the
rate tree has been obtained.
47
48
49
50
51
A
B
C
D
E
F
G
H
I
J
K
Short-rate tree via fn LnNormally distributed short rates
Zero Price
Ln Short Rate Volatility
6.08%
7.17%
8.64%
10.08%
1
0.941
0.00%
5.11%
6.28%
7.46%
2
0.885
0.1700
0.00%
0.00%
4.56%
5.53%
3
0.830
0.1600
0.00%
0.00%
0.00%
4.10%
4
0.777
0.1500
Figure 16.1 Final rate tree, demonstrated to be consistent with zero prices and volatilities
Figure 16.2 shows the same initial market information on zero prices and short-rate
volatilities together with a two-period short-rate tree and a two-period price tree for a
two-year bond, face value 1. The periods are of length one year.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
A
B
C
D
E
F
G
H
I
J
K
Binomial Term Structure Models
LnNormally distributed short rates
Ln Short Rate
Maturity
Zero Price
Zero Yield
Volatility
Face (L)
1.00
1
0.941
6.08%
delt
1.00
2
0.885
6.11%
0.17
p
0.50
3
0.830
6.21%
0.16
p*
0.50
4
0.777
6.31%
0.15
Short-rate tree : two periods
Using Goal Seek
6.08%
7.00%
=ru
Set cell
B18
4.98%
=rd
To value
0.00
=C12*EXP(-2*\$H\$7)
)
Changing
C12
Zero price tree : two periods
=(\$K\$7*D16+\$K\$8*D17)/EXP(C12)
0.886
0.93
1.00
0.95
1.00
test value
0.132
1.00
=100*(B16-D7)
Figure 16.2 Prices and yields for zero-coupon bonds with volatilities for short rates
In the lognormal tree, the cross-sectional relationship to be satisﬁed by the interest rates
in adjacent cells at each time step i is:
lnr
u
/r
d
D 2i
This relationship can be rewritten as r
d
Dr
u
exp[2i] which explains the formula in
cell C13. We then use the two-period short-rate tree to value the cash ﬂows of a two-period
zero-couponbond. Bondsarepriced in the zero pricetreeassumingthatupanddown interest
rates are equally likely and discounting using the respective rates in the short-rate tree.
For example, starting with the one-year rate r of 6.08% in cell B12, the short rate has an
equiprobable chance of increasing to r
u
or decreasing to r
d
in the following period. With
atrial value of 7% for r
u
in C12, the formula in cell C13, linking to the interest rate in
cell C12 and the short-rate volatility in cell H7, produces a value for r
d
of 4.98%. When
these rates are used to price the bond in the two-period price tree, the two-year zero price
is 0.886. Note the formula in cell C16, which is the discounted expected value of the bond
one year before maturity if the rate increases, discounted using the C12 (here 7%) rate.
The problem now involves one unknown element (C12, currently 7%) in the per period
rate tree and one known bond price (here the two-year zero price of 0.885 in cell D7).
How to C#: Modify Image Metadata (tag)
C#.NET PDF Create, C#.NET PDF Document Viewer, C#.NET PDF Windows Viewer, C#.NET search text in PDF, C#.NET edit PDF bookmark, C#.NET edit PDF metadata, C#.NET
C# PDF Library SDK to view, edit, convert, process PDF file for C#
RasterEdge WPF PDF Viewer provides C# users abilities to view, annotate, convert and create PDF in WPF application. C#.NET: Edit PDF Metadata.
Matching the Term Structure
245
For consistency, the value in cell C12 needs changing such that the B16 cell formula
evaluates to 0.885, or a better way, the B18 test value (which is the difference between
the two-year zero price and cell B16, multiplied by 100 to aid convergence) needs to be
zero. To do this, we use Goal Seek in the bond price tree, by setting cell B18 to a value
of 0 by changing the value of C12 in the rate tree. As Figure 16.3 shows, the value in
cell C12 changes from 7% to 7.17%. The price tree incorporates equal probabilities for
up and down moves and a valuation formula at each node that is very similar to that used
in trees for equity option valuation.
The rate tree is built forwards in time, starting with time step 2 (since the ﬁrst zero
yield can be used at step 1) and ending with the time step representing the maturity of
the bond on which we wish to value the option, with the Goal Seek operation carried out
at each step. The Goal Seek operation ensures that the drift of the tree at each time step
matches the drift implied by the equivalent market zero-coupon price.
11
12
13
14
15
16
17
18
19
A
B
C
D
E
F
G
H
I
J
K
Short-rate tree : two periods
Using Goal Seek
6.08%
7.17%
=ru
Set cell
B18
5.11%
=rd
To value
0.00
=C12*EXP(-2*\$H\$7)
)
Changing
C12
Zero price tree : two periods
=(\$K\$7*D16+\$K\$8*D17)/EXP(C12)
0.885
0.93
1.00
0.95
1.00
test value
0.000
1.00
=100*(B16-D7)
Figure 16.3 Finding short-rate tree entries with Goal Seek to produce correct zero price of 0.885
The complete four-period rate tree, shown in Figure 16.4, can be achieved in this step-
by-step manner. However, it is easier to use the BinZeroRateTree function, shown initially
in Figure 16.1. The zero prices (in H48:H51) and short-rate volatilities (in J48:J50)
resulting from the rate tree exactly match the prices and volatilities used to build the tree.
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
A
B
C
D
E
F
G
H
I
J
K
Short-rate tree : three periods
Using Goal Seek
6.08%
7.17%
8.64%
=ruu
Set cell
B29
5.10%
6.28%
=rud
To value
0.00
4.56%
=rdd
Changing
D22
Zero price tree : three periods
0.830
0.86
0.92
1.00
0.90
0.94
1.00
test value
0.000
0.96
1.00
1.00
Short-rate tree : four periods
Using Goal Seek
6.08%
7.17%
8.64%
10.08%
=ruuu
Set cell
B42
5.10%
6.28%
7.46%
=rudu
To value
0.00
4.56%
5.53%
=rddu
Changing
E34
4.10%
=rddd
Zero price tree : four periods
0.777
0.80
0.84
0.90
1.00
0.85
0.88
0.93
1.00
test value
0.000
0.91
0.95
1.00
0.96
1.00
1.00
Figure 16.4 Completing short-rate tree with Goal Seek to ensure consistency with zero prices
C# WPF PDF Viewer SDK to view, annotate, convert and print PDF in
PDF Online. Convert PDF Online. WPF PDF Viewer. View PDF in Image to PDF. Image: Remove Image from PDF Page. Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete
C# TIFF - Edit TIFF Metadata in C#.NET. Allow Users to Read and Edit Metadata Stored in Tiff Image in C#.NET Application. How to Get TIFF XMP Metadata in C#.NET.
246
Amore concise way to summarise the short-rate tree uses just two vectors. The x vector
contains the highest interest rate for each of the time steps in the short-rate tree. The k
vector contains the multiplicative link between the cross-sectional cells, corresponding to
exp[2i].
The process of building the tree by matching the sequence of bond prices would
normally be made more efﬁcient by instead calculating a tree of so-called Arrow–Debreu
prices. However, the repeated applications of Goal Seek used here provide an easier route
to understanding the process of building the tree.
We now have a short-rate binomial tree (matching the current term structure of zero
prices and associated volatilities) that can be used to value options bonds.
16.2 TREES WITH NORMAL INTEREST RATES
The only difference between the calculations in the LogNormal sheet just described and
the Normal sheet that follows is in the speciﬁcation of the volatility relationship linking
the short rates in the binomial tree. In the normal tree, the cross-sectional relationship to
be satisﬁed by the interest rates in adjacent cells at each time step i is:
r
u
r
d
D2i
which can be rewritten as r
d
Dr
u
2i which explains the formula in cell C13 that
sets up the additive link. Note that we are now trying to match the volatility of the short
rate (in cells H7:H9). Thereafter the process of building the rate tree follows in exactly
the same way as in the previous sheet (Figure 16.5).
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
A
B
C
D
E
F
G
H
I
J
K
Binomial Term Structure Models
Normally distributed short rates
Short Rate
Maturity
Zero Price
Zero Yield
Volatility
Face (L)
1.00
1
0.941
6.08%
delt
1.00
2
0.885
6.11%
0.0100
0.0095
0.0090
p
0.5
3
0.830
6.21%
p*
0.5
4
0.777
6.31%
Short-rate tree : two periods
Using Goal Seek
6.08%
10.00%
=ru
Set cell
B18
8.00%
=rd
To value
0.00
=C12-2*\$H\$7
Changing
C12
Zero price tree : two periods
=(\$K\$7*D16+\$K\$8*D17)/EXP(C12)
0.860
0.90
1.00
1.92
1.00
test value
-0.025
1.00
=B16-D7
Figure 16.5 Building the short-rate tree assuming normally distributed short rates
The result is the rate tree as shown in Figure 16.6. The rate tree has been produced from
the same BinZeroRateTree user-deﬁned function. (The initial parameter in the function
speciﬁes whether rates are assumed normally or lognormally distributed.)
47
48
49
50
51
A
B
C
D
E
F
G
H
I
J
K
Short-rate tree via fn Normally distributed short rates
Zero Price
Short Rate Volatility
6.08%
7.14%
8.33%
9.34%
1
0.941
0.00%
5.14%
6.43%
7.54%
2
0.885
0.0100
0.00%
0.00%
4.53%
5.74%
3
0.830
0.0095
0.00%
0.00%
0.00%
3.94%
4
0.777
0.0090
Figure 16.6 Interest rate tree calculated assuming normally distributed short rates
C# HTML5 PDF Viewer SDK to view PDF document online in C#.NET
PDF Online. Convert PDF Online. WPF PDF Viewer. View PDF in Image to PDF. Image: Remove Image from PDF Page. Edit URL. Bookmark: Edit Bookmark. Metadata: Edit, Delete
VB.NET PDF Library SDK to view, edit, convert, process PDF file
PDF Metadata Edit. Offer professional PDF document metadata editing APIs, using which VB.NET developers can redact, delete, view and save PDF metadata.
Matching the Term Structure
247
16.3 THE BDT TREE
The Black, Derman and Toy (BDT) tree follows on from the simpliﬁed lognormal tree,
but with the difference that the short-rate tree now has to match the volatility of the zero
yields as opposed to the volatility of the log short rates.
The LnNormal sheet contained the relationship:
lnr
u
/r
d
D 2i
as the cross-sectional link between the short rates in the binomial tree and the short-rate
volatility. In the BDT sheet, the BDT version of the lognormal tree is constructed, where
the relationship:
lny
u
/y
d
D 2
R
i
is the cross-sectional link between the yields in the BDT tree and the zero-yield volatility.
There are two implications: ﬁrst, the sequential process of setting the short rate volatility
then matching the drift is replaced by a single optimisation that attempts to simultaneously
match the volatility and drift in the tree; second, the single optimisation does not give us
an exact match to zero-coupon prices.
In Figure 16.7 the implementation of Jamshidian’s (1991) method for ﬁtting the BDT
tree to zero yields and volatility is illustrated. The BDT sheet has two distinct sections:
the entries in columns E to H match the zero-coupon yields while the entries in columns K
to N match both the zero yields and the yield volatilities. Interest rates change from the
continuously-compoundedformusedinprevioussheets tothe discretely-compounded form.
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
A
B
C
D
E
F
G
H
I
J
K
L
M
N
O
P
Black, Derman & Toy Short-rate Tree (Jamshidian)
delt
1.00
0
1
2
3
4
1
2
3
4
Zero yields, given
6.27%
6.30%
6.41%
6.51%
Zero prices, from given yields
0.9410
0.8850
0.8300
0.7770
P
u
(guess / goal seek)
0.9000
0.8000
0.7500
P
u
(solution) via fn
0.9310
0.8650
0.8029
P
d
0.9810
0.9641
0.9014
P
d
(solution)
0.9499
0.8991
0.8486
Zero prices, from Pu and Pd
0.8850
0.8300
0.7770
Yield volatilities (σR(i)), given
17.00%
16.00%
15.00%
y
u
(from P
u
)
11.11%
11.80%
10.06%
y
u
(solution)
7.41%
7.52%
7.59%
y
d
(from P
d
)
1.94%
1.85%
3.52%
y
d
(solution)
5.27%
5.46%
5.63%
Yield volatilities, from y
u
and y
d
87.29%
92.77%
52.53%
Yield volatilities
17.00%
16.00%
15.00%
y test
-702.8561 -767.7268 -375.3433
Kvec
5.7300
7.1321
0.9593
Kvec (solution)
via fn
5.7300
7.1321
0.9593
via fn
1.4049
1.3511
1.2997
Xvec
10.77%
20.39%
6.40%
Xvec (solution)
via fn
10.77%
20.39%
6.40%
via fn
7.39%
8.75%
9.85%
Short-rate tree
Short-rate tree (solution)
6.27%
10.77%
20.39%
6.40%
6.27%
7.39%
8.75%
9.85%
1.88%
2.86%
6.68%
5.26%
6.48%
7.58%
0.40%
6.96%
4.80%
5.83%
7.26%
4.49%
Zero price tree
Zero price tree (solution)
0.7837
0.7627
0.7797
0.9398 1.0000
0.7776
0.8036
0.8459
0.9103 1.0000
0.9031
0.9102
0.9374 1.0000
0.8491
0.8802
0.9295 1.0000
0.9299
0.9349 1.0000
0.9075
0.9449 1.0000
0.9324 1.0000
0.9571 1.0000
1.0000
1.0000
The zero price tree built using Jamshidian’s method and annual time steps does not
ve an exact ﬁt for the price of the four-year zero-coupon bond (0.7770 in cell H7),
ith 0.7837 in cell E38 from the initial values for P
u
and 0.7776 in cell L38 from the
olution. Bjerksund and Stensland (1996) show how greater accuracy can be achieved
16.4 VALUING BOND OPTIONS USING BDT TREES
he purpose of building a binomial tree for the short rate is to allow us to build a tree
or the associated zero price and subsequently to value options on the zero-coupon bond.
he ZCBOption sheet uses the BDT tree to value European and American put options
ith expiry in four years on a zero-coupon bond with maturity in 10 years.
As shown in Figure 16.8, we continue using the sequence of zero-coupon yields (zvec
row 8) and yield volatilities (sigvec in row 9) extending out to year 10. We employ the
ser-deﬁned array functions BDTKvec (in row 15) and BDTXvec (in row 16) to generate
e short-rate tree. The values for steps 0 to 3 agree with the solution values seen in
eshort-rate tree from the previous BDT sheet. We then use the short-rate tree to build
price tree for the asset on which the option is written, a 10-year zero-coupon bond
Figure 16.9). This gives the bond a current value of 0.5042 (in cell B36) compared to
emarket price of 0.5020 (in cell L13).
The options are then valued in a similar way to equity options. The option payoffs at
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
A
B
C
D
E
F
G
H
I
J
K
L
Zero price
0
1
2
3
4
5
6
7
8
9
10
0
0.5042
0.5069
0.5180
0.5402
0.5737
0.6194
0.6775
0.7475
0.8275
0.9144
1.0000
1
0.5647
0.5707
0.5866
0.6130
0.6510
0.7010
0.7630
0.8358
0.9172
1.0000
2
0.6181
0.6288
0.6491
0.6802
0.7229
0.7776
0.8438
0.9199
1.0000
3
0.6668
0.6819
0.7070
0.7432
0.7913
0.8514
0.9225
1.0000
4
0.7115
0.7315
0.7620
0.8041
0.8586
0.9251
1.0000
5
0.7538
0.7794
0.8162
0.8654
0.9275
1.0000
6
0.7954
0.8275
0.8719
0.9299
1.0000
7
0.8380
0.8781
0.9322
1.0000
8
0.8840
0.9345
1.0000
9
0.9367
1.0000
10
1.0000
European Zero Option Value
0
1
2
3
4
0
0.1179
0.1360
0.1587
0.1881
0.2263
1
0.1146
0.1334
0.1570
0.1870
2
0.1078
0.1271
0.1509
3
0.0989
0.1181
4
0.0885
5
6
American Zero Option Value
0
1
2
3
4
0
0.2958
0.2931
0.2820
0.2598
0.2263
1
0.2353
0.2293
0.2134
0.1870
2
0.1819
0.1712
0.1509
3
0.1332
0.1181
4
0.0885
5
6
Figure 16.9 Zero option values using zero price tree (and short-rate tree) in ZCBOption sheet
250
The valuation tree uses probabilities of 0.5 for the up and down steps with the discount
rate taken from the corresponding cell in the short-rate tree.
The European put with an exercise price of 0.8 has a value of 0.1179 (in cell B51),
while the American put has a higher value of 0.2958 (in cell B62).
The BDT tree builds on the simple lognormal tree and its popularity is due to the ease
with which the term structure of zero prices and yield volatilities can be derived from
market prices. With a small number of additional iterations, as suggested by Bjerksund
and Stensland, a more accurate match to the term structure can be achieved.
16.5 USER-DEFINED FUNCTIONS IN Module1
The function allows spot rate trees with both normal and lognormal rates by incorp-
orating the parameter imod. The Newton–Raphson (NR) search uses a ﬁnite difference
approximation to the required derivative (slope):
Function BinZeroRateTree(inorm, zpvec, volvec, L, delt)
’ generates binomial spot rate tree
’ inorm = 1 for normal rates, 2 for ln-normality
’ continuous interest rates only
’ uses BinZeroPrice fn
Dim radj, atol, zpk, vkd, rk, fr1, fr, fdashr
Dim i As Integer, j As Integer, k As Integer, n As Integer
Dim RTmat() As Variant
n= Application.Count(zpvec)
ReDim RTmat(n, n)
atol = 0.0000001
RTmat(1,1) = -(Log(zpvec(1) / L)) / delt
’ solve for RTmat column-by-column
For k = 2 To n
zpk = zpvec(k)
vkd = 2Ł volvec(k - 1)Ł Sqr(delt)
’ use NR search to solve for rk, with ﬁnite difference fr1
rk = RTmat(1,k - 1)
Do
RTmat(1, k) = rk + radj
For i = 2 To k
If inorm = 1 Then RTmat(i, k) = RTmat(i - 1,k) - vkd
If inorm = 2 Then RTmat(i, k) = RTmat(i - 1,k)
Ł
Exp(- vkd)
Next i
fr1 = BinZeroPrice(L, RTmat, k, delt) - zpk
RTmat(1, k) = rk
For i = 2 To k
If inorm = 1 Then RTmat(i, k) = RTmat(i - 1,k) - vkd
If inorm = 2 Then RTmat(i, k) = RTmat(i - 1,k) Exp(- vkd)
Next i
fr = BinZeroPrice(L, RTmat, k, delt) - zpk
’ ﬁnite difference approximation toderivative
fdashr = (fr1 - fr) / radj
rk = rk - (fr / fdashr)
Loop While Abs(fr) > atol
Next k
BinZeroRateTree = RTmat
EndFunction