Calibrating Hull–White Theta to a Bootstrapped Yield Curve
Summary
The document outlines how to choose the time-dependent drift function in the one-factor Hull–White short-rate model so the model reproduces today’s yield curve. It first recommends bootstrapping zero-coupon rates from market instruments: short maturities can use instruments such as rate futures or forward rate agreements, while longer maturities can be derived iteratively from coupon-bearing instruments such as swaps. The exact instruments depend on the currency and curve being modeled.
After bootstrapping, interpolate zero-coupon bond prices across maturities and derive instantaneous forward rates by differentiating their logarithms. The stated expression for theta uses the forward rate, its maturity derivative, and the model parameters kappa and sigma. This is a curve-fitting procedure; the response cautions that it calibrates to the yield curve alone. Fitting more complex products, such as options, may require time-dependent model parameters. Numerical differentiation and interpolation are practical sources of sensitivity, and the method is limited to the available curve horizon.
Key ideas
- Bootstrap zero-coupon rates from market instruments selected for the relevant currency and maturities.
- Interpolate zero-coupon bond prices to obtain a continuous term structure.
- Derive instantaneous forward rates from the maturity derivative of log bond prices.
- Set the Hull–White drift function using the forward curve, its derivative, and the model parameters.
- Yield curve fitting alone does not calibrate the model to options or other complex products.
Tags
Full text
# How to get set the theta function in the Hull-White model to replicate the current yield curve
# How to get set the theta function in the Hull-White model to replicate the current yield curve
I want to calibrate the HW one factor model to current market data. How do I set the function $\theta(t)$ in
$$ \mathrm{d}r(t) = \kappa(\theta(t)-r(t))\mathrm{d}t+\sigma\mathrm{d}W(t) $$ to replicate the current yield curve, i.e. what data do I look at to calibrate (Libor curves?) and how do I use these data to get $\theta$?
## Answer by Daneel Olivaw (score 9, accepted)
https://quant.stackexchange.com/a/38742
Concerning your first question, this depends on what curve, currency, etc. you are interested in. The general method for constructing yield curves is called bootstrapping which allows you to derive spot, zero-coupon rates from the known price of coupon-bearing instruments $-$ such as bonds or swaps. In general:
- You start picking short-term (typically less than 1 year), zero-coupon instruments, such as Forward Rate Agreements (FRAs), futures, Certificate Deposits (CDs) to start the curve;
- Then for longer maturities (typically longer than 1 year) you pick coupon-bearing instruments such as swaps and you iteratively bootstrap zero-coupon rates for those maturities from the prices of these instruments and the previous zero-coupon rates you already have.
For a Euro curve, you might look at rate futures for maturities lower than 1 year and to standard fixed-for-floating swaps for longer maturities to derive a Libor-based yield curve.
As to your second question, we assume you have a bootstrapped yield curve up to a maturity $T_{\max}$. Then you can derive the price of zero-coupon bonds $B(0,T)$ for a continuum of maturities $T \in [0;T_{\max}]$ by interpolation. As these prices are derived from market data, I will write them as $B^M(0,T)$.
Now, note that there exists a relationship between zero-coupon bonds and instantaneous forward rates $f(0,T)$ which is the following:
$$ f(0,T)=-\frac{\partial \ln B}{\partial T}(0,T) $$
Thus you can derive market-implied instantaneous forward rates $f^M(0,T)$ from the current term structure $\left(B^M(0,T):T \in [0;T_{\max]}\right)$ $-$ using numerical differentiation techniques such as finite differences.
Slightly rewriting your SDE:
$$ \mathrm{d}r(t) = (\theta(t)-\kappa r(t))\mathrm{d}t+\sigma\mathrm{d}W(t) $$
In order to match your bootstrapped term structure you need to set theta as follows:
$$ \theta(t) = \frac{\partial f^M}{\partial T}(0,t) + \kappa f^M(0,t) + \frac{\sigma^2}{2\kappa}(1-e^{-2\kappa t})$$
Note that with the calibration procedure described above you will calibrate the model only to the yield curve. If you want to calibrate to more complex products such as options you can turn parameters $\kappa$ and $\sigma$ into time-dependent functions: $\kappa(t)$, $\sigma(t)$.Shown in full with attribution under the source's licence. Licence: CC BY-SA 4.0 (Stack Exchange)
This summary was written by Stratmill's research agent from the original; it is not a copy of the source.