Derivatives PricingInterest Rate ModelsHull-WhiteLibor Market ModelTerm Structure

Hull-White and the LMM Framework

Module 4 of 425 min readLevel: Hard

Setup

Why Interest Rate Models Differ from Equity Models

In equity models, the underlying (stock price) is directly observable and traded. In interest rate models, the "underlying" is an entire yield curve — an infinite-dimensional object. This creates structural differences:

  1. Consistency with the initial curve. A model must, by construction, produce bond prices consistent with the observed term structure today. Black-Scholes for equities does not face this constraint (there is only one observable — the spot price). An interest rate model that misprices the initial curve is not miscalibrated: it is wrong.

  2. Multi-asset nature. Interest rates at different tenors are correlated but not perfectly. A one-factor model cannot capture realistic correlation structure across the curve.

  3. No-arbitrage drift conditions. Under the risk-neutral (or any equivalent) measure, the drift of interest rate processes is not free — it is constrained by the requirement that discounted bond prices are martingales (Heath-Jarrow-Morton framework).

Notation and Conventions

Throughout:

  • P(t,T)P(t, T): price at time tt of a zero-coupon bond paying 1 at TT. P(0,T)P(0, T) observed from the initial curve.
  • f(t,T)f(t, T): instantaneous forward rate at time tt for maturity TT, related to the bond price by P(t,T)=exp ⁣(tTf(t,s)ds)P(t, T) = \exp\!\left(-\int_t^T f(t,s)\,ds\right).
  • rt=f(t,t)r_t = f(t, t): short rate (instantaneous spot rate).
  • L(t;T,T+τ)L(t; T, T+\tau): simply-compounded Libor rate for period [T,T+τ][T, T+\tau] set at time tt.
  • δi=Ti+1Ti\delta_i = T_{i+1} - T_i: tenor of the ii-th period.
  • All rates are continuously compounded unless explicitly stated "simply compounded."

Hull-White One-Factor Model

SDE and Structure

The Hull-White (HW1F) model (Hull and White, 1990) specifies short-rate dynamics under the risk-neutral measure Q\mathbb{Q}:

drt=(θ(t)art)dt+σdWt.dr_t = (\theta(t) - a\, r_t)\, dt + \sigma\, dW_t.

Parameters:

  • a>0a > 0: mean-reversion speed (constant).
  • σ>0\sigma > 0: short-rate volatility (constant).
  • θ(t)\theta(t): time-dependent drift, calibrated to exactly fit the initial term structure.

The model is affine: the bond price takes the form

P(t,T)=exp ⁣(A(t,T)B(t,T)rt),P(t, T) = \exp\!\left(A(t, T) - B(t, T)\, r_t\right),

where B(t,T)B(t,T) and A(t,T)A(t,T) are deterministic functions.

Exact Calibration to the Initial Curve

For the bond price formula to be consistent with the observed P(0,T)P(0, T), the drift θ(t)\theta(t) must satisfy:

θ(t)=fM(0,t)t+afM(0,t)+σ22a(1e2at),\theta(t) = \frac{\partial f^M(0, t)}{\partial t} + a\, f^M(0, t) + \frac{\sigma^2}{2a}(1 - e^{-2at}),

where fM(0,t)=tlnPM(0,t)f^M(0, t) = -\frac{\partial}{\partial t}\ln P^M(0, t) is the market instantaneous forward rate. This is derived by demanding Pmodel(0,T)=PM(0,T)P_{\text{model}}(0, T) = P^M(0, T) for all TT and differentiating.

Key insight. The θ(t)\theta(t) term absorbs the entire shape of the initial forward curve. Once calibrated, the model prices all zero-coupon bonds exactly, by construction. This is the defining feature that distinguishes HW from Vasicek (which does not fit the initial curve exactly).

Bond Price Formula

B(t,T)=1ea(Tt)a,B(t, T) = \frac{1 - e^{-a(T-t)}}{a},

A(t,T)=lnPM(0,T)PM(0,t)+B(t,T)fM(0,t)σ24a(1e2at)B(t,T)2.A(t, T) = \ln\frac{P^M(0, T)}{P^M(0, t)} + B(t, T)\, f^M(0, t) - \frac{\sigma^2}{4a}\left(1 - e^{-2at}\right) B(t,T)^2.

This follows from the affine structure of the SDE combined with the exact calibration condition.

Caplet Pricing in Closed Form

A caplet is a call option on the Libor rate L(T0;T0,T1)L(T_0; T_0, T_1), paying δmax(L(T0;T0,T1)K,0)\delta \max(L(T_0; T_0, T_1) - K, 0) at T1T_1. Since Libor is related to bond prices by

1+δL(T0;T0,T1)=1P(T0,T1),1 + \delta\, L(T_0; T_0, T_1) = \frac{1}{P(T_0, T_1)},

a caplet is equivalently a put on a zero-coupon bond P(T0,T1)P(T_0, T_1) with strike X=1/(1+δK)X = 1/(1 + \delta K).

Under HW1F, the bond price P(T0,T1)=eA(T0,T1)B(T0,T1)rT0P(T_0, T_1) = e^{A(T_0,T_1) - B(T_0,T_1)r_{T_0}} is log-normal (since rT0r_{T_0} is Gaussian). The caplet has a Black's formula-type closed form:

Caplet(0)=P(0,T1)N(d2)1XP(0,T0)N(d1)1X,\text{Caplet}(0) = P(0, T_1)\, N(-d_2) \cdot \frac{1}{X} - P(0, T_0) \cdot N(-d_1) \cdot \frac{1}{X},

Wait — more precisely, using the bond-put expression, the caplet price is:

Caplet(0)=(1+δK)P(0,T1)N(d2)P(0,T0)N(d1),\text{Caplet}(0) = (1 + \delta K)\cdot P(0, T_1)\, N(-d_2) - P(0, T_0)\, N(-d_1),

d1=ln(P(0,T1)(1+δK)P(0,T0))σP+σP2,d2=d1σP,d_1 = \frac{\ln\left(\frac{P(0,T_1)(1+\delta K)}{P(0,T_0)}\right)}{\sigma_P} + \frac{\sigma_P}{2}, \qquad d_2 = d_1 - \sigma_P,

σP=σB(T0,T1)1e2aT02a.\sigma_P = \sigma B(T_0, T_1) \sqrt{\frac{1 - e^{-2aT_0}}{2a}}.

Here σP\sigma_P is the standard deviation of lnP(T0,T1)\ln P(T_0, T_1) under the T0T_0-forward measure.

Limitations of HW1F

  • Gaussian rates. Because rtr_t is Gaussian (driven by a Brownian motion with no lower bound), the model allows negative short rates with positive probability. This was historically considered a theoretical flaw but became empirically relevant post-2012 with negative ECB and BOJ rates.
  • One factor. The entire curve moves as a single linear factor (multiplied by B(t,T)B(t,T)). Realistic co-movements across short and long tenors require multi-factor extensions (two-factor Hull-White, G2++ model).
  • Constant σ\sigma and aa. A constant volatility structure cannot capture the volatility humps observed in caps and swaptions (vol peaked at 1–3 year tenors in most markets). Piecewise-constant σ(t)\sigma(t) is one extension.

The full lesson requires Premium

The complete derivation, the C++ / Python implementation, the validation tables, the quiz, and the interview-angle notes are part of Premium. Start a Premium plan to unlock every module in this track.