Matching Swaption Volatility Types to Pricing Engines
Summary
The document describes an implementation issue when connecting a normal volatility surface to a swaption pricing engine. The example constructs a swaption volatility matrix using normal volatilities, then passes it to a Black swaption engine. The reported error says that this engine expects shifted lognormal input volatility, exposing a mismatch between the volatility convention used by the surface and the convention required by the pricer.
The useful concept is that a volatility surface and its pricing engine must use compatible volatility assumptions. The post does not provide a fix, compare alternative engines, or establish whether manually extrapolating quotes would resolve the problem. It is a question rather than a worked solution, so readers should treat the error as a prompt to check the engine's supported volatility type and the surface configuration before changing data or extrapolation behavior.
Key ideas
- A Black swaption engine expects shifted lognormal volatility input.
- The example volatility matrix is configured with normal volatility.
- The error points to an incompatibility between the surface convention and the pricing engine.
- The document raises manual extrapolation as a question but does not answer it.
Tags
Full text
# Unable to link volatility structure to swaption pricing engine # Unable to link volatility structure to swaption pricing engine Good morning, I am trying to link the volatility surface to my swaption pricing engine. ``` swaptionVolMatrix = ql.SwaptionVolatilityMatrix(calendar, rollConvention, optionTenors, swapTenors, ql.Matrix(normal_vols),dayCountConvention, False, ql.Normal) #Matrix is a 8x6 shape swaptionVolHandle = ql.SwaptionVolatilityStructureHandle(swaptionVolMatrix) swaptionVolHandle.enableExtrapolation() ``` I get the following error: ``` RuntimeError: BlackSwaptionEngine requires (shifted) lognormal input volatility here: blackEngine = ql.BlackSwaptionEngine(discountingTermStructure, swaptionVolHandle) ``` I have tried to follow this from the documentation: Do I need to extrapolate manually first then? And insert just the quote value? Thanks in advance!
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.