#include <qle/cashflows/commodityindexedaveragecashflow.hpp>
Public Types | |
enum class | PaymentTiming { InAdvance , InArrears } |
Public Member Functions | |
CommodityIndexedAverageCashFlow (QuantLib::Real quantity, const QuantLib::Date &startDate, const QuantLib::Date &endDate, const QuantLib::Date &paymentDate, const ext::shared_ptr< CommodityIndex > &index, const QuantLib::Calendar &pricingCalendar=QuantLib::Calendar(), QuantLib::Real spread=0.0, QuantLib::Real gearing=1.0, bool useFuturePrice=false, QuantLib::Natural deliveryDateRoll=0, QuantLib::Natural futureMonthOffset=0, const ext::shared_ptr< FutureExpiryCalculator > &calc=nullptr, bool includeEndDate=true, bool excludeStartDate=true, bool useBusinessDays=true, CommodityQuantityFrequency quantityFrequency=CommodityQuantityFrequency::PerCalculationPeriod, QuantLib::Natural hoursPerDay=QuantLib::Null< QuantLib::Natural >(), QuantLib::Natural dailyExpiryOffset=QuantLib::Null< QuantLib::Natural >(), bool unrealisedQuantity=false, const boost::optional< std::pair< QuantLib::Calendar, QuantLib::Real >> &offPeakPowerData=boost::none, const ext::shared_ptr< FxIndex > &fxIndex=nullptr) | |
Constructor taking an explicit paymentDate . | |
CommodityIndexedAverageCashFlow (QuantLib::Real quantity, const QuantLib::Date &startDate, const QuantLib::Date &endDate, QuantLib::Natural paymentLag, QuantLib::Calendar paymentCalendar, QuantLib::BusinessDayConvention paymentConvention, const ext::shared_ptr< CommodityIndex > &index, const QuantLib::Calendar &pricingCalendar=QuantLib::Calendar(), QuantLib::Real spread=0.0, QuantLib::Real gearing=1.0, PaymentTiming paymentTiming=PaymentTiming::InArrears, bool useFuturePrice=false, QuantLib::Natural deliveryDateRoll=0, QuantLib::Natural futureMonthOffset=0, const ext::shared_ptr< FutureExpiryCalculator > &calc=nullptr, bool includeEndDate=true, bool excludeStartDate=true, const QuantLib::Date &paymentDateOverride=Date(), bool useBusinessDays=true, CommodityQuantityFrequency quantityFrequency=CommodityQuantityFrequency::PerCalculationPeriod, QuantLib::Natural hoursPerDay=QuantLib::Null< QuantLib::Natural >(), QuantLib::Natural dailyExpiryOffset=QuantLib::Null< QuantLib::Natural >(), bool unrealisedQuantity=false, const boost::optional< std::pair< QuantLib::Calendar, QuantLib::Real >> &offPeakPowerData=boost::none, const ext::shared_ptr< FxIndex > &fxIndex=nullptr) | |
Constructor that deduces payment date from endDate using payment conventions. | |
Inspectors | |
const QuantLib::Date & | startDate () const |
const QuantLib::Date & | endDate () const |
ext::shared_ptr< CommodityIndex > | index () const |
QuantLib::Natural | deliveryDateRoll () const |
QuantLib::Natural | futureMonthOffset () const |
bool | useBusinessDays () const |
CommodityQuantityFrequency | quantityFrequency () const |
QuantLib::Natural | hoursPerDay () const |
QuantLib::Natural | dailyExpiryOffset () const |
bool | unrealisedQuantity () const |
const boost::optional< std::pair< QuantLib::Calendar, QuantLib::Real > > & | offPeakPowerData () const |
const std::vector< std::pair< QuantLib::Date, ext::shared_ptr< CommodityIndex > > > & | indices () const override |
QuantLib::Real | periodQuantity () const override |
Event interface | |
QuantLib::Date | date () const override |
CashFlow interface | |
QuantLib::Real | amount () const override |
Visitability | |
void | accept (QuantLib::AcyclicVisitor &v) override |
Public Member Functions inherited from CommodityCashFlow | |
CommodityCashFlow (QuantLib::Real quantity, QuantLib::Real spread, QuantLib::Real gearing, bool useFuturePrice, const ext::shared_ptr< CommodityIndex > &index, const ext::shared_ptr< FxIndex > &fxIndex) | |
QuantLib::Real | quantity () const |
QuantLib::Real | spread () const |
QuantLib::Real | gearing () const |
bool | useFuturePrice () const |
ext::shared_ptr< CommodityIndex > | index () const |
ext::shared_ptr< FxIndex > | fxIndex () const |
void | accept (QuantLib::AcyclicVisitor &v) override |
CommodityCashFlow interface | |
QuantLib::Date | lastPricingDate () const override |
QuantLib::Real | fixing () const override |
Additional Inherited Members | |
Protected Attributes inherited from CommodityCashFlow | |
QuantLib::Real | quantity_ |
QuantLib::Real | spread_ |
QuantLib::Real | gearing_ |
bool | useFuturePrice_ |
ext::shared_ptr< CommodityIndex > | index_ |
ext::shared_ptr< FxIndex > | fxIndex_ |
QuantLib::Real | amount_ |
Cash flow dependent on the average of commodity spot prices or futures settlement prices over a period.
The cash flow takes a start date and an end date. The set of valid pricing dates is determined from and including the start date to but excluding the end date. The cash flow amount is then the arithmetic average of the commodity spot prices or next commodity future settlement prices on each valid pricing date times the quantity. The next commodity future is determined relative to each pricing date so the settlement prices for multiple commodity contracts may be involved in the averaging.
|
overridevirtual |
Return the index used to get the price for each pricing date in the period. The map keys are the pricing dates. For a given key date, the map value holds the commodity index used to give the price on that date. If the averaging does not reference future contract settlement prices, i.e. useFirstFuture()
is false
, the commodity index is simply the commodity spot index passed in the constructor. If the averaging references future contract settlement prices, i.e. useFirstFuture()
is true
, the commodity index is the commodity future contract index relevant for that pricing date.
Implements CommodityCashFlow.
|
overridevirtual |
Quantity for the full calculation period i.e. the effective quantity after taking into account the quantity frequency setting.
Implements CommodityCashFlow.