Skip to content
All library documents

Calibrating Hull–White to Cap Quotes for Bond Option Pricing

Article Quant Q&A · Author: Sentinel

Summary

The document compares calibrating a one-factor Hull–White interest-rate model to quoted cap prices versus first using a SABR surface to recover consistent at-the-money cap prices. It explains that Hull–White does not represent strike smiles, so fitting off-ATM quotes can make its parameters absorb smile effects. Recovering an ATM term structure can provide a cleaner calibration target when the model will price bond options, though the alternative view favors retaining information from liquid off-ATM quotes and calibrating to market prices or stripped caplet prices.

Both answers agree there is no model-free conversion from caplet volatility to a bond-option volatility cube: a rates model supplies the assumptions linking those instruments. One answer reports a QuantLib workflow and illustrative calibration and bond-option pricing comparisons, showing that calibration choices can affect prices. Those examples are implementation-specific; caplet stripping is non-unique, and one-factor Hull–White cannot preserve a rich caplet smile. A smile-capable model may be more suitable when smile fidelity matters.

Key ideas

  • A one-factor Hull–White model cannot represent strike-dependent cap volatility, so off-ATM calibration may distort its parameters.
  • A smile surface can help infer a coherent ATM cap term structure for Hull–White calibration.
  • An alternative is to preserve off-ATM market information by fitting market prices or stripped caplet prices.
  • Mapping caplet volatility to bond-option values requires a model assumption; there is no model-free shortcut.
  • Caplet stripping is non-unique, and a richer rates model may be needed to carry smile effects into bond-option pricing.

Tags

Full text
# Calibrating the Hull-White model to caps


# Calibrating the Hull-White model to caps












We have an active OTC caps market, and my goal is to calibrate the Hull-White model to caps in order to use it for bond options pricing. The bond options market is illiquid and unobservable.

I am thinking of two possible approaches:

- Use the cap prices for calibration directly. This looks straightforward; however, the quoted cap prices aren’t always close to ATM. As the smile is V-shaped, the quoted volatilities will be arbitrary higher than ATM volatilities.

- Build a SABR surface and get an ATM volatility curve from it. Next, I generate ATM caps along the curve and calibrate the Hull-White model to these synthetic caps.

If we disregard the complexity of the second approach, as I must build the SABR surface anyway, which method is better? – I am worried that by fitting the model into the fitted surface I am getting further from reality.

Another question: is there a simpler way to map my caplet volatility surface to the bond volatility cube, perhaps skipping the HW model calibration step altogether?

## Answer by pandashark (score 3)

https://quant.stackexchange.com/a/85559

For a 1-factor constant-parameter Hull-White model, your approach 2 is the better one: build a consistent cap/caplet smile surface, recover the ATM cap term structure from it, and calibrate Hull-White to those ATM caps.

The reason is that plain Hull-White is not a smile model. If you calibrate it directly to arbitrary off-ATM cap quotes, the fitted `a` and `sigma` will absorb strike-smile effects that the model cannot genuinely represent. That does not make such a calibration impossible, but it usually makes the parameters less meaningful if your end goal is bond-option or callable-bond pricing. For that use case, ATM calibration is the cleaner target.

So in practice I would do this:

- Build the SABR or caplet smile surface

- Use it to obtain a consistent ATM cap curve by maturity

- Calibrate Hull-White to those ATM caps

- Use the calibrated model for bond-option pricing

That is not “moving further from reality” in any problematic sense. The smile surface is just an interpolation / smoothing layer used to recover a coherent ATM term structure from incomplete or off-ATM market quotes. In this setting, that is usually preferable to forcing a smileless model to fit non-ATM prices directly.

On your second question: there is no clean model-free shortcut from a caplet volatility surface to a bond-option volatility cube. Caplets are options on forward Ibor fixings; bond options are options on discount bonds. To move from one market to the other, you need a model assumption. Hull-White is one such assumption. So if the target instrument is a bond option, the calibration step is not something you can really skip.

