29 const std::vector<Real>& sabrParams,
33 volatilityType,shift),
34 forward_(forward), shift_(shift) {
40 const std::vector<Real>& sabrParams,
41 const Date& referenceDate,
46 forward_(forward), shift_(shift) {
53 beta_ = sabrParams[1];
58 "at the money forward rate + shift must be "
66 strike = std::max(0.00001 -
shift(),strike);
73 strike = std::max(0.00001 -
shift(),strike);
SabrSmileSection(Time timeToExpiry, Rate forward, const std::vector< Real > &sabrParameters, Real shift=0.0, VolatilityType volatilityType=VolatilityType::ShiftedLognormal)
Real varianceImpl(Rate strike) const override
void initialise(const std::vector< Real > &sabrParameters)
Volatility volatilityImpl(Rate strike) const override
interest rate volatility smile section
virtual Time exerciseTime() const
virtual VolatilityType volatilityType() const
virtual Rate shift() const
#define QL_REQUIRE(condition, message)
throw an error if the given pre-condition is not verified
detail::percent_holder rate(Rate)
output rates and spreads as percentages
Real Time
continuous quantity with 1-year units
Real Volatility
volatility
Real unsafeShiftedSabrVolatility(Rate strike, Rate forward, Time expiryTime, Real alpha, Real beta, Real nu, Real rho, Real shift, VolatilityType volatilityType)
void validateSabrParameters(Real alpha, Real beta, Real nu, Real rho)