26#ifndef quantlib_lognormal_cmsspread_pricer_hpp
27#define quantlib_lognormal_cmsspread_pricer_hpp
38 class CmsSpreadCoupon;
39 class YieldTermStructure;
64 const ext::shared_ptr<CmsCouponPricer>& cmsPricer,
67 Size IntegrationPoints = 16,
68 const ext::optional<VolatilityType>& volatilityType =
ext::nullopt,
105 ext::shared_ptr<CumulativeNormalDistribution>
cnd_;
base pricer for vanilla CMS spread coupons
Handle< Quote > correlation() const
base floating-rate coupon class
Shared handle to an observable.
CMS spread - coupon pricer.
Real integrand_normal(Real) const
Real capletPrice(Rate effectiveCap) const override
Rate floorletRate(Rate effectiveFloor) const override
ext::shared_ptr< CmsCoupon > c1_
void initialize(const FloatingRateCoupon &coupon) override
ext::shared_ptr< CmsCoupon > c2_
ext::shared_ptr< GaussianQuadrature > integrator_
Real integrand(Real) const
ext::shared_ptr< CmsCouponPricer > cmsPricer_
ext::shared_ptr< CumulativeNormalDistribution > cnd_
bool inheritedVolatilityType_
Handle< YieldTermStructure > couponDiscountCurve_
const CmsSpreadCoupon * coupon_
Rate swapletRate() const override
Real floorletPrice(Rate effectiveFloor) const override
ext::shared_ptr< SwapSpreadIndex > index_
Real swapletPrice() const override
Real optionletPrice(Option::Type optionType, Real strike) const
Rate capletRate(Rate effectiveCap) const override
template class providing a null value for a given type.
Integral of a 1-dimensional function using the Gauss quadratures.
std::size_t Size
size of a container
const boost::none_t & nullopt
normal, cumulative and inverse cumulative distributions
Maps optional to either the boost or std implementation.