Setting Normal Volatility for QuantLib Swaption Calibration
Summary
The document explains how to configure a QuantLib SwaptionHelper when calibrating with normal rather than lognormal volatility. The key point is that SwaptionHelper inherits from BlackCalibrationHelper, whose volatility type is selected through a constructor argument. Although the constructor defaults to shifted lognormal volatility, the caller can explicitly choose normal volatility when creating the helper.
This resolves the specific question about which calibration helper parameter to provide; the helper class itself remains SwaptionHelper. The answer references the relevant class documentation and constructor signature, but gives no calibration example or discussion of model fit, market conventions, or how the selected volatility type affects pricing inputs. The guidance is therefore focused on API configuration, and users should check the constructor available in their QuantLib version.
Key ideas
- SwaptionHelper inherits from BlackCalibrationHelper and uses its volatility type setting.
- The constructor defaults to shifted lognormal volatility unless another type is supplied.
- Select normal volatility explicitly when constructing the helper for normal-volatility calibration.
- The document does not discuss calibration outcomes or version-specific API changes beyond its stated guidance.
Tags
Full text
# QuantLib: Which CalibrationHelper to use for Normal Volatilities # QuantLib: Which CalibrationHelper to use for Normal Volatilities I am using the SwaptionHelper class to create the swaptions. Reading the documentation: https://www.quantlib.org/reference/class_quant_lib_1_1_swaption_helper.html I realize that one of the parameters required to provide is called BlackCalibrationHelper. However, I am using Normal volatility for the calibration. I think it is also not possible to just omit the parameter. Could anyone advise the parameter to provide in this case? The example online used CalibrationHelper which is deprecated in v1.16. ## Answer by byouness (score 2, accepted) https://quant.stackexchange.com/a/49830 The `SwaptionHelper` class inherits from `BlackCalibrationHelper` class: https://www.quantlib.org/reference/class_quant_lib_1_1_black_calibration_helper.html As a result, one of its attributes is `volatilityType` which can be normal or lognormal or shifted lognormal. You can see it in the first constructor in the link you sent: ``` SwaptionHelper ( const Period &maturity, const Period &length, const Handle< Quote > &volatility, const ext::shared_ptr< IborIndex > &index, const Period &fixedLegTenor, const DayCounter &fixedLegDayCounter, const DayCounter &floatingLegDayCounter, const Handle< YieldTermStructure > &termStructure, BlackCalibrationHelper::CalibrationErrorType errorType=BlackCalibrationHelper::RelativePriceError, const Real strike=Null< Real >(), const Real nominal=1.0, const VolatilityType type=ShiftedLognormal, const Real shift=0.0) ``` As you can see, by default it is `ShiftedLognormal`, but you can set it to `Normal` when instanciating your swaption helper.
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.