Caplet Floorlet SABR calibration normal model


I am trying to make some test with your SABR calibrator through the SabrIborCapletFloorletVolatilityCalibrationDefinition.
When using this class with parameters beta=0.0 and shift=0.0 (using ofFixedBeta method) and in conjuntion with the SabrIborCapletFloorletVolatilityCalibrator, the following message arises “forward must be greater than zero” from the at SabrHaganVolatilityFunctionProvider.volatility().
Assuming that, is there any implementation left from your side to allow negative forwards or am I missing something?

Thank you very much!

The exception is thrown because the SABR volatility formula is not defined for negative forward rates.

To avoid the error due to the negative forward rate, it is recommended to use non-zero shift, i.e., shiftCurve, in SabrIborCapletFloorletVolatilityCalibrationDefinition so that the shifted forward rates are always positive.

Thank you for you answer. Sadly I am missing something…Why does SABR model does not admit negative forwards (with beta equal to zero and normal volatilities as input)?
Is the shift recommended anyway? If so, which is the sense of normal volatilities if it requires the a shift anyway?

Thank you very much!
Kind regards Abe

Though SABR model is well-defined for negative forwards if \beta=0 is chosen, the approximation formula for Black implied volatility (derived in Hagan et al., 2002) assumes positive forwards and strikes.

1 Like

Ok, I did not realize Bachelier implied volatility space is not available.
Thank you very much!


Are there any plans to add support for Bachelier?

Thank you!

There are no current plans to do so.