38#include <ql/cashflows/capflooredcoupon.hpp>
39#include <ql/cashflows/digitalcmscoupon.hpp>
40#include <ql/cashflows/digitalcoupon.hpp>
41#include <ql/cashflows/digitaliborcoupon.hpp>
42#include <ql/cashflows/rangeaccrual.hpp>
43#include <ql/indexes/interestrateindex.hpp>
44#include <ql/pricingengines/blackformula.hpp>
52 if (fixing == Null<Rate>())
53 fixing = coupon_->indexFixing();
57 Date d1 = coupon_->fixingDate(), referenceDate = capletVolatility()->referenceDate();
59 if (d1 > referenceDate) {
60 Time t1 = capletVolatility()->timeFromReference(d1);
62 Volatility sigma = capletVolatility()->volatility(d1, fixing);
68 if (capletVolatility()->volatilityType() == ShiftedLognormal) {
69 Real dQuantoAdj = std::exp(sigma * fxsigma * rho * t1);
70 Real shift = capletVolatility()->displacement();
71 fixing = (fixing + shift) * dQuantoAdj - shift;
73 Real dQuantoAdj = sigma * fxsigma * rho * t1;
78 return BlackIborCouponPricer::adjustedFixing(fixing);
Handle< QuantLib::BlackVolTermStructure > fxRateBlackVolatility_
Rate adjustedFixing(Rate fixing=Null< Rate >()) const override
Handle< QuantLib::Quote > underlyingFxCorrelation_