Simulating Short Rates and Pricing Bonds in the Hull–White Model
Summary
The document discusses simulating the one-factor Hull–White short rate, whose drift includes mean reversion and a time-varying term calibrated to the yield curve. A basic Euler scheme advances the rate using the current drift plus a Gaussian shock. One response suggests small daily-scale steps for Monte Carlo paths, with larger steps as a possible speed tradeoff; the rationale is to resolve mean reversion. The discussion also notes that the model permits negative rates, so positivity should not be imposed as a simulation rule.
Simulation is not always needed: zero-coupon bond prices can be obtained in closed form once the model is calibrated, and trees are another alternative when a closed form is unavailable. Calibration choices depend on the model specification: the basic form can fit the curve and constant parameters, while time-varying volatility uses option-market information. A separate practitioner describes sequential Monte Carlo calibration of interval volatilities to caplet prices and reports a good fit in their example. These are practical suggestions rather than a general error analysis; the document does not establish an optimal time step or compare methods systematically.
Key ideas
- Euler discretization simulates the mean-reverting short rate with Gaussian increments.
- Small time steps can help represent mean reversion, though the best step size depends on the application.
- The Hull–White model permits negative rates, so simulated rates need not be constrained to remain positive.
- Zero-coupon bond prices have a closed-form treatment in the calibrated one-factor model, avoiding Monte Carlo for that task.
- Trees and Monte Carlo are alternatives, and caplet prices can be used to calibrate interval volatility.
Tags
Full text
# Simulating the short rate in the Hull-White model
# Simulating the short rate in the Hull-White model
What is the best way to simulate the short rate $r(t)$ in a simple one factor Hull White process? Suppose I have
$$ dr(t) = (\theta(t)-\alpha r(t))dt+\sigma dW_t $$
where $\theta(t)$ is calibrated to swap curve, constants $\alpha$ and $\sigma$ are calibrated to caps using closed form solution for zero-coupon bond options. The best way I can think to do it is an Euler discretisation, that is:
$$ r(t+\Delta t) = r(t) + \theta(t)\Delta t - \alpha r(t) \Delta t + \sigma \sqrt {\Delta t} Z $$ where $Z \sim N(0,1)$. In this case, I need $t$ to go from 0 to 10 years, ideally in 0.25 increments. But with Euler, I'd need to use small $\Delta t$, so perhaps 0.025 or less? Once I have string of $r(t)$, I can easily calculate $P(t,T)$ zero coupon bonds.
Appreciate any other ideas or if someone could point me in the right direction. I'm quite new to rates modelling!
## Answer by Richi Wa (score 6, accepted)
https://quant.stackexchange.com/a/10198
- In fact you can calibrate $\theta(t)$ piecewise constant and $\alpha$ and $\sigma$ to bond prices only. You don't need the swaption prices in mM. If you let $\sigma(t)$ depend on $t$ (this is called the generalized Hull-White model) then you need information about the options market.
- For the model as you write it you don't necessarily need MC to calculate zero-coupon bond prices and thus discount factors. It is not that easy but following procedures as described here could help.
- if you stick to MC: For $\Delta t$ I would use it small like $1/250 \approx 0.004$. This is one time-step per banking-day. You should be able to simulate many paths with all the $10*250=2500$ random variables. Without digging into the theoretical aspects of choosing the step-size. If this takes too long then double the step size $\approx 0.008$. Maybe much bigger steps work too. But this looks natural to me.
A remark: if there were no mean-reversion then I would use much bigger step-sizes. You could take steps up to the coupon dates. But in order to feel mean reversion I would keep the step size small. Another thing is negative rates. In HW you can have them and they exist in reality these days. Again: mean reversion to a non-negative $\theta(t)$ will keep rates positive most of the time if $\Delta t$ is small.
## Answer by wsw (score 2)
https://quant.stackexchange.com/a/10773
Once the single-factor Hull-White model is calibrated, you can compute zero-coupon bond prices in closed form (i.e., without running simulations). See http://en.wikipedia.org/wiki/Hull%E2%80%93White_model#Analysis_of_the_one-factor_model .
## Answer by Probilitator (score 1)
https://quant.stackexchange.com/a/10780
Note that you can also use trees instead of running monte carlo (if a closed form solution is not avaliable)
As far as I know it is even an industry standard to work with the Hull-White tree instead of monte-carlo.
For mote informiation you can have a look at the paper: USING HULL-WHITE INTEREST-RATE TREES
## Answer by ZRH (score 1)
https://quant.stackexchange.com/a/34647
Coming across the post somewhat late: I attempted the same, and had Bloomberg caplet data for calibration (6mth EURIBOR) at hand. I calibrate directly via MC simulation (Euler, as suggested by crunch): Starting off with current 6mth EURIBOR, choosing $\theta(t)$ to match curve implied forward 6mth EURIBOR, forward-stepping until the first caplet expiry and computing payoffs. I then vary sigma for this interval to match the caplet premium accurately. To match the next caplet premium, I start off the MC with the realizations of 6mth EURIBOR at the first caplet expiry. Again, varying sigma for the second interval until the second caplet premium is matched etc.
Perhaps not overly elegant (investing a bit of time, one may find an analytic way to work out the piecewise-constant $\sigma$ from Ornstein-Uhlenbeck formulae), but it is stable and matches caplet prices very well. For calibrating a ten-year cap on my laptop, and running the MC in Matlab, about 10s computation time will do.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.