Logo
Reference manual - version qle_version
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::Integer 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 QuantLib::ext::optional< std::pair< QuantLib::Calendar, QuantLib::Real > > &offPeakPowerData=QuantLib::ext::nullopt, const ext::shared_ptr< FxIndex > &fxIndex=nullptr, QuantLib::Natural avgPricePrecision=QuantLib::Null< QuantLib::Natural >())
 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::Integer 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 QuantLib::ext::optional< std::pair< QuantLib::Calendar, QuantLib::Real > > &offPeakPowerData=QuantLib::ext::nullopt, const ext::shared_ptr< FxIndex > &fxIndex=nullptr, QuantLib::Natural avgPricePrecision=QuantLib::Null< QuantLib::Natural >())
 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::Integer futureMonthOffset () const
bool useBusinessDays () const
CommodityQuantityFrequency quantityFrequency () const
QuantLib::Natural hoursPerDay () const
QuantLib::Natural dailyExpiryOffset () const
bool unrealisedQuantity () const
const QuantLib::ext::optional< std::pair< QuantLib::Calendar, QuantLib::Real > > & offPeakPowerData () const
const std::map< QuantLib::Date, QuantLib::Real > & weights () 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

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.

◆ lastPricingDate()

QuantLib::Date lastPricingDate ( ) const
overridevirtual

Implements CommodityCashFlow.

◆ fixing()

QuantLib::Real fixing ( ) const
overridevirtual

Implements CommodityCashFlow.