Composite Trade class. More...
#include <ored/portfolio/compositetrade.hpp>
Public Types | |
enum class | NotionalCalculation { Sum , Mean , First , Last , Min , Max , Override } |
This enum decalres how the notional of the CompositeTrade should be calculated. More... | |
Public Member Functions | |
CompositeTrade (const Envelope &env=Envelope(), const TradeActions &ta=TradeActions()) | |
Constructor requires a trade factory so that subtrades can be built. More... | |
CompositeTrade (const string currency, const vector< QuantLib::ext::shared_ptr< Trade > > &trades, const string notionalCalculation="", const Real notionalOverride=0.0, const Envelope &env=Envelope(), const TradeActions &ta=TradeActions()) | |
Fully-specified Constructor. More... | |
virtual void | build (const QuantLib::ext::shared_ptr< EngineFactory > &) override |
Build QuantLib/QuantExt instrument, link pricing engine. More... | |
QuantLib::Real | notional () const override |
Return the current notional in npvCurrency. See individual sub-classes for the precise definition. More... | |
Inspectors | |
const string & | currency () const |
const string & | portfolioId () const |
const bool & | portfolioBasket () const |
const string & | notionalCalculation () const |
const vector< QuantLib::ext::shared_ptr< Trade > > & | trades () const |
Utility functions | |
Size | size () const |
returns the number of subtrades in the strategy More... | |
Real | calculateNotional (const vector< Real > &tradeNotionals) const |
calculates the CompositeTrade notional, when supplied with the notionals of the subtrades More... | |
Serialisation | |
virtual void | fromXML (XMLNode *node) override |
virtual XMLNode * | toXML (XMLDocument &doc) const override |
Public Member Functions inherited from Trade | |
Trade () | |
Default constructor. More... | |
Trade (const string &tradeType, const Envelope &env=Envelope(), const TradeActions &ta=TradeActions()) | |
Base class constructor. More... | |
virtual | ~Trade () |
Default destructor. More... | |
virtual void | build (const QuantLib::ext::shared_ptr< EngineFactory > &)=0 |
virtual std::map< std::string, RequiredFixings::FixingDates > | fixings (const QuantLib::Date &settlementDate=QuantLib::Date()) const |
const RequiredFixings & | requiredFixings () const |
virtual std::map< AssetClass, std::set< std::string > > | underlyingIndices (const QuantLib::ext::shared_ptr< ReferenceDataManager > &referenceDataManager=nullptr) const |
void | reset () |
Reset trade, clear all base class data. This does not reset accumulated timings for this trade. More... | |
void | resetPricingStats (const std::size_t numberOfPricings=0, const boost::timer::nanosecond_type cumulativePricingTime=0) |
Reset accumulated timings to given values. More... | |
string & | id () |
Set the trade id. More... | |
void | setEnvelope (const Envelope &envelope) |
Set the envelope with counterparty and portfolio info. More... | |
void | setAdditionalData (const std::map< std::string, boost::any > &additionalData) |
TradeActions & | tradeActions () |
Set the trade actions. More... | |
const string & | id () const |
const string & | tradeType () const |
const Envelope & | envelope () const |
const set< string > & | portfolioIds () const |
const TradeActions & | tradeActions () const |
const QuantLib::ext::shared_ptr< InstrumentWrapper > & | instrument () const |
const std::vector< QuantLib::Leg > & | legs () const |
const std::vector< string > & | legCurrencies () const |
const std::vector< bool > & | legPayers () const |
const string & | npvCurrency () const |
virtual string | notionalCurrency () const |
const Date & | maturity () const |
virtual bool | isExpired (const Date &d) |
const string & | issuer () const |
template<typename T > | |
T | additionalDatum (const std::string &tag) const |
returns any additional datum. More... | |
const std::string & | sensitivityTemplate () const |
void | validate () const |
Utility to validate that everything that needs to be set in this base class is actually set. More... | |
virtual bool | hasCashflows () const |
boost::timer::nanosecond_type | getCumulativePricingTime () const |
Get cumulative timing spent on pricing. More... | |
std::size_t | getNumberOfPricings () const |
Get number of pricings. More... | |
Public Member Functions inherited from XMLSerializable | |
virtual | ~XMLSerializable () |
virtual void | fromXML (XMLNode *node)=0 |
virtual XMLNode * | toXML (XMLDocument &doc) const =0 |
void | fromFile (const std::string &filename) |
void | toFile (const std::string &filename) const |
void | fromXMLString (const std::string &xml) |
Parse from XML string. More... | |
std::string | toXMLString () const |
Parse from XML string. More... | |
trade overrides | |
string | currency_ |
Real | notionalOverride_ |
string | notionalCalculation_ |
vector< QuantLib::ext::shared_ptr< Trade > > | trades_ |
vector< Handle< Quote > > | fxRates_ |
vector< Handle< Quote > > | fxRatesNotional_ |
string | portfolioId_ |
bool | portfolioBasket_ |
std::map< std::string, RequiredFixings::FixingDates > | fixings (const QuantLib::Date &settlementDate) const override |
std::map< AssetClass, std::set< std::string > > | underlyingIndices (const QuantLib::ext::shared_ptr< ReferenceDataManager > &referenceDataManager) const override |
const std::map< std::string, boost::any > & | additionalData () const override |
returns all additional data returned by the trade once built More... | |
void | populateFromReferenceData (const QuantLib::ext::shared_ptr< ReferenceDataManager > &referenceDataManager) |
void | getTradesFromReferenceData (const QuantLib::ext::shared_ptr< PortfolioBasketReferenceDatum > &ptfReferenceDatum) |
Additional Inherited Members | |
Protected Member Functions inherited from Trade | |
Date | addPremiums (std::vector< QuantLib::ext::shared_ptr< Instrument > > &instruments, std::vector< Real > &multipliers, const Real tradeMultiplier, const PremiumData &premiumData, const Real premiumMultiplier, const Currency &tradeCurrency, const QuantLib::ext::shared_ptr< EngineFactory > &factory, const string &configuration) |
void | setLegBasedAdditionalData (const Size legNo, Size resultLegId=Null< Size >()) const |
void | setSensitivityTemplate (const EngineBuilder &builder) |
void | setSensitivityTemplate (const std::string &id) |
Protected Attributes inherited from Trade | |
string | tradeType_ |
QuantLib::ext::shared_ptr< InstrumentWrapper > | instrument_ |
std::vector< QuantLib::Leg > | legs_ |
std::vector< string > | legCurrencies_ |
std::vector< bool > | legPayers_ |
string | npvCurrency_ |
QuantLib::Real | notional_ |
string | notionalCurrency_ |
Date | maturity_ |
string | issuer_ |
string | sensitivityTemplate_ |
bool | sensitivityTemplateSet_ = false |
std::size_t | savedNumberOfPricings_ = 0 |
boost::timer::nanosecond_type | savedCumulativePricingTime_ = 0 |
RequiredFixings | requiredFixings_ |
std::map< std::string, boost::any > | additionalData_ |
Composite Trade class.
CompositeTrades are single currency strategies consisting of independent financial instruments but regarded as a single position n the portfolio. Examples include straddles, butterflies, iron condors. The class can also be used to create representations of single contracts which can be replicated by linear combinations of other positions. E.g. Bond
Definition at line 41 of file compositetrade.hpp.
|
strong |
This enum decalres how the notional of the CompositeTrade should be calculated.
Definition at line 44 of file compositetrade.hpp.
CompositeTrade | ( | const Envelope & | env = Envelope() , |
const TradeActions & | ta = TradeActions() |
||
) |
Constructor requires a trade factory so that subtrades can be built.
Definition at line 55 of file compositetrade.hpp.
CompositeTrade | ( | const string | currency, |
const vector< QuantLib::ext::shared_ptr< Trade > > & | trades, | ||
const string | notionalCalculation = "" , |
||
const Real | notionalOverride = 0.0 , |
||
const Envelope & | env = Envelope() , |
||
const TradeActions & | ta = TradeActions() |
||
) |
Fully-specified Constructor.
Definition at line 61 of file compositetrade.hpp.
|
overridevirtual |
Build QuantLib/QuantExt instrument, link pricing engine.
Implements Trade.
Definition at line 33 of file compositetrade.cpp.
|
overridevirtual |
Return the current notional in npvCurrency. See individual sub-classes for the precise definition.
Reimplemented from Trade.
Definition at line 108 of file compositetrade.cpp.
const string & currency | ( | ) | const |
const string & portfolioId | ( | ) | const |
Definition at line 74 of file compositetrade.hpp.
const bool & portfolioBasket | ( | ) | const |
Definition at line 75 of file compositetrade.hpp.
const string & notionalCalculation | ( | ) | const |
const vector< QuantLib::ext::shared_ptr< Trade > > & trades | ( | ) | const |
Size size | ( | ) | const |
returns the number of subtrades in the strategy
Definition at line 83 of file compositetrade.hpp.
Real calculateNotional | ( | const vector< Real > & | tradeNotionals | ) | const |
calculates the CompositeTrade notional, when supplied with the notionals of the subtrades
Definition at line 218 of file compositetrade.cpp.
|
overridevirtual |
Reimplemented from Trade.
Definition at line 121 of file compositetrade.cpp.
|
overridevirtual |
Reimplemented from Trade.
Definition at line 199 of file compositetrade.cpp.
|
overridevirtual |
Return the fixings that will be requested in order to price this Trade given the settlementDate
.
If the settlementDate
is not provided, the current evaluation date is taken as the settlement date. If a Trade does not have any fixings, this method will return an empty map. The map key is the ORE name of the index and the map value is the set of fixing dates.
Reimplemented from Trade.
Definition at line 237 of file compositetrade.cpp.
|
overridevirtual |
Reimplemented from Trade.
Definition at line 250 of file compositetrade.cpp.
|
overridevirtual |
returns all additional data returned by the trade once built
Reimplemented from Trade.
Definition at line 262 of file compositetrade.cpp.
|
private |
Definition at line 274 of file compositetrade.cpp.
|
private |
Definition at line 288 of file compositetrade.cpp.
|
private |
Definition at line 107 of file compositetrade.hpp.
|
private |
Definition at line 108 of file compositetrade.hpp.
|
private |
Definition at line 109 of file compositetrade.hpp.
|
private |
Definition at line 110 of file compositetrade.hpp.
|
private |
Definition at line 111 of file compositetrade.hpp.
|
private |
Definition at line 111 of file compositetrade.hpp.
|
private |
Definition at line 112 of file compositetrade.hpp.
|
private |
Definition at line 113 of file compositetrade.hpp.