Logo
Reference manual - version qle_version
Public Types | Public Member Functions | List of all members
CommodityIndexedAverageCashFlow Class Reference

#include <qle/cashflows/commodityindexedaveragecashflow.hpp>

+ Inheritance diagram for CommodityIndexedAverageCashFlow:

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< CommodityIndexindex () 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< CommodityIndexindex () const
 
ext::shared_ptr< FxIndexfxIndex () 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< CommodityIndexindex_
 
ext::shared_ptr< FxIndexfxIndex_
 
QuantLib::Real amount_
 

Detailed Description

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.

Member Function Documentation

◆ indices()

const std::vector<std::pair<QuantLib::Date, ext::shared_ptr<CommodityIndex> > >& indices ( ) const
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.

◆ periodQuantity()

QuantLib::Real periodQuantity ( ) const
overridevirtual

Quantity for the full calculation period i.e. the effective quantity after taking into account the quantity frequency setting.

Implements CommodityCashFlow.