What you can change is the model. If preserving the caplet smile matters materially, then plain 1-factor Hull-White is probably too restrictive. In that case, a smile-capable rates model calibrated directly to the caplet surface, such as a Markov-functional setup, is more natural than trying to transport smile through constant-parameter Hull-White.

QuantLib supports exactly this distinction. `CapHelper` is an ATM cap calibration helper, while cap/caplet smile handling is done separately through `CapFloorTermVolSurface`, `OptionletStripper1/2`, and `StrippedOptionletAdapter`. I tested the full workflow: direct ATM-cap calibration, then smile-surface -> stripped optionlets -> reconstructed ATM cap vols -> Hull-White recalibration, and finally bond-option pricing via `HullWhite::discountBondOption(...)`.

In the demo, the direct ATM-cap calibration produced: a = 0.01451965 sigma = 0.00559924

The smile-derived ATM workflow produced: a = 0.00000030 sigma = 0.00558564

Pricing the same zero-coupon bond option with the two calibrated models gave:

HW from direct ATM caps 0.05746305 HW from smile-derived ATM caps 0.05755880

So the calibration choice does feed through into bond-option prices, which is exactly why I would avoid calibrating Hull-White directly to off-ATM cap quotes unless that strike bias is intentional.

In short: for 1-factor Hull-White, calibrate to ATM caps, not arbitrary smile points; if your market data are off-ATM, use the smile surface to recover the ATM term structure first; and if smile fidelity is important in the target pricing, use a richer model rather than expecting plain Hull-White to carry it across.

References:



- QuantLib cap/floor term vol and optionlet stripping overview: https://quantlib-python-docs.readthedocs.io/en/latest/termstructures/volatility.html

- QuantLib MarkovFunctional taking an OptionletVolatilityStructure: https://sources.debian.org/data/main/q/quantlib-refman-html/1.8-1/html/class_quant_lib_1_1_markov_functional.html

- MathWorks note on stripping caplet vols and ATM-cap strikes: https://kr.mathworks.com/help/fininst/floorvolstrip.html

- Example of Hull-White calibration to a cap surface in another toolkit: https://it.mathworks.com/help/fininst/hwcalbycap.html

## Answer by carry_and_pray (score 2)

https://quant.stackexchange.com/a/85558

Cap volatility is only a quoting convention for a cap price i.e., a cap is a sum of caplets and the cap vol is just the single volatility that reproduces that cap price when assigned to all constituent caplets. The same caplet can therefore inherit different cap vols depending on which cap you look at. For that reason, I'd choose method 1 but calibrate to the actual market cap prices / implied vols across strikes and not to synthetic ATM caps extracted from a SABR surface.

Also, caplets are not directly traded, and there are more caplets than caps, so caplet stripping is inherently non-unique. If your market quotes are relative strikes such as ATM plus minus 100 bp, OpenGamma explicitly notes that you need a global stripping / interpolation method rather than a simple strike-by-strike bootstrap. This makes SABR a reasonable interpolator / regularizer but not a good reason to discard the non-atm info and calibrate only to synthetic ATM caps.

Convert the OTC quotes into prices in the market convention you actually trade in, build a strike-and-expiry-consistent caplet surface using all liquid quotes then calibrate Hull White to those actual prices or to the stripped caplet prices. OpenGamma also notes that fitting prices versus fitting to vols generally gives different results unless the market observables are recovered exactly and that vega weighting is standard when solving in price space.

I think it's best you use SABR if you need it to smooth or interpolate the cap market but do not replace the market with an ATM only synthetic market before calibrating hull white.

On your 2nd question, there is no simple model-free map from a caplet vol surface to a bond-option vol cube. In one-factor hull white, a cap/floor is a set of caplets and each caplet is effectively a zcb option on its period. European coupon bond options are then priced in a one factor short-rate model by decomposing them into a portfolio of zcb options via jamshidian's decomposition. So the hull white calibration step is not a dispensable nuisance. It's precisely just the mechanism that turns cap/caplet info into model-consistent bond option prices.

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.