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)

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: enter image description here

Do I need to extrapolate manually first then? And insert just the quote value?

Thanks in advance!

  • $\begingroup$ The error message says that the Black surface requires lognormal vols. You provide the argument ql.Normal when setting up SwaptionVolatilityMatrix. I think you simply need to change accordingly. $\endgroup$ Nov 11, 2021 at 9:32
  • $\begingroup$ … and you must provide lognormal vols, of course $\endgroup$ Nov 11, 2021 at 9:53


Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Browse other questions tagged or ask your own question.