The document discusses pricing interest rate derivatives using the one factor Hull-White short rate model. It begins with an introduction to short rate models and the Hull-White model specifically. It describes how the Hull-White model can be calibrated to market prices by relating its parameter θ to the market term structure. The document then discusses implementing the Hull-White model using trinomial trees and pricing constant maturity swaps.
2. 2 of 13
dr(t) = µ(t,r(t))dt +σ(t,r(t))dW(t) (1.1)
Therefore, by no-arbitrage argument we get the price of a zero coupon bond with maturity T as:
P(t,T) = EQ
t [e− T
t rs ds
|Ft] (1.2)
The One Factor Hull White model was first established in the article “Pricing interest-rate derivative se-
curities” by John Hull and Alan White [Hull, 1990]. They extended the one factor state variable models
by Vasicek so that they are consistent with the current term structure of interest rates. In this section, we
concentrate on the instantaneous short-rate process under the risk neutral measure that evolves according
to
dr(t) = (θ(t)−ar(t))dt +σ dW(t) (1.3)
where σ and a are constants and θ is a deterministic function of time. These variables are chosen so
as to exactly fit the term structure of interest rates being currently observed in the market. The equation
(1.3) can be integrated to yield
r(t) = r(s)e−a(t−s)
+
t
s
e−a(t−u)
θ(u)du+σ
t
s
e−a(t−u)
dW(u) (1.4)
Therefore, r(t) conditional on Fs is normally distributed with mean and variance given by
E[r(t)|Fs] = r(s)e−a(t−s)
+
t
s
e−a(t−u)
θ(u)du
Var[r(t)|Fs] =
σ2
2a
(1−e−2a(t−s)
) (1.5)
1.2 Bond Option Pricing under Hull-White Model
Let P(t,T) be the price of a zero coupon bond maturing at T. Then by Itˆo’s lemma, we can show that
∂P
∂t
+(θ(t)−ar(t))
∂P
∂r
+
1
2
σ2 ∂2P
∂r2
−rP = 0
P(T,T) = 1 (1.6)
It is possible to find affine solutions for the price of the zero coupon bond, i.e. solutions of the form
P(t,T) = A(t,T)e−B(t,T)r(t)
(1.7)
where A(t,T) and B(t,T) are differentiable in t.
By substituting A and B in the PDE satisfied by the zero coupon bond (Equation 1.1), we get
∂A
∂t
−r
∂B
∂t
+(θ(t)−ar(t))(−AB)+
1
2
σ2
AB2
−rA = 0 (1.8)
Matching coefficients of r and 1 we obtain the following differential equations and their final time
conditions,
3. 3 of 13
∂A
∂t
−θ(t)AB+
1
2
σ2
AB2
= 0
∂B
∂t
−aB+1 = 0 (1.9)
A(T,T) = 1
B(T,T) = 0 (1.10)
Since B is independent of θ it can be solved using the Integrating Factor approach to solving differential
equations. The equation for A is solved using simple integration. The end result is as follows,
B(t,T) =
1
a
[1−e−a(T−t)
] (1.11)
A(t,T) = exp[−
T
t
θ(s)B(s,T)ds−
σ2
2a2
(B(t,T)−T +t)−
σ2
4a2
B(t,T)2
] (1.12)
1.3 Relationship between θ and other parameters
The goal of this section is to highlight the relationship between the time homogeneous variable, θ(t)
and the term structure of interest rate at time 0.
From previous section, we know that the affine structure of the discount factor, P(t,T) is expressed as
P(t,T) = A(t,T)e−r(t)B(t,T). Setting t = 0, taking logs on both side of this equation and substituting for
A(t,T) using Equation (1.12) we get,
−logP(0,T) = −log(A(t,T))+r(t)B(t,T)
=
T
0
θ(s)B(s,T)ds+
σ2
2a2
(B(0,T)−T)+
σ2
4a2
B(0,T)2
−r(0)B(0,T)
Let f(t,T) be the market instantaneous forward rate at time t for the maturity T. Then we know that
it can be expressed using the price of a zero coupon bond as,
f(t,T) = −
∂ logP(t,T)
∂T
Substituting t = 0 in equation for f and substituting for −logP(t,T), we get,
f(0,T) =
∂
∂T
T
0
θ(s)B(s,T)ds+
σ2
2a2
(B(0,T)−T)+
σ2
4a2
B(0,T)2
−r(0)B(0,T)
=
T
0
θ(s)
∂B(s,T)
∂T
ds+
σ2
2a2
∂B(0,T)
∂T
−1 +
σ2
2a2
B(0,T)
∂B(0,T)
∂T
−r(0)
∂B(0,T)
∂T
From previous subsection, we know that:
B(t,T) =
1
a
[1−e−a(T−t)
]
4. 4 of 13
Differentiating both sides by T gives,
∂B
∂T
= e−a(T−t)
= 1−aB(t,T) (1.13)
1−
∂B
∂T
= aB(t,T) (1.14)
Differentiating again with respect to T gives,
∂2B
∂T2
+a
∂B
∂T
= 0 (1.15)
Substituting Equation (1.14) in Equation (1.12) we can simplify f(0,T) to,
f(0,T) =
T
0
θ(s)
∂B(s,T)
∂T
ds−
σ2
2a
B(0,T)+
σ2
2a2
B(0,T)
∂B(0,T)
∂T
−r(0)
∂B(0,T)
∂T
(1.16)
If we differentiate again with respect to T, we get,
∂ f(0,T)
∂T
= θ(T)+
T
0
θ(s)
∂2B(s,T)
∂T2
ds−
σ2
2a
∂B(0,T)
∂T
+
σ2
2a2
∂B(0,T)
∂T
2
+B(0,T)
∂2B(0,T)
∂T2
−r(0)
∂2B(0,T)
∂T2
(1.17)
We use the result of B(t,T) and combine the Equations (1.16) and (1.17). A lot of terms cancel out due
to Equation (1.15) and we are left with,
af(0,T)+
∂ f(0,T)
∂T
= θ(T)−
σ2
2a
(1−e−2at
) (1.18)
Equivalently, we can express θ(t) in terms of forward rates and a. This result is useful during calibration
because it means that we only need to calibrate for a and σ and θ(t) is given by Equation (1.19)
θ(t) =
∂ f(0,t)
∂T
+af(0,t)+
σ2
2a
(1−e−2at
) (1.19)
2. Calibration
In this section we build on the theoretical framework outlined in previous section and calibrate the one
factor Hull White model to market prices.
In the first sub-section we show how to implement dual curve OIS-Libor bootstrapping for forward
rates and in the next sub-section we show how the cap volatilities are used for calibration of the short
rate model.
2.1 OIS Dual Curve Bootstrapping
We start off by bootstrapping the discount and forward curve using the market prices of fixed income
instruments. We adopt the post-crisis dual curve building methodology by selecting OIS (Overnight
Indexed Swap) discount curve and Libor forward curve. Due to the widening Libor-OIS spread it is
5. 5 of 13
TABLE 1 Bloomberg Instruments for EONIA
Tenor Bloomberg Quote(%)
O/N EUSWE1D Curncy −0.142
1W EUSWE1Z Curncy −0.140
1M EUSWEA Curncy −0.139
1Y EUSWE1 Curncy −0.250
2Y EUSWE2 Curncy 0.009
3Y EUSWE3 Curncy 0.012
5Y EUSWE5 Curncy 0.0077
7Y EUSWE7 Curncy 0.0329
10Y EUSWE10 Curncy 0.1095
15Y EUSWE15 Curncy 0.2596
no longer recommended to use only the swap rates to derive the Libor forward curve since the implicit
discounting of the market instruments is Overnight Indexed Swap rates.
We use Bloomberg market quotes for OIS rates to bootstrap the discount curve. These swap rates
denote the zero-coupon maturity rates in major currencies: SONIA for GBP, EONIA for EUR and
FedFunds for USD. In this instance, we use EONIA tickers to build the OIS curve. The list of tickers
used is provided in Table 1 and quotes are as of 16th October 2015 (MID PRICES). The OIS curve
bootstrapping uses the same methodology as single curve construction.
Once we have the discount curve, our aim is to bootstrap a forward curve so that the market quoted
instruments can be priced on it consistently. In order to strip the forward curve we choose the following
instruments,
• Deposit rates up to 1 year
• FRA rates up to 2 years
• Swap Rates (with respect to 6M floating rate) from 1 year onwards
Table 2 has Bloomberg market instruments and quotes used for projecting the 6-month EUR forward
curve, EURIBOR 6M, with day count convention of ACT/360. Quotes are as of 16th October 2015
(MID PRICES).
The remainder of this section discusses discrete time implementation of constructing discount and
forward curves. It assumes that there are N reset dates and Z(t,Tj) is the discount factor at time Tj. We
also assume that rs is the swap rate and τj is the accrual factor from time Tj−1 to Tj.
(In this subsection, since we have a P in the present value PV, we are using Z instead of P to denote
discount curve.)
In traditional LIBOR discounting, since the Libor swap rates are used for discounting, equating the
floating and fixed legs of an interest rate swap returns,
6. 6 of 13
TABLE 2 Bloomberg Instruments for EURIBOR 6M
Tenor Bloomberg Quote(%)
FRA 0×6M EUR006M Index −0.051
FRA 6×12M EUFR0F1 Curncy −0.043
SwapRate1Y EUSA1 Curncy 0.094
SwapRate2Y EUSA2 Curncy 0.099
SwapRate3Y EUSA3 Curncy 0.101
SwapRate5Y EUSA5 Curncy 0.329
SwapRate7Y EUSA7 Curncy 0.591
SwapRate10Y EUSA10 Curncy 0.938
SwapRate15Y EUSA15 Curncy 1.309
PVfloat = 1−Z(t,TN) = PVfixed =
N
∑
j=1
τjZ(t,Tj)rs
Given fixed swap rate, we can solve for discount factor Z(t,TN) using the above relation. Since
swaps are liquid instruments and market provides quotes for various maturities, several points on the
discount curve can be solved for by selecting varying maturity swap instruments and interpolation is
used for in-between reset dates. To summarize, in traditional Libor discounting we would first solve for
discount factor followed by calculation of the forward Libor using the equations,
Z(t,Tn) =
1−rn ∑n−1
j=1 τjZ(t,Tj)
1+rnτn
(2.1)
Ln−1,n =
Z(t,Tn−1)−Z(t,Tn)
Z(t,Tn)τn
(2.2)
In the post-2008 dual curve (Libor-OIS) bootstrapping, the discounting on swaps is done using
Overnight rates and, therefore, for a given par swap, we can compute the present value of it’s fixed and
floating legs given a set of reset dates by,
PVfloat =
n−1
∑
j=1
τjZ(t,Tj)Lj−1,j +Ln−1,nZ(t,Tn)τn (2.3)
PVfixed = rn
n
∑
j=1
τjZ(t,Tj) (2.4)
The discounting curve, Z(t,Tn), has been constructed from OIS rates as explained earlier. By recur-
sively setting the present values of both legs to be equal to each other for different maturity swaps, we
can now bootstrap the forward libor rates as,
7. 7 of 13
Ln−1,n =
rn ∑n
j=1 τjZ(t,Tj)−∑n−1
j=1 τjZ(t,Tj)Lj−1,j
Z(t,Tn)τn
(2.5)
We have implemented dual curve bootstrapping of forward rates using Cubic Spline and Linear In-
terpolation in MATLAB. Cubic Spline gives much smoother forward rates between reset dates of the
underlying instruments but it is computationally expensive. Linear interpolation, however, is quick to
run and but gives sharp transition at maturity dates. The output is shown in Figure (1).
FIG. 1. Forward and Zero Rates
2.2 Calibration to Cap Volatilities
An interest rate cap is a collection of caplets where each caplet is a call option on the forward rate,
L(ti−1,ti), from time ti−1 to ti. We use risk neutral pricing to show that the price of a caplet with strike
X and notional N at time t is given by,
Cplt(t,ti−1,ti,N,X) = NEQ
[e−
ti
t rs ds
τi(L(ti−1;ti−1,ti)−X)+
|Ft]
Forward rate, Li−1,i, can be defined in terms of the discount rates as,
L(t;ti−1,ti) =
1
τi
P(t,ti−1)
P(t,ti)
−1
Substituting the forward rate definition in the price of the caplet gives,
8. 8 of 13
Cplt(t,ti−1,ti,N,X) = NEQ
[e−
ti
t rs ds
τi(L(ti−1;ti−1,ti)−X)+
|Ft]
= NEQ
[e−
ti−1
t rs ds
P(ti−1,ti)τi(L(ti−1;ti−1,ti)−X)+
|Ft]
= NEQ
[e−
ti−1
t rs ds
P(ti−1,ti)
1
P(ti−1,ti)
−1−Xτi
+
|Ft]
= NEQ
[e−
ti−1
t rs ds
(1−(1+Xτi)P(ti−1,i))+
|Ft]
= N(1+Xτi)ZBP t,ti−1,ti,
1
1+Xτi
where ZBP(t,T,S,X) is the price of a European put option with strike X, maturity T written on a
zero coupon bond maturing at time S.
Cap is a collection of caplets each with it’s payment dates T = t0,...tn. Hence, we can express the
price of caps as,
Cap(t,T,N,X) = N
n
∑
i=1
(1+Xτi)ZBP t,ti−1,ti,
1
1+Xτi
(2.6)
Under the Hull-White model [Brigo, 2006, Sec. 3.3], we can get an analytical solution to the price
of the zero-coupon bond option. We first note that the price of a zero coupon bond put option written on
an underlying bond with maturity S at a given time t and strike X can be expressed under the forward
measure T as,
ZBP(t,T,S,X) = P(t,T)EQT
t (X −P(T,S))+
|Ft (2.7)
We now consider the forward bond prices P(t,S,T) = P(t,S)
P(t,T) and note that they are a martingale
under the QT measure. Hence, we can write,
dP(t,S,T)
P(t,S,T)
= (σB(r,S)−σB(r,T))dWT
(t) (2.8)
For a Hull-White model we know the variance of the short rate, σB is given in Equation (1.5),
σB(r,T) =
σ2
2a
[1−e−2a(T−t)
]
Since the forward bond price at time T is equal to P(T,S), we can write the Bond Option price using
the Black-Scholes formula for put options as,
ZBP(t,T,S,X) = XP(t,T)Φ(−h+σp)−P(t,S)Φ(−h) (2.9)
This result is useful for calibration because it gives us an analytical way of computing the prices of
caps (or floors) and matching them against the market prices of caps in order to get the best fit for a and
sigma. For Hull-White model one-factor model, we use the affine structure of P(t,T) to give,
σp = σ
1−e−2a(T−t)
2a
B(T,S)
9. 9 of 13
h =
1
σp
log
P(t,S)
P(t,T)X
+
σp
2
Market (brokers) like to quote implied Black volatilities of caps as opposed to prices. So we first
convert the Black-volatilities into prices using the Black-76 formula:
CpltBlack
(F,X,N,T,t,σ) = N(FΦ(d1)−XΦ(d2))
d1 =
ln(F
K )+ σ2T
2
σ
√
T
d2 = d1 −σ
√
T (2.10)
where F is the forward price of the underlying, X is the strike of the caplet, N is notional (assumed
to be 1) and σ is the volatility.
Hence the final steps involved in calibration of the one factor Hull-White model are,
1. Bootstrap Forward and Discount Curves as described in Section 2.1
2. Get Cap volatilites from the market
3. Convert to Cap Prices using Black’s Formula
4. Select initial guess for a and σ and compute cap prices using Equation (2.10)
5. Run a least squares solver to refine a and sigma until the model cap prices and market cap prices
are within tolerance bounds.
Figure (2) shows the fit to the cap volatilities using MATLAB’s solver, lsqcurvefit. The least-
squares solver converged with a maximum of 500 iterations and with a tolerance level of 10−3. We also
show uncalibrated model cap prices using initial guesses of a and σ. In order to compute θ(t), we use
the relationship as described in Section (1.3).
10. 10 of 13
FIG. 2. Calibration Fit to Market Cap Prices
At this point we could, in fact, use Monte Carlo Simulation to price interest rate derivatives. Al-
though this is not the approach we take in this submission, we have included a small simulation of a
calibrated Hull White model for illustration purposes. Figure (3) shows the distribution at the end of 1
year using daily time-steps.
FIG. 3. Short Rate Simulation with calibrated parameters
11. 11 of 13
3. Implementation of Trinomial Trees
After we have calibrated the Hull-White one factor model, we construct trinomial trees which are a
discrete time implementation of the stochastic differential equation (1.4). The Hull-White trees are
popular amongst the practitioners since they converge to the the continuous time model and replicate
the initial term structure. Due to their backwards in time approach they are also useful for pricing
early-exercise products like Bermudan Swaptions. At each node in the tree, working backwards, we can
determine whether it is optimal to exercise the option or not.
The references used for the tree implementation are [Brigo, 2006, Sec. 3.3.3] and [Hull, 2010, Pg.
708-718].
If we define a new process x as,
dx(t) = −ax(t)dt +σdW(t), x(0) = 0 (3.1)
or equivalently for s < t,
x(t) = x(s)e−a(t−s)
+σ
t
s
e−a(t−u)
dW(u)
Then we see that we can re-write the one-factor short rate Equation (1.4) as,
r(t) = x(t)+α(t) (3.2)
where
α(t) = f(0,t)+
σ2
2a2
(1−e−at
)2
(3.3)
The construction of trinomial tree discretization of the short rate is a two step process. In the first
stage, we construct a tree for the variable x that is initially 0 and then follows the process in Equation
(3.1). This is done by dividing the time horizon T into times t0 < t1 < ... < tN such that ∆t = ti+1 −ti
matches the option exercise date.
We define a node (i, j) in the tree such that the time index is i and the space index is j. We then
evolve the process x as defined in Equation (3.1) along the tree nodes. At a given node (i, j) the value
of x is xi,j = j(∆x) where ∆x is the vertical spacing between the tree nodes,
∆x =
√
3V∆t
The mean and variance of the tree are given by E[x(t + ∆t) − x(t)] = x(t)M = x(t)(−a∆t) and
VAR[x(t +∆t)−x(t)] =V = σ2
2a (1−e−2a∆t). The selection of ∆x is chosen to reduce error minimization.
We also select jmin and jmax so that the probabilities of the tree are always positive. Hull and White
showed that if jmax is set equal to the smallest integer greater than 0.184/(a∆t) and jmin = −jmax then
the probabilities are always positive. We use this result in the implementation.
The probability at the three branches from a given node are chosen so that these mean and variance
match those in the tree.
• Branch (a) is used if −jmax < j < jmax
• Branch (b) is used if j = −jmax
• Branch (c) is used if j = jmax
12. 12 of 13
As shown by Hull, it turns out the probability at a given node (i, j) is only dependent on j and hence
we can select the probabilities for the three branches as,
• Branch (a)
pu =
1
6
+
j2M2 + jM
2
, pm =
2
3
− j2
M2
, pd =
1
6
+
(j2M2 − jM)
2
(3.4)
• Branch (b)
pu =
1
6
+
j2M2 − jM
2
, pm =
−1
3
− j2
M2
+2jM, pd =
7
6
+
(j2M2 −3jM)
2
(3.5)
• Branch (c)
pu =
7
6
+
j2M2 +3 jM
2
, pm =
−1
3
− j2
M2
−2 jM, pd =
1
6
+
(j2M2 + jM)
2
(3.6)
In the second stage, we adjust the tree construction for x(t) and convert it into tree for r(t). We use
Equation (3.3) for α(t) and define αi = α(i∆t). At each point on the node α is computed iteratively so
that the initial term structure is matches exactly to r(t).
3.1 Example Implementation
We run through an example output of the Hull-White trinomial tree implementation. Let σ = 0.0114
and a = 0.0423. We select ∆t = 0.0192.
∆x = σ
√
3∆t = 0.0027
M = −a∆t = 0.000812
The Table 3 shows the initial Hull-White probabilities for 6 different tree nodes. The j represents
the space index and time index i is assumed to be 0. Notice that the reason pm probability stays the same
is because M is very low in the shown example.
TABLE 3 Hull-White Tree Probabilities
j 0 1 2 3 4 5
j∆x 0 0.0027 0.0054 0.0081 0.108 0.0135
pu 0.1667 0.1663 0.1659 0.1655 0.1650 0.1646
pm 0.667 0.6667 0.6667 0.6667 0.6667 0.6667
pd 0.1667 0.1671 0.1675 0.1679 0.1683 0.1687
4. Pricing Constant Maturity Swaps on Hull White Tree
A CMS (Constant Maturity Swap) is an interest rate swap where one party pays a swap rate of a fixed
tenor, known as the CMS rate and receives specified fixed or floating rate (usually on Libor). We have
13. 13 of 13
used [Theis, 2015] and [Hull, 2006] to get a better understanding of these products. We are going to
price floating/floating Constant Maturity Swaps where payer leg is tied to the CMS rate on a 2-year
swap and the receiver leg is tied to the Libor. The net value of the CMS is,
V(t) = Vfix(t)−VCMS(t)
Constant Maturity Swaps are unique because the reset dates of the CMS legs do not match the
payment frequency of the underlying swap. To illustrate this further, suppose that the reset dates of
the CMS legs are t1,t2,...tn but the underlying swap has payment dates ti + s1, ti + s2,...,ti + sn where
sj = j12
q where q is the payment frequency of the underlying swap.
Let rcms(ti) be the CMS rate at ti. Then give accrual factor τi and denoting the discount factor, as
before, to Z(t,ti + sj), we set the two legs to be equal at each reset date and find that the CMS rate is
equal to,
rCMS(ti) =
1−Z(ti,ti +sn)
∑n
j=1 τjZ(ti,ti +sj)
(4.1)
We create a small example to price a 1-year CMS swap where the CMS leg is tied to a 2-year swap
rate with reset legs every 6 months. In order to price it on a Hull-White tree, we first create a tree for
2-year and then recurse through the end nodes. For simplicity we match the tenor of the tree to be 6
months as well, so we can price exactly at each node without the need for any interpolation. At each
point on the tree node we compute the discount factor Z(ti,ti + 0.5) and use equation (4.1) to find the
swap rate.
In a more extensive implementation, we’ll have to extend the tree so that it can handle interpolation
between nodes, large number of nodes (space-efficiency) and time efficiency for looking up the correct
node.
5. Conculding Remarks
The aim of this submission was to calibrate and construct a one factor short rate model. In most trading
applications, at least a two factor Hull White model is used where the volatility, σ is driven by a second
stochastic differential equation with a Brownian Motion that is correlated to the one driving the rates.
This gives better fit to not just the cap volatilities for at-the-money (ATM) strike but to the entire cap or
swaption surface.
REFERENCES
BRIGO, DAMIANO AND MERCURIO, FABIO Interest Rate Models-Theory and Practice With Smile, Inflation and
Credit (2006), Second Edition Springer Finance
HULL, JOHN AND ALAN WHITE (1990) ”Pricing Interest-Rate-Derivative Securities”, Review of Financial Studies
HULL, JOHN AND BASU SANKARSHAN (2010) Seventh Edition Options, Futures, and other Derivatives, Pearson
India
THEIS, JOCHEN Modelling Interest Rate Derivatives (2015) MSc. Mathematical Finance Lecture Notes, Univ. of
Oxford, (Advanced Module 5)