24#ifndef quantlib_equity_cash_flow_hpp
25#define quantlib_equity_cash_flow_hpp
27#include <ql/termstructures/volatility/equityfx/blackvoltermstructure.hpp>
28#include <ql/termstructures/yield/zeroyieldstructure.hpp>
29#include <ql/cashflows/indexedcashflow.hpp>
30#include <ql/patterns/visitor.hpp>
35 class EquityCashFlowPricer;
40 ext::shared_ptr<EquityIndex>
index,
43 const Date& paymentDate,
53 void setPricer(
const ext::shared_ptr<EquityCashFlowPricer>&);
54 const ext::shared_ptr<EquityCashFlowPricer>&
pricer()
const {
return pricer_; };
57 ext::shared_ptr<EquityCashFlowPricer>
pricer_;
degenerate base class for the Acyclic Visitor pattern
ext::shared_ptr< EquityCashFlowPricer > pricer_
const ext::shared_ptr< EquityCashFlowPricer > & pricer() const
Real amount() const override
returns the amount of the cash flow
void accept(AcyclicVisitor &) override
void setPricer(const ext::shared_ptr< EquityCashFlowPricer > &)
ext::shared_ptr< EquityIndex > index_
virtual Real price() const =0
virtual void initialize(const EquityCashFlow &)=0
EquityCashFlowPricer()=default
Handle< Quote > correlation_
void initialize(const EquityCashFlow &) override
Real price() const override
Handle< YieldTermStructure > quantoTermStructure
Handle< BlackVolTermStructure > fxVolatility_
Handle< YieldTermStructure > quantoCurrencyTermStructure_
Handle< BlackVolTermStructure > equityVolatility_
Shared handle to an observable.
Cash flow dependent on an index ratio.
virtual Date fixingDate() const
virtual Real notional() const
void accept(AcyclicVisitor &) override
virtual Date baseDate() const
virtual bool growthOnly() const
virtual ext::shared_ptr< Index > index() const
Object that notifies its changes to a set of observers.
Object that gets notified when a given observable changes.
Visitor for a specific class
virtual void visit(T &)=0
void setCouponPricer(const Leg &leg, const ext::shared_ptr< FloatingRateCouponPricer > &pricer)
std::vector< ext::shared_ptr< CashFlow > > Leg
Sequence of cash-flows.