Hull-White: Vasicek that matches today's curve exactly
Take the Vasicek SDE, make the long-run mean a function of time, calibrate $\theta(t)$ to today's yield curve, and now your model reprices every market bond exactly. The one short-rate model production desks actually run.
Vasicek has three parameters $(\kappa, \theta, \sigma)$ and a yield curve that depends on those plus today's short rate. With only three knobs you cannot fit a full multi-maturity term structure exactly — you get the best Vasicek curve, not the market's. Hull-White (1990) fixes this with one structural change: replace the constant long-run mean $\theta$ with a time-dependent function $\theta(t)$, calibrated to make the model's today bond prices coincide with the market's $P^M(0, T)$ for every $T$. The dynamic *evolution* of the rate keeps Vasicek's Gaussian structure; the *static* fit becomes exact. That trade-off is why every fixed-income desk uses Hull-White (or close cousins) for swaption and cap pricing.
β Intro Β· expand
Try first (productive failure)
Before the worked example: spend 60 seconds taking your best shot at this.
A guess is fine β being briefly wrong about a problem makes the explanation
land harder when you read it. This appears once per tutorial; skip
if you already know the trick.
60s
β Try first Β· expand
Worked example
Today's market discount factors are $P^M(0, 1\text{y}) = 0.95$ and $P^M(0, 2\text{y}) = 0.88$. Compute the continuously-compounded forward rate from year 1 to year 2, $f^M(1, 2) = -\ln(P^M(0, 2)/P^M(0, 1))$. This is the number any short-rate model fit to today's curve must reproduce, and the Hull-White $\theta(t)$ is chosen to make exactly this hold.
β Worked example Β· expand
Practice 1 of 3Type a fraction, decimal, or expression β mathjs parses it.
β Practice Β· expand
Reflection
Hull-White still allows negative rates (Gaussian dynamics, like Vasicek). Why did this not stop adoption in the post-2014 negative-rate environment in Europe, and what would tip a desk toward CIR or a shifted version of Hull-White?