I need some help for the parametrization of the volatility parameter in the Hull-White model.

I have the necessary Caplet vols and I calibrated the HW model to match the Caplet and hence the Cap prices exactly.

But I calibrated the volatility as one factor for every Caplet. I didn't parametrize the volatility as a function of time for each T.

That could be the reason why my volatility is always higher than the volatility of the previous Caplet. I do not get a proper volatility term structure that is consistent with the market volatility structure, though my prices fit exactly.

I posted already something here: Cap price as bond options

The topic was a different (more fundamental) one, but the answer I am refering now to is that:

Hull-White calibration on cap volatilities The first step is to strip caps vol to get caplet vols. See for example: http://www.smileofthales.com/financial/cap-floor-pricing-stripping-the-basics/

Let's suppose you want to calibration on caplets with expiries T1

You start with the option with the nearest expiry T1, then determine the volatility σ(T1) that enables you to match the T1 caplets price.

Then, you move on to T2, the caplet price is a function of σ(T1) that is already known and σ(T2), so you determine the value of σ(T2) enabling you to match the T2 and so on, until you get to Tn, and you are done.

In the Hull-White paper from 2000 they provide this information about calibrating the vol parameter: enter image description here

Now I am kind of confused.

1) How do I set up the parametrized volatility function and what do I calibrate for? For the time parameter or the other two parameters?

enter image description here 2) This would yield in always same parameters and just the Time is changing? Do i then calibrate the T?

3) What are the corner points in time? I want to calibrate to each Caplet. Are my T the points in time for the Caplets? Starting with 0.5 for the first Caplet (6month tenor) and then going on to 1 - 1.5 - 2.0 - 2.5 and so on until every Caplet is calibrated?

I am really confused and would appreciate If some could serve me a fundamental great answer about the parametrization.

I hope you can help me.

Thanks in advance

  • $\begingroup$ Hello Christian. If you choose a piecewise-constant Hull-White volatility function, with as many points as the expiries of the caplets you are trying to calibrate to, then you can do the bootstrap procedure described in the answer you are referring to. $\endgroup$
    – byouness
    Dec 3, 2019 at 11:05
  • $\begingroup$ Hello, thank you. I didn't bootstrap the Caplet volatilities on my own. How do I proceed with calibrating the Hull-White volatilities as a function of time? $\endgroup$ Dec 3, 2019 at 11:23
  • 1
    $\begingroup$ Let's suppose you have 3 caplets to simplify, with expirires $0 < T_1 < T_2 < T_3$. You have the caplet's price as a function of $\sigma_1$ = HW vol on the interval $[0, T_1]$, so you determine the vol that enables you to match the caplet's price. Then you move on to the next, i.e. $T_2$, the caplet's price now is a function of $\sigma_1$ (already calibrated) as well as $\sigma_2$ = HW vol on the interval $]T_1, T_2]$, so you determine the value that gives you the market's price. Then you do the same thing for $T_3$. I hope it is clear now. $\endgroup$
    – byouness
    Dec 3, 2019 at 14:59
  • $\begingroup$ But why is the second Caplet's price a function of σ1? How do I do that? I first calibrate the single volatility to match the first Caplet's price. Than I Calibrate the single volatility to the second Caplet's price and so on. But how do I calibrate the volatilities that they depend on each other. I would appreciate if you could explain me the function a bit more. And do I just calibrate the single volatility parameter for each time interval or do I need to parametrize the function as posted in the screenshots from Hull-White (2000)? $\endgroup$ Dec 4, 2019 at 7:55
  • 1
    $\begingroup$ The other question establishes that the caplet's price with expiry $T_2$ is given by Black's formula with a vol given by: $$\begin{aligned} \Sigma^2(0,T_2)&=B(T_2,T_2+\delta)^2\int_0^{T_2}e^{-2a(T_2-u)}\sigma^2(u)du \\&=B(T_2,T_2+\delta)^2 \left[\int_0^{T_1}e^{-2a(T_2-u)}\sigma^2(u) du+\int_{T_1}^{T_2}e^{-2a(T_2-u)}\sigma^2(u)du\right]\\ &=B(T_2,T_2+\delta)^2\left[\sigma_1^2\int_0^{T_1}e^{-2a(T_2-u)}du+\sigma_2^2\int_{T_1}^{T_2}e^{-2a(T_2-u)}du\right] \end{aligned}$$ at this stage, only $\sigma_2$ is unknown. It can be computed by equating: $\Sigma_{HW}(0,T_2)=\Sigma_\text{market}(0,T_2)$ $\endgroup$
    – byouness
    Dec 4, 2019 at 10:17

1 Answer 1


In the question you are referring to, we have established that the caplet has a closed-form formula under Hull-White model, with the Black implied volatility $\Sigma$ a function of the Hull-White volatility $\sigma$ term structure from 0 and until the caplet's expiry $T$: $$ \Sigma^2(0,T)=B(T,T+\delta)^2\int_0^T e^{−2a(T−u)}\sigma^2(u)du $$

To calibrate on a basket of caplets, with expiries $0 < T_1 < T_2 < \dots < T_n$, you can choose a piecewise-constant term structure for the Hull-White volatility, with pillars corresponding to these expiries $(T_i)_i$. That is: $$ \sigma(t) = \sigma_i, \quad T_{i-1} < t \leq T_i $$

In this case, you can use a bootstrap procedure to calibrate each value $\sigma_i$ on a calibration instrument. In the first step, only $\sigma_1$ is unknown, and you solve for it: $$ \begin{aligned} \Sigma^2_\text{market}(0, T_1) &= \Sigma^2(0, T_1) \\ &= B(T_1, T_1 + \delta)^2 \sigma_1^2 \int_0^{T_1} e^{-2a(T_1 - u)}du \end{aligned} $$ Then, you move on to $T_2$, and solve for $\sigma_2$: $$ \begin{aligned} \Sigma^2(0,T_2)_\text{market} &= \Sigma^2(0,T_2)\\ &=B(T_2,T_2+\delta)^2\left[\int_0^{T_1}e^{−2a(T_2−u)}\sigma^2(u)du+\int_{T_1}^{T_2}e^{−2a(T_2−u)}\sigma^2(u)du \right] \\ &=B(T_2,T_2+\delta)^2 \left[\sigma^2_1 \int_0^{T_1}e^{−2a(T_2−u)}du+\sigma^2_2 \int_{T_1}^{T_2}e^{−2a(T_2−u)}du \right] \end{aligned} $$ and so on...

But what about the mean-reversion?

It depends on what you want to use your Hull-While calibrated model for, but two possibilities come to mind:

  • Input a mean reversion value (determined for example statistically from the observation of rates time-series, or using macro-economic reasoning, etc.);
  • or, Before doing the routine above, consider the volatility constant and calibrate the mean-reversion and constant vol that minimize the sum of squared errors accross all your calibration basket. Then use this mean-reversion in the bootstrap routine described above.

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Not the answer you're looking for? Browse other questions tagged or ask your own question.