﻿
252
xvec(i) = (((puvec(i - 1) + pdvec(i - 1)) / (puvec(i) + pdvec(i))) - 1) /((0.5
Ł
(1+ 1/ kvec(i)))Oi)
Next i
BDTXvec = xvec
EndFunction
SUMMARY
The process needed to build binomial trees explains why bond options are much more
difﬁcult to value than equity options. But matching the term structure is a prerequisite for
the practical valuation of bond options in ﬁnancial markets today. Fortunately, we have
used risk-neutral valuation and binomial trees extensively when valuing equity options.
Thus our focus in this chapter has been on the iterative methods needed for the building
of binomial trees for interest rates. The BDT tree used to illustrate the valuation of
zero-coupon options is popular with practitioners.
REFERENCES
Bjerksund, P. and G. Stensland, 1996, “Implementation of the Black–Derman–Toy Interest Rate Model”,
Journal of Fixed Income, 6, 67–75.
Black, F., E. Derman and W. Toy, 1990, “AOne-Factor Model of Interest Rates and its Application to Treasury
Bond Options”, Financial Analysts Journal, 46, 33–39.
Clewlow, L. and C. Strickland, 1998, Implementing Derivatives Models, John Wiley & Sons, Chichester.
Jamshidian, F., 1991, “Forward Induction and Construction of Yield Curve Diffusion Models”, Journal of Fixed
Income, 1, 62–74.
Enable VB.NET Users to Read, Write, Edit, Delete and Update PDF Document Metadata
Appendix
Other VBA Functions
This appendix provides additional examples of user-deﬁned functions for short-term fore-
casting, ARIMA modelling, calculating splines and eigenvalues and eigenvectors. There
is a brief introduction on each application. The spreadsheets themselves are less impor-
tant than the associated VBA functions, whose code can be examined in the VBE Code
window. The associated workbook is called OTHERFNS.xls.
FORECASTING
The functions associated with the 4Cast sheet are based on time-series analysis typically
applied to pastmonthly sales data for a product or a product group. Time-series forecasting
methods assume that existing sales patterns will continue into the future, hence they give
better results in the short term than the long. Sales data is ‘averaged’ in different ways,
which ensures that recent data is given more weight in the average than data way back
in the past. Short-term forecasts are constructed by projecting most recent averages one
Firstly, visual inspection and other techniques suggest the appropriate underlying model
for the data generating process. If the data oscillates randomly about an average ‘level’,
the model is assumed to be of the form:
data D levelC error
type A
If the data displays trend (an average level that changes systematically over time), the
model is assumed to be of the form:
data D level C trend C error
type B
If it oscillates regularly with a ﬁxed frequency related to a seasonal effect, the model is
assumed to be of the form:
data D level C trend
Ł
seasonal
factor C error
type C
where the seasonal factors average to one.
Having decidedthe appropriate data-generating model for a data series, choose a method
together with its required parameters and get period-by-period forecasts. These are esti-
mates of the ‘average’ size of series next period, based on past data up to the most
recent observation. For type A data, these forecasts can be moving averages. Alterna-
tively, ‘averaging’ past data can involve exponentially weighted averages. Exponential
smoothing methods can be crafted to apply for all three types of series. The user-deﬁned
functions ESvec, ESHoltvec and ESWintervec return exponentially smoothed forecasts for
the different data series types, each requiring the data (referred to as dvec) and different
input parameter values.
How to C#: Modify Image Metadata (tag)
edit, C#.NET PDF pages extract, copy, paste, C#.NET rotate PDF pages, C#.NET search text in PDF, C#.NET edit PDF bookmark, C#.NET edit PDF metadata, C#.NET
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.
254
The underlying updating equation for exponentially smoothed forecasts is:
new forecast D ˛
Ł
data C 1  ˛
Ł
old forecast
The smoothing constant ˛ (between 0 and 1) determines how quickly the forecast responds
to changes.
The 4Cast sheet contains three sales series of different types (type A in column B,
type B in column I and type C in column O).
Looking ﬁrst at the sales data of type A, six-period moving average forecasts of sales are
given (column D) and also forecasts from simple exponential smoothing with alpha D 0.1
(column F). The function MAvec(B11:B34, D3) returned the entries in column vector
D11:D34, after using the transpose function to get column vector output. The entries in
column F are from the functions ESvec(B11:B34, F5, F3), again after transposing.
The coding of the user-deﬁned functions, such as MAvec, ESvec, etc. starts with initial-
isation of variables, then continues with updating of the ‘average’. The main variables in
the code are dvec (data) and fvec (forecasts). These vectors are declared as variants with
names incorporating ‘vec’–fvec for forecasts, lvec for period-by-period ‘level’, tvec for
period-by-period trend values. The vectors are dimensioned to hold n values, the updated
values (one for each time period or data point). For seasonal data, we need to convert
period i to the appropriate season and the user-deﬁned function MMod does this.
All these methods assume that the future level of sales can be forecast using combi-
nations of past data points. For example, the moving average is a weighted average of
alimited number of data points, the weights being equal (or zero) in this case. In expo-
nential smoothing, it can be demonstrated that the forecast is a weighted average of past
data in which the weights decrease in a geometric series. In both cases, a combination
of past data is used to produce the forecast, but the weights themselves depend on the
particular method applied. In contrast, the Box–Jenkins approach (illustrated in the next
section under the title ARIMA) aims to determine the optimal set of weights for the past
data points and makes forecasts ahead from the resulting combination.
ARIMA MODELLING
Some of the simpler autoregressive integrated moving average models referred to as
ARIMA models can be implemented in Excel, in combination with Solver optimisation.
Usually, the estimation of such models is of the black box variety–present the data to
the software package, wait, then receive the answers–with few clues as to the mechanics
used by the software. In developing Excel implementations, it is necessary to take a closer
look at the computations, paying attention to the production of good ﬁrst-stage parameter
estimates so as to ensure that the second-stage (using Solver) proceeds smoothly. The ﬁrst-
stage estimates can be coded as VBA functions while the second-stage requires Solver,
so this has been automated in the form of macros.
The procedure for ARIMA modelling that we describe follows the process used by
Box and Jenkins (and described in Pecar, 1994). The ﬁrst step is to check whether or
not the data is stationary, and if not to transform it to achieve stationarity, usually by
differencing. This turns the problem from choosing an ARIMA model for the original
data into choosing an ARMA model for the transformed data. The second step is to
estimate the parameters of the ARMA model, generally using non-linear least squares
(NLS). The choice of order (p, q) for the ARMA model is usually decided on the basis
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.
C# PDF Library SDK to view, edit, convert, process PDF file for C#
accordingly. Multiple metadata types of PDF file can be easily added and processed in C#.NET Class. Capable C#.NET: Edit PDF Metadata. PDF SDK
Appendix: Other VBA Functions
255
of the autocorrelation and partial autocorrelation functions of the data to be modelled.
The third step is to check that the residuals from the ARMA model resemble white noise,
using an appropriate test (usually the Q-test). Steps 2 and 3 can be cycled through as
various combinations of p and q are tried. The process combines art and science in equal
measure, though there are also some ‘goodness of ﬁt’ criteria available to help in choosing
the best model. A selection of diagnostic tools is provided in the workbook, starting with
functions for calculating sample autocorrelations and partial autocorrelations functions,
including functions for the Q-tests from Box–Pierce and from Box–Ljung.
The ﬁrst steps in applying ARIMA modelling in Excel include checking on stationarity
by inspecting a chart of the series and then differencing the series where required. In the
second step, charts of the autocorrelations and partial autocorrelations at different lags
can be constructed from the user-deﬁned functions ACFk and PACFk which return the
correlations at lag k. Inspection of these charts directs the choice of AR and/or MA terms
to be estimated in the ARMA model. In the ARMA sheet, we illustrate the estimation
procedure for three different series in columns D, G and N, row 34 and below. Inspection
of the AC and PAC functions for these three series computed in rows 7 to 18 suggests
ﬁtting an AR model to series 1, an MA to series 2 and an ARMA model to series3. We
illustrate in turn the estimation of a ﬁrst-order autoregressive model (denoted AR(1)), a
second-order moving average model (MA(2)) and an ARMA(1,1) model, using functions
and macros. There is also a user-deﬁned function which returns initial parameter estimates
for any ARMA(p, q) model ready for presentation to Solver.
The estimation of ARMA models with only autoregressive (AR) terms requires ordinary
least squares regression and thus exact parameter estimates are obtained in a single stage.
The function ARpvec returns the results of a multiple linear regression of the data series
on its lagged values using the LINEST function. In the ARMA sheet, the ARpvec function
is used to estimate the parameters of an AR(1) process.
The inclusion of moving average (MA) terms in an ARMA model forces the estima-
tion procedure to involve two stages, with initial estimates used as starting values for
an optimisation routine to generate the ﬁnal estimates. Box and Jenkins (1984) suggest
how to ﬁnd good initial estimates for the MA parameters and their idea is implemented
in the MAqvec0 function. They start by calculating (q C 1) autocovariances for the data
series, and then use an iterative process, starting with the MA parameter estimates set
to zero, until the residual variance is minimised. In the spreadsheet these initial esti-
mates (in cells G26:G28) are then used to give a series of residuals (errors) for the
MA(2) process. Note that the residual for a particular time period depends not on the
data series, but instead on the residuals for the previous two periods (see formula in
cell I34). With the chosen initial estimates the residual sum of squares (in cell G30)
has a value of 1.067. We now use Solver to search through alternative combinations
of parameters whilst trying to reduce the ensuing residual sum of squares. This can be
achieved through Excel commands or automated in a VBA macro, (which is invoked
with the CtrlCShiftCB keystroke combination). The code for this subroutine (called
MA2qvec) is set out in ModuleBM. The improved parameter estimates are shown in
cells I26:I28 and these model values reduce the size of the residual sum of squares
to 1.053.
For an ARMA model, we require initial estimates for the AR parameters and these are
obtained from the Yule–Walker equations that link the autocovariances with the theoretical
parameters. The initial AR parameter estimates are obtained (using the ARMApqvec0
function) (see cells N26:N28). In the spreadsheet, these initial estimates are then used to
How to C#: Basic SDK Concept of XDoc.PDF for .NET
XDoc.PDF for .NET supports editing PDF document metadata, like Title, Subject, Author, Creator, Producer, Keywords, Created Date, and Last Modified Date.
VB.NET PDF File Compress Library: Compress reduce PDF size in vb.
Document and metadata. All object data. File attachment. Flatten visible layers. VB.NET Demo Code to Optimize An Exist PDF File in Visual C#.NET Project.
256
generate a series of residuals for an ARMA(1,1) process. Note that for an ARMA(1,1)
model, the residual for a particular time period now depends both on the series and the
residual from the previous period (as shown in the formula in cell P35). The residual sum
of squares, from the initial estimates, is 27.047 (cell N30). Exactly as for the MA2 process,
Solver is applied to produce improved parameter estimates (in cells P26:P28). The Solver
optimisation can be controlled by subroutine ARMA11pqvec, which is invoked using the
CtrlCShiftCC keystroke combination.
SPLINES
Splines provide a useful way of generating a smooth curve to represent some x–y data
points. The purpose could be interpolation (where the curve is required to pass through
all the data points) or a more general ﬁtting process (where the curve aims to best ﬁt but
not necessarily pass through all the points). In contrast to alternatives such as ﬁtting high-
order polynomials, one advantage of splines is that they require only a small number of
parameters. Low-order polynomials are ﬁtted piecewise to the intervals between succes-
sive data points, the parameters of the polynomials being chosen to produce a smooth
curve by matching up values and slopes at the interval ends. We concentrate on cubic
splines, ensuring that the ﬁtted function and its ﬁrst and second derivatives are contin-
uous. The functions developed in this module (ModuleC1) implement the calculations
for the standard (interpolating) cubic spline. In addition, we have included a function for
the generation of a set of cubic basis splines that can then be used in deriving a curve
of best ﬁt.
Starting with a set of data points, in the terminology of splines the x values are referred
to as knots, and the y values as function values associated with the knots. Fitting the
spline involves linking each pair of adjacent knots with a cubic polynomial such that the
resulting spline function is smooth. For a cubic spline, this is achieved by constraining
the polynomials on either side of each knot to share the same second derivative value.
The function CubicSplinezvec returns the vector of second derivative values (called zvec)
at each of the knots, using the vectors of knots (kvec) and function values (ykvec) as
input arrays. The function calculates two arrays, a tridiagonal matrix (Tmat) and a vector
(vvec), then combines these by matrix multiplication to produce the vector of second
derivative values (zvec). The derivative values returned by function CubicSplinezvec are
used in the second function, CubicSplineValuey. This interpolates for a speciﬁc value
of x (called xstart) producing the ‘y value’ from the appropriate ﬁtted spline segment.
For a natural cubic spline function, the second derivative of the spline function at each
end of the x range must equal zero. For a speciﬁc value of xstar, the ﬁrst step is to
determine the pair of knots between which it lies before selecting the appropriate cubic
polynomial joining the knots and ﬁnally calculating the spline value for xstar. The spline
value uses a multiplication formula with variable references to the ﬁrst (br) and second
(nzvec) derivatives.
The CubicSplineValuey function returns one spline value for each speciﬁc value of
xstar. As a consolidation exercise, think out how you would write a function that generates
spline values for a range of x values within the series of knot points.
While standard splines are very useful, one potential drawback is that changing the
value of a single point on the function to be interpolated has a global effect on the
spline function chosen. For instance, change the value in cell C20 (Spline sheet) from
VB.NET PDF Image Extract Library: Select, copy, paste PDF images
Get image information, such as its location, zonal information, metadata, and so on. Extract image from PDF free in .NET framework application with trial SDK
C# PDF File Compress Library: Compress reduce PDF size in C#.net
Comments, forms and multimedia. Document and metadata. All object data. Detect and merge image fragments. Flatten visible layers. C#.NET DLLs: Compress PDF Document
Appendix: Other VBA Functions
257
1.59 to 5.00 and note that the vector of second derivatives changes throughout. Note
also though (Chart1 sheet) that the amended spline function has retained the smoothness
to the eye.
In contrast, basis splines have the advantage of adapting locally but not globally if a
data point changes. The approach consists of deﬁning a ‘basis of splines’ where each
basis spline takes positive values over a number of intervals between adjacent knots but
is zero elsewhere. Each basis spline is centred on a different knot. By using a number of
different basis splines as building blocks, we create a single function by adding together
the values of all the splines at any point. The user chooses where to place the knots
(including some outside the range to be estimated) and can then use regression to ﬁnd
weights for each of the basis splines to best ﬁt the data points. Notice that the basis spline
approach is a more general ﬁtting task (an optimal ﬁt over all points), whereas the cubic
splines produce a function that ﬁts the data points perfectly. Basis splines are used as one
approach to ﬁtting the term structure of interest rates.
As with standard splines, we illustrate only the cubic form of basis splines, where
each of the cubic splines is positive over four consecutive intervals. For a given value of
xstar, we need to ﬁnd values for each of the four basis splines (indexed by integer istar)
with positive values. The function CubicBSplineValuei, with the matrix IKmat containing
knot values as additional input, uses the recurrence relationship of Powell to generate the
value of the (istar) basis spline. The recurrence relationship proceeds by ﬁrst calculating
three basis splines of degree one, then the two splines of degree two, thus allowing the
calculation of the single cubic spline of degree three.
EIGENVALUES AND EIGENVECTORS
Although eigenvalues play an important role in physics and engineering, they also serve in
ﬁnance for the estimation of principal components. A typical application is to decompose
risk (represented by a covariance or correlation matrix from asset returns) into a number of
linearly independent variables (the principal components or eigenvectors). The eigenvalues
give the proportion of risk due to each of the eigenvectors.
Although there are more efﬁcient methods for larger matrices, the Jacobi method is
foolproof for all matrices that are real and symmetric (as are covariance and correlation
matrices). This method seeks to nudge the input matrix towards diagonal form by a
sequence of transformations or matrix rotations. Each transformation preserves the sum
of the diagonal elements (which will in due course become the eigenvalues), whilst
decreasing monotonically the sum of squares of the off-diagonal elements. The process
continues until the sum of squares falls below a certain value. (We have used a tolerance
of 10
19
for the loop to terminate.)
The function Eigenvaluesevec (in ModuleD1) is the main program, calling the inter-
mediate functions that form each Jacobi rotation. First, the rotation angle is calculated
(with the Jacobirvec function), then the rotation matrix constructed (in the JacobiPmat
function) and ﬁnally the current input matrix is updated (in the JacobiAmat function).
Within each loop of the main program, a new input matrix is generated and the sum of
its off-diagonal elements calculated. When the tolerance level is reached, the eigenvalues
are taken as the diagonal elements of the transformed input matrix.
The calculation of the associated eigenvectors (in the EigenvectorsEmat function)
follows the same pattern, except that an additional matrix (starting as the identity matrix)
258
that captures the cumulative effect of the transformations is also updated. When the
tolerance level is reached, the eigenvectors are the columns of this additional matrix.
REFERENCES
Box, G. E. P. and G. M. Jenkins, 1984, Time Series Analysis: Forecasting and Control, Molden Day, San
Francisco, CA.
INDEX
active-passive management 142
alpha 141
American option 164
early exercise 3, 180
Analysis ToolPak 26, 28, 86
data analysis 26
regression 127
appraisal ratio 140
ARIMA modelling 254
array function 3, 12, 23, 84, 128
Ctrl-Shift-Enter 13, 33, 35, 85
arrays 33
arrays, manipulating arrays in VBA 78
auditing buttons 20
auditing toolbar 19
autocorrelation function 255
BDT tree, valuing bond options 223, 247–8
beta 2, 101, 125, 126, 129–30
binomial approximation to normal 162, 175
binomial probabilities at nodes 169
binomial tree 2, 167
binomial tree parameters 168
binomial tree, for valuing zero-coupon bond
226
modelling short rate 223, 226, 243
multi-step 162
one-step 162
simpliﬁed 168
terminal share price distribution 167
valuing American options 164
Black’s bond option formula 223, 227
Black’s currency option formula 188
Black-Scholes formula 2, 75, 157–9, 185–7,
192, 223
Black-Scholes formula, lognormal version
210
Black-Scholes formula, reciprocal gamma
version 211
Black-Scholes formula, using normal moments
210
call option 157
CAPM
2, 101, 125, 129, 158
chart wizard 24
chart wizard button 24
convexity 228
coupon bond 223, 225
coupon bond value 226
CRR tree 173
comparison with LR tree 179
convergence 176
for American options 180
option pricing formula 176
parameters 168, 174
probability of ‘up’ move 174
cumulative distribution 13
cumulative percentage frequency 13, 15
data table 20, 111, 176, 191, 233
with one input 20
with two inputs 22
automatic recalculation 23
column input 22
row input 22
dividends 2, 163, 185
duration 228
dynamic cells 21
Edgeworth distribution 213
Edgeworth option valuation 214–5
efﬁcient frontier 105
efﬁcient frontier, constraints on portfolio
weights 111
efﬁcient frontier, Huang and Litzenberger
109
260
Index
efﬁcient frontier, minimum variance portfolio
105, 116
efﬁcient frontier, portfolio 105–6, 110
efﬁcient frontier, portfolio weights 61
eigenvalues 257
eigenvectors 257
European option 159
European option on coupon bond, CIR model
238
European option on coupon bond, Vasicek
model 235
European option on zero-coupon bond, CIR
237
European option on zero-coupon bond,
Vasicekl 234
Excel function 52, 73
AVERAGE() 12
BINOMDIST() 176
COMBIN() 11, 169
CORREL() 12, 130
COVAR() 12, 130
EXP() 10, 171
FACT() 11
FREQUENCY() 12
HLOOKUP() 16, 130
IF() 18, 74, 130
INDEX() 17, 128, 146
INTERCEPT() 12, 127
LINEST() 12, 29, 127
LN() 11, 226
MATCH() 17
MAX() 12, 182
MIN() 12
MINVERSE() 11, 36–7
MMULT() 11, 35, 37, 82
NORMDIST() 12, 15, 204
NORMINV() 12, 15
NORMSDIST() 12, 15, 76, 186
NORMSINV() 12, 15, 135, 199
OFFSET() 169
PERCENTILE() 15, 84
QUARTILE() 12, 14, 48
RAND() 11, 199
RSQ() 12
SLOPE() 12, 127
SQRT() 11
STDEV() 12
STEYX() 12, 29, 127
SUMPRODUCT() 79, 104, 145
TRANSPOSE() 11, 33, 37, 82, 104
VAR() 146
VLOOKUP() 16
Excel Object Browser 42, 44, 81
exercise price 157
exponential smoothing 253
exposure analysis 146
exposure weights 147
formula palette 10
forward rate 224
Garman-Kohlhagen formula 187
general formulas 18
geometric Brownian motion 159
Goal Seek 3, 31, 211, 245
hedge portfolio 158–9, 190
delta hedged 190
delta-gamma hedged 191
hedge ratio 160
horizon wealth 134
horizon wealth, percentile 135
implied probability 162
implied volatility 165, 211
Manaster and Koehler 212
interest rate 233
CIR model 223, 236
term structure 223–4
Vasicek’s model 223, 231
investment strategy, active 139
passive 139
Jensen’s measure 140
JR tree 170
JR tree, parameters 168, 170
JR tree, probability of ‘up’ move 171
log returns 126, 131
kurtosis 212
skewness 165, 212
lognormal distribution of share price 173
lognormal moments 125, 134, 136, 179
LR tree 178
LR tree, parameters 178
LR tree, probability of ‘up’ move 178
macro ARMA11pqvec 256
Chart1 152
ChartNew
57
ChartNew1 58
ChartNew2 59
DelDuplicates 52
Eff0 63
Eff1 64
EffFrontier1 122
EffFrontier2 122
Factorial 45
Factorial1 45, 54, 63–4
Factorial2 54
Factorial3 54
NPPlotData 61
NPPPlotData 60
Quartiles 51
Index
261
Quartiles1 56
recorder 40, 43, 57, 69
recorder, absolute references 45
recorder, editing its code 46, 58, 63, 70
recorder, in action 46
recorder, relative references 45, 70
Style1 146, 151
Style2 147, 152
Style3 149
to generate efﬁcient frontier 122
macros 3, 39, 40, 67
dealing with errors 45, 67
running them
45, 67
stepping through 68
matrices 33
inversion 35–6
multiplication 34, 104, 109
matrix dimensional conformity 34, 79, 82–3
dimensions 33
mean-variance portfolio theory 1, 101, 125
Module sheet 44, 66, 74
Monte Carlo simulation 3, 164, 197
moving averages 253
namebox 28
Newton-Raphson method 211
normal moments 125, 136, 179
normal probability plot 59, 132
normal, cumulative distribution function N(d)
175, 185
normality of log returns 2, 125, 131, 165,
209
numerical integration 203
optimisation 2
option 157
Option Base 182
option, payoff formula 159
delta 189
discounted expectation of option payoff
168, 172, 175, 231
gamma 189
‘greek’ parameters 189
hedge parameters 189
on commodity futures 188
on currencies 187
payoff distribution 198
parameter, ‘iea’ 183
‘imod’ 183, 229, 239
‘iopt’ 77, 163, 173, 175, 183, 187
partial autocorrelation function 255
paste function 9
paste name 10, 28
percentage frequency 13
performance measurement 139
performance measurement ratios 140
portfolio optimisation 62, 101
efﬁcient portfolio 103
weights 104, 108
portfolio return 82, 103, 104, 113
portfolio risk 103
portfolio variance 82, 103, 104, 113, 130
Problem Three—see risky assets, combining
risky assets
Problem Two, see risky assets, combining
risky assets
put option 157
put-call parity 163, 186
random sampling, antithetic variables 199
ordinary 198
quasi-random 200
range name 27
reciprocal gamma distribution 211
regression 2, 28, 101, 125
replicating portfolio 160
Reset—see VB window, Reset button
residual return 125
residual standard error 127
residual variance 126
risk aversion coefﬁcient 113–4, 116
risk, annualised 128
risk-free asset 113
risk-free rate 125, 161
risk-neutral discount factor 199, 232
risk-neutral expectation 231
risk-neutral probability measure 161, 192
risk-neutral valuation 160
risk-return representation 101, 103, 105
risky assets 113
combining risky assets- Problem 2 115,
142
combining risky assets- Problem 3 117,
129
combining with risk-free- Problem 1
113–4
rolling-period style analysis 146
share price, behaviour 159, 171, 197
multiplier 171, 178
risk-neutral drift 171, 199
volatility 165, 171, 174, 199
Sharpe’s measure 140
short rate 2, 231
mean reversion 231
tree 243
tree calculations for lognormal rates 244
volatility 226, 233, 236, 243–4, 246–7