26#ifndef quantlib_range_accrual_h
27#define quantlib_range_accrual_h
38 class RangeAccrualPricer;
45 const ext::shared_ptr<IborIndex>&
index,
46 const Date& startDate,
52 const Date& refPeriodStart,
53 const Date& refPeriodEnd,
125 ext::shared_ptr<SmileSection> smilesOnExpiry,
126 ext::shared_ptr<SmileSection> smilesOnPayment,
138 Real correlation)
const;
140 Real correlation)
const;
147 Real correlation)
const;
155 Real deflator)
const;
160 Real deflator)
const;
165 Real deflator)
const;
170 Real deflator)
const;
173 Real nextInitialValue,
177 Real previousVariance,
178 Real nextVariance)
const;
183 Real deflator)
const;
216 operator Leg()
const;
degenerate base class for the Acyclic Visitor pattern
virtual Real nominal() const
base floating-rate coupon class
Natural fixingDays() const
fixing days
Real gearing() const
index gearing, i.e. multiplicative coefficient for the index
DayCounter dayCounter() const override
day counter for accrual calculation
const ext::shared_ptr< InterestRateIndex > & index() const
floating index
Spread spread() const
spread paid over the fixing of the underlying index
generic pricer for floating-rate coupons
Shared handle to an observable.
std::vector< Real > observationTimes_
Real upperTrigger() const
Real lowerTrigger() const
const std::vector< Real > & observationTimes() const
std::vector< Date > observationDates_
Real priceWithoutOptionality(const Handle< YieldTermStructure > &discountCurve) const
void accept(AcyclicVisitor &) override
Size observationsNo() const
ext::shared_ptr< Schedule > observationsSchedule() const
const std::vector< Date > & observationDates() const
const ext::shared_ptr< Schedule > observationsSchedule_
helper class building a sequence of range-accrual floating-rate coupons
BusinessDayConvention paymentAdjustment_
RangeAccrualLeg & withPaymentDayCounter(const DayCounter &)
RangeAccrualLeg & withGearings(Real gearing)
RangeAccrualLeg & withObservationConvention(BusinessDayConvention)
RangeAccrualLeg & withLowerTriggers(Rate trigger)
RangeAccrualLeg & withFixingDays(Natural fixingDays)
RangeAccrualLeg & withObservationTenor(const Period &)
std::vector< Real > notionals_
std::vector< Spread > spreads_
std::vector< Rate > lowerTriggers_
std::vector< Rate > upperTriggers_
RangeAccrualLeg & withUpperTriggers(Rate trigger)
RangeAccrualLeg & withPaymentAdjustment(BusinessDayConvention)
std::vector< Natural > fixingDays_
RangeAccrualLeg & withNotionals(Real notional)
std::vector< Real > gearings_
RangeAccrualLeg & withSpreads(Spread spread)
BusinessDayConvention observationConvention_
DayCounter paymentDayCounter_
ext::shared_ptr< IborIndex > index_
Real drift(Real U, Real lambdaS, Real lambdaT, Real correlation) const
std::vector< Real > driftsOverPeriod(Real U, Real lambdaS, Real lambdaT, Real correlation) const
Real derDriftDerLambdaS(Real U, Real lambdaS, Real lambdaT, Real correlation) const
Real digitalRangePrice(Real lowerTrigger, Real upperTrigger, Real initialValue, Real expiry, Real deflator) const
Real derDriftDerLambdaT(Real U, Real lambdaS, Real lambdaT, Real correlation) const
Real callSpreadPrice(Real previousInitialValue, Real nextInitialValue, Real previousStrike, Real nextStrike, Real deflator, Real previousVariance, Real nextVariance) const
ext::shared_ptr< SmileSection > smilesOnPayment_
Real derLambdaDerLambdaT(Real U) const
Real lambda(Real U, Real lambdaS, Real lambdaT) const
Real derLambdaDerLambdaS(Real U) const
std::vector< Real > lambdasOverPeriod(Real U, Real lambdaS, Real lambdaT) const
ext::shared_ptr< SmileSection > smilesOnExpiry_
Real digitalPriceWithSmile(Real strike, Real initialValue, Real expiry, Real deflator) const
Real smileCorrection(Real strike, Real initialValue, Real expiry, Real deflator) const
Real digitalPriceWithoutSmile(Real strike, Real initialValue, Real expiry, Real deflator) const
Real swapletPrice() const override
Real digitalPrice(Real strike, Real initialValue, Real expiry, Real deflator) const
std::vector< Real > observationTimes_
Real capletPrice(Rate effectiveCap) const override
Rate floorletRate(Rate effectiveFloor) const override
std::vector< Real > initialValues_
void initialize(const FloatingRateCoupon &coupon) override
std::vector< Real > observationTimeLags_
const RangeAccrualFloatersCoupon * coupon_
Real floorletPrice(Rate effectiveFloor) const override
Rate swapletRate() const override
Rate capletRate(Rate effectiveCap) const override
Coupon paying a variable index-based rate.
BusinessDayConvention
Business Day conventions.
unsigned QL_INTEGER Natural
positive integer
Real Spread
spreads on interest rates
std::size_t Size
size of a container
std::vector< ext::shared_ptr< CashFlow > > Leg
Sequence of cash-flows.
Smile section base class.