Logo
Fully annotated reference manual - version 1.8.12
Loading...
Searching...
No Matches
Public Member Functions | Protected Member Functions | Protected Attributes | Private Attributes | List of all members
PairwiseVarSwap Class Reference

#include <ored/portfolio/pairwisevarianceswap.hpp>

+ Inheritance diagram for PairwiseVarSwap:
+ Collaboration diagram for PairwiseVarSwap:

Public Member Functions

void build (const QuantLib::ext::shared_ptr< EngineFactory > &) override
 
const string & longShort ()
 
const vector< QuantLib::ext::shared_ptr< Underlying > > & underlyings () const
 
const string & name (int idx) const
 
const string & currency ()
 
double basketStrike ()
 
double basketNotional ()
 
double notional (int idx)
 
double strike (int idx)
 
AssetClassassetClassUnderlyings ()
 
virtual void fromXML (XMLNode *node) override
 
virtual XMLNodetoXML (XMLDocument &doc) const override
 
virtual QuantLib::Real notional () const
 Return the current notional in npvCurrency. See individual sub-classes for the precise definition. More...
 
- 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::FixingDatesfixings (const QuantLib::Date &settlementDate=QuantLib::Date()) const
 
const RequiredFixingsrequiredFixings () 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)
 
TradeActionstradeActions ()
 Set the trade actions. More...
 
const string & id () const
 
const string & tradeType () const
 
const Envelopeenvelope () const
 
const set< string > & portfolioIds () const
 
const TradeActionstradeActions () 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 >
additionalDatum (const std::string &tag) const
 returns any additional datum. More...
 
virtual const std::map< std::string, boost::any > & additionalData () const
 returns all additional data returned by the trade once built 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 XMLNodetoXML (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...
 

Protected Member Functions

 PairwiseVarSwap (AssetClass assetClassUnderlyings)
 
 PairwiseVarSwap (Envelope &env, string longShort, const vector< QuantLib::ext::shared_ptr< Underlying > > &underlyings, vector< double > underlyingStrikes, vector< double > underlyingNotionals, double basketNotional, double basketStrike, ScheduleData valuationSchedule, string currency, string settlementDate, AssetClass assetClassUnderlyings, ScheduleData laggedValuationSchedule, double payoffLimit=0.0, double cap=0.0, double floor=0.0, int accrualLag=1)
 
- 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

AssetClass assetClassUnderlyings_
 
vector< QuantLib::ext::shared_ptr< Underlying > > underlyings_
 
- Protected Attributes inherited from Trade
string tradeType_
 
QuantLib::ext::shared_ptr< InstrumentWrapperinstrument_
 
std::vector< QuantLib::Leg > legs_
 
std::vector< string > legCurrencies_
 
std::vector< boollegPayers_
 
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_
 

Private Attributes

string longShort_
 
vector< Real > underlyingStrikes_
 
vector< Real > underlyingNotionals_
 
Real basketNotional_
 
Real basketStrike_
 
Real payoffLimit_
 
Real cap_
 
Real floor_
 
int accrualLag_
 
ScheduleData valuationSchedule_
 
ScheduleData laggedValuationSchedule_
 
string settlementDate_
 
string currency_
 
vector< string > indexNames_
 

Detailed Description

Definition at line 35 of file pairwisevarianceswap.hpp.

Constructor & Destructor Documentation

◆ PairwiseVarSwap() [1/2]

PairwiseVarSwap ( AssetClass  assetClassUnderlyings)
protected

Definition at line 54 of file pairwisevarianceswap.hpp.

55 : Trade("PairwiseVarianceSwap"), assetClassUnderlyings_(assetClassUnderlyings) {}
Trade()
Default constructor.
Definition: trade.hpp:59

◆ PairwiseVarSwap() [2/2]

PairwiseVarSwap ( Envelope env,
string  longShort,
const vector< QuantLib::ext::shared_ptr< Underlying > > &  underlyings,
vector< double >  underlyingStrikes,
vector< double >  underlyingNotionals,
double  basketNotional,
double  basketStrike,
ScheduleData  valuationSchedule,
string  currency,
string  settlementDate,
AssetClass  assetClassUnderlyings,
ScheduleData  laggedValuationSchedule,
double  payoffLimit = 0.0,
double  cap = 0.0,
double  floor = 0.0,
int  accrualLag = 1 
)
protected

Definition at line 56 of file pairwisevarianceswap.hpp.

62 longShort_(longShort), underlyingStrikes_(underlyingStrikes), underlyingNotionals_(underlyingNotionals),
64 floor_(floor), accrualLag_(accrualLag), settlementDate_(settlementDate), currency_(currency) {
65
66 for (const auto& u : underlyings_) {
67 indexNames_.push_back(assetClassUnderlyings_ == AssetClass::FX ? "FX-" + u->name() : u->name());
68 }
69 }
vector< QuantLib::ext::shared_ptr< Underlying > > underlyings_
const vector< QuantLib::ext::shared_ptr< Underlying > > & underlyings() const

Member Function Documentation

◆ build()

void build ( const QuantLib::ext::shared_ptr< EngineFactory > &  )
overridevirtual

Build QuantLib/QuantExt instrument, link pricing engine. If build() is called multiple times, reset() should be called between these calls.

Implements Trade.

Definition at line 36 of file pairwisevarianceswap.cpp.

36 {
37
38 // Build schedules
39 ScheduleBuilder scheduleBuilder;
40
41 Schedule valuationSchedule;
42 scheduleBuilder.add(valuationSchedule, valuationSchedule_);
43
44 Schedule laggedValuationSchedule;
45 ScheduleData laggedValuationScheduleData =
48 : ScheduleData(ScheduleDerived(valuationSchedule_.name(), "NullCalendar", "Unadjusted", "1D"));
49 scheduleBuilder.add(laggedValuationSchedule, laggedValuationScheduleData);
50
51 scheduleBuilder.makeSchedules();
52
53 // For the PairwiseVarSwap::toXML() to return an entry for LaggedValuationSchedule
54 laggedValuationSchedule_ = laggedValuationScheduleData;
55
56 const Currency ccy = parseCurrency(currency_);
57 const Position::Type longShort = parsePositionType(longShort_);
58
59 QL_REQUIRE(valuationSchedule.dates().size() == laggedValuationSchedule.dates().size(),
60 "Trade " << id()
61 << " ValuationSchedule and LaggedValuationSchedule must have the same number of dates.");
62
63 const Date settlementDate = parseDate(settlementDate_);
64
65 QL_REQUIRE(basketStrike_ > 0 && !close_enough(basketStrike_, 0.0),
66 "Trade " << id() << ": PairwiseVarSwap::build() basket strike must be positive (" << basketStrike_
67 << ")");
68 QL_REQUIRE(basketNotional_ >= 0.0,
69 "Trade " << id() << ": PairwiseVarSwap::build() basket notional must be non-negative (" << notional_
70 << ")");
71
72 QuantLib::ext::shared_ptr<QuantExt::PairwiseVarianceSwap> pairwiseVarSwap(new QuantExt::PairwiseVarianceSwap(
75 laggedValuationSchedule, settlementDate));
76
77 // Pricing Engine
78 QuantLib::ext::shared_ptr<ore::data::EngineBuilder> builder = engineFactory->builder(tradeType_);
79 QL_REQUIRE(builder, "No builder found for " << tradeType_);
80 QuantLib::ext::shared_ptr<PairwiseVarSwapEngineBuilder> pairwiseVarSwapBuilder =
81 QuantLib::ext::dynamic_pointer_cast<PairwiseVarSwapEngineBuilder>(builder);
82
83 pairwiseVarSwap->setPricingEngine(pairwiseVarSwapBuilder->engine(
84 name(0), name(1), ccy, laggedValuationSchedule.dates().back(), assetClassUnderlyings()));
85 setSensitivityTemplate(*pairwiseVarSwapBuilder);
86
87 // set up other Trade details
88 instrument_ = QuantLib::ext::shared_ptr<ore::data::InstrumentWrapper>(new ore::data::VanillaInstrument(pairwiseVarSwap));
89
92 maturity_ = settlementDate;
93
94 // add required fixings
95 requiredFixings_.addFixingDates(valuationSchedule.dates(), indexNames_[0], maturity_);
96 requiredFixings_.addFixingDates(laggedValuationSchedule.dates(), indexNames_[0], maturity_);
97 requiredFixings_.addFixingDates(valuationSchedule.dates(), indexNames_[1], maturity_);
98 requiredFixings_.addFixingDates(laggedValuationSchedule.dates(), indexNames_[1], maturity_);
99}
void addFixingDates(const std::vector< std::pair< QuantLib::Date, bool > > &fixingDates, const std::string &indexName, const QuantLib::Date &payDate=Date::maxDate(), const bool alwaysAddIfPaysOnSettlement=false)
bool hasData() const
Check if has any dates/rules/derived schedules.
Definition: schedule.hpp:223
const string & name() const
Definition: schedule.hpp:231
string npvCurrency_
Definition: trade.hpp:201
QuantLib::Real notional_
Definition: trade.hpp:202
void setSensitivityTemplate(const EngineBuilder &builder)
Definition: trade.cpp:295
string tradeType_
Definition: trade.hpp:196
RequiredFixings requiredFixings_
Definition: trade.hpp:223
QuantLib::ext::shared_ptr< InstrumentWrapper > instrument_
Definition: trade.hpp:197
string notionalCurrency_
Definition: trade.hpp:203
Vanilla Instrument Wrapper.
Date parseDate(const string &s)
Convert std::string to QuantLib::Date.
Definition: parsers.cpp:51
Currency parseCurrency(const string &s)
Convert text to QuantLib::Currency.
Definition: parsers.cpp:290
Position::Type parsePositionType(const std::string &s)
Convert text to QuantLib::Position::Type.
Definition: parsers.cpp:404
Filter close_enough(const RandomVariable &x, const RandomVariable &y)
string name
+ Here is the call graph for this function:

◆ longShort()

const string & longShort ( )

Definition at line 39 of file pairwisevarianceswap.hpp.

39{ return longShort_; }
+ Here is the caller graph for this function:

◆ underlyings()

const vector< QuantLib::ext::shared_ptr< Underlying > > & underlyings ( ) const

Definition at line 40 of file pairwisevarianceswap.hpp.

40{ return underlyings_; }
+ Here is the caller graph for this function:

◆ name()

const string & name ( int  idx) const

Definition at line 41 of file pairwisevarianceswap.hpp.

41{ return underlyings_[idx]->name(); }

◆ currency()

const string & currency ( )

Definition at line 42 of file pairwisevarianceswap.hpp.

42{ return currency_; }

◆ basketStrike()

double basketStrike ( )

Definition at line 43 of file pairwisevarianceswap.hpp.

43{ return basketStrike_; }

◆ basketNotional()

double basketNotional ( )

Definition at line 44 of file pairwisevarianceswap.hpp.

44{ return basketNotional_; }

◆ notional() [1/2]

double notional ( int  idx)

Definition at line 46 of file pairwisevarianceswap.hpp.

46{ return underlyingNotionals_[idx]; };

◆ strike()

double strike ( int  idx)

Definition at line 47 of file pairwisevarianceswap.hpp.

47{ return underlyingStrikes_[idx]; };

◆ assetClassUnderlyings()

AssetClass & assetClassUnderlyings ( )

Definition at line 48 of file pairwisevarianceswap.hpp.

48{ return assetClassUnderlyings_; }
+ Here is the caller graph for this function:

◆ fromXML()

void fromXML ( XMLNode node)
overridevirtual

Reimplemented from Trade.

Definition at line 101 of file pairwisevarianceswap.cpp.

101 {
102 Trade::fromXML(node);
103 XMLNode* vNode = XMLUtils::getChildNode(node, tradeType() + "Data");
104 longShort_ = XMLUtils::getChildValue(vNode, "LongShort", true);
105
106 XMLNode* underlyingsNode = XMLUtils::getChildNode(vNode, "Underlyings");
107 QL_REQUIRE(underlyingsNode, "Trade " << id() << ": Must provide an Underlyings node");
108
109 // We use "Value" sub-nodes here for backward compatibility with the scripted pairwise variance swap
110 const string underlyingNodeName = "Value";
111 auto underlyings = XMLUtils::getChildrenNodes(underlyingsNode, underlyingNodeName);
112 QL_REQUIRE(underlyings.size() == 2,
113 "Trade " << id() << ": Must provide two \"Value\" sub-nodes in the Underlyings node");
114
115 // Build underlyings - not using the usual UnderlyingBuilder here again for compatibility with the scripted version
116 string uVal, uName, acString;
117 vector<AssetClass> assetClasses;
118 AssetClass ac;
119 for (auto const& u : underlyings) {
120 uVal = XMLUtils::getNodeValue(u);
121 if (boost::starts_with(uVal, "COMM-")) {
122 ac = AssetClass::COM;
123 acString = "Commodity";
124 uName = uVal.substr(5);
125 } else if (boost::starts_with(uVal, "EQ-")) {
126 ac = AssetClass::EQ;
127 acString = "Equity";
128 uName = uVal.substr(3);
129 } else if (boost::starts_with(uVal, "FX-")) {
130 ac = AssetClass::FX;
131 acString = "FX";
132 uName = uVal.substr(3);
133 } else {
134 QL_FAIL("Unsupported underlying type for " << uVal);
135 }
136
137 indexNames_.push_back(uVal);
138 QuantLib::ext::shared_ptr<ore::data::Underlying> underlying(new ore::data::Underlying(acString, uName, 1.0));
139 assetClasses.push_back(ac);
140 underlyings_.push_back(underlying);
141 }
142
143 QL_REQUIRE(assetClasses[0] == assetClasses[1],
144 "Trade " << id() << ": Both underlyings must belong to the same asset class.");
145 assetClassUnderlyings_ = assetClasses[0];
146
147 underlyingStrikes_ = XMLUtils::getChildrenValuesAsDoubles(vNode, "UnderlyingStrikes", "Value", true);
148 underlyingNotionals_ = XMLUtils::getChildrenValuesAsDoubles(vNode, "UnderlyingNotionals", "Value", true);
149 basketNotional_ = XMLUtils::getChildValueAsDouble(vNode, "BasketNotional", true);
150 basketStrike_ = XMLUtils::getChildValueAsDouble(vNode, "BasketStrike", true);
151 settlementDate_ = XMLUtils::getChildValue(vNode, "SettlementDate", true);
152 currency_ = XMLUtils::getChildValue(vNode, "PayCcy", true);
153
154 // Optional parameters
155 accrualLag_ = XMLUtils::getChildValueAsInt(vNode, "AccrualLag", false, 1);
156 payoffLimit_ = XMLUtils::getChildValueAsDouble(vNode, "PayoffLimit", false, 0.0);
157 cap_ = XMLUtils::getChildValueAsDouble(vNode, "Cap", false, 0.0);
158 floor_ = XMLUtils::getChildValueAsDouble(vNode, "Floor", false, 0.0);
159
160 XMLNode* valuationSchedule = XMLUtils::getChildNode(vNode, "ValuationSchedule");
161 QL_REQUIRE(valuationSchedule, "Trade " << id() << ": Must provide a \"ValuationSchedule\" node");
162 valuationSchedule_.fromXML(valuationSchedule);
163
164 // If valuation schedule is derived (from lagged valuation schedule), the offset must be negative
166 for (const ScheduleDerived& s : laggedValuationSchedule_.derived()) {
167 QL_REQUIRE(parsePeriod(s.shift()) <= -1 * Days,
168 "Trade " << id() << " Shift value for ValutionSchedule must be at least -1D or less");
169 }
170 }
171
172 XMLNode* laggedValuationSchedule = XMLUtils::getChildNode(vNode, "LaggedValuationSchedule");
173 if (laggedValuationSchedule) {
174 laggedValuationSchedule_.fromXML(laggedValuationSchedule);
175 // If lagged valuation schedule is derived (from valuation schedule), the offset must be positive
177 for (const ScheduleDerived& s : laggedValuationSchedule_.derived()) {
178 QL_REQUIRE(parsePeriod(s.shift()) >= 1 * Days,
179 "Trade " << id()
180 << " Shift value for LaggedValuationSchedule must be at least 1D or greater");
181 }
182 }
183 } else {
184 // Defaulting will be dealt with later in PairwiseVarSwap::build()
185 laggedValuationSchedule_ = ScheduleData();
186 }
187}
const vector< ScheduleDerived > & derived() const
Definition: schedule.hpp:230
virtual void fromXML(XMLNode *node) override
Definition: schedule.cpp:179
const bool & hasDerived() const
Definition: schedule.hpp:232
virtual void fromXML(XMLNode *node) override
Definition: trade.cpp:34
const string & tradeType() const
Definition: trade.hpp:133
Class to hold Underlyings.
Definition: underlying.hpp:37
static vector< Real > getChildrenValuesAsDoubles(XMLNode *node, const string &names, const string &name, bool mandatory=false)
Definition: xmlutils.cpp:319
static vector< XMLNode * > getChildrenNodes(XMLNode *node, const string &name)
Returns all the children with a given name.
Definition: xmlutils.cpp:428
static Real getChildValueAsDouble(XMLNode *node, const string &name, bool mandatory=false, double defaultValue=0.0)
Definition: xmlutils.cpp:286
static string getChildValue(XMLNode *node, const string &name, bool mandatory=false, const string &defaultValue=string())
Definition: xmlutils.cpp:277
static XMLNode * getChildNode(XMLNode *n, const string &name="")
Definition: xmlutils.cpp:387
static string getNodeValue(XMLNode *node)
Get a node's value.
Definition: xmlutils.cpp:489
static int getChildValueAsInt(XMLNode *node, const string &name, bool mandatory=false, int defaultValue=0)
Definition: xmlutils.cpp:291
Period parsePeriod(const string &s)
Convert text to QuantLib::Period.
Definition: parsers.cpp:171
rapidxml::xml_node< char > XMLNode
Definition: xmlutils.hpp:60
+ Here is the call graph for this function:

◆ toXML()

XMLNode * toXML ( XMLDocument doc) const
overridevirtual

Reimplemented from Trade.

Definition at line 189 of file pairwisevarianceswap.cpp.

189 {
190 XMLNode* node = Trade::toXML(doc);
191 XMLNode* vNode = doc.allocNode(tradeType() + "Data");
192
193 XMLUtils::appendNode(node, vNode);
194 XMLUtils::addChild(doc, vNode, "LongShort", longShort_);
195 XMLNode* underlyingsNode = doc.allocNode("Underlyings");
196 XMLNode* underlyingStrikesNode = doc.allocNode("UnderlyingStrikes");
197 XMLNode* underlyingNotionalsNode = doc.allocNode("UnderlyingNotionals");
198 for (int i = 0; i < 2; i++) {
199 XMLUtils::addChild(doc, underlyingsNode, "Value", indexNames_[i]);
200 XMLUtils::addChild(doc, underlyingStrikesNode, "Value", underlyingStrikes_[i]);
201 XMLUtils::addChild(doc, underlyingNotionalsNode, "Value", underlyingNotionals_[i]);
202 }
203 XMLUtils::appendNode(vNode, underlyingsNode);
204 XMLUtils::appendNode(vNode, underlyingStrikesNode);
205 XMLUtils::appendNode(vNode, underlyingNotionalsNode);
206 XMLUtils::addChild(doc, vNode, "BasketNotional", basketNotional_);
207 XMLUtils::addChild(doc, vNode, "BasketStrike", basketStrike_);
208 XMLNode* valuationSchedule = valuationSchedule_.toXML(doc);
209 XMLUtils::appendNode(vNode, valuationSchedule);
210 XMLUtils::setNodeName(doc, valuationSchedule, "ValuationSchedule");
211 XMLNode* laggedValuationSchedule = laggedValuationSchedule_.toXML(doc);
212 XMLUtils::appendNode(vNode, laggedValuationSchedule);
213 XMLUtils::setNodeName(doc, laggedValuationSchedule, "LaggedValuationSchedule");
214 XMLUtils::addChild(doc, vNode, "AccrualLag", accrualLag_);
215 XMLUtils::addChild(doc, vNode, "PayoffLimit", payoffLimit_);
216 XMLUtils::addChild(doc, vNode, "Cap", cap_);
217 XMLUtils::addChild(doc, vNode, "Floor", floor_);
218 XMLUtils::addChild(doc, vNode, "SettlementDate", settlementDate_);
219 XMLUtils::addChild(doc, vNode, "PayCcy", currency_);
220
221 return node;
222}
virtual XMLNode * toXML(XMLDocument &doc) const override
Definition: schedule.cpp:198
virtual XMLNode * toXML(XMLDocument &doc) const override
Definition: trade.cpp:46
static void setNodeName(XMLDocument &doc, XMLNode *node, const string &name)
Definition: xmlutils.cpp:478
static XMLNode * addChild(XMLDocument &doc, XMLNode *n, const string &name)
Definition: xmlutils.cpp:181
static void appendNode(XMLNode *parent, XMLNode *child)
Definition: xmlutils.cpp:406
+ Here is the call graph for this function:

◆ notional() [2/2]

virtual QuantLib::Real notional ( ) const
virtual

Return the current notional in npvCurrency. See individual sub-classes for the precise definition.

Reimplemented from Trade.

Definition at line 153 of file trade.hpp.

153{ return notional_; }

Member Data Documentation

◆ assetClassUnderlyings_

AssetClass assetClassUnderlyings_
protected

Definition at line 71 of file pairwisevarianceswap.hpp.

◆ underlyings_

vector<QuantLib::ext::shared_ptr<Underlying> > underlyings_
protected

Definition at line 74 of file pairwisevarianceswap.hpp.

◆ longShort_

string longShort_
private

Definition at line 77 of file pairwisevarianceswap.hpp.

◆ underlyingStrikes_

vector<Real> underlyingStrikes_
private

Definition at line 78 of file pairwisevarianceswap.hpp.

◆ underlyingNotionals_

vector<Real> underlyingNotionals_
private

Definition at line 78 of file pairwisevarianceswap.hpp.

◆ basketNotional_

Real basketNotional_
private

Definition at line 79 of file pairwisevarianceswap.hpp.

◆ basketStrike_

Real basketStrike_
private

Definition at line 79 of file pairwisevarianceswap.hpp.

◆ payoffLimit_

Real payoffLimit_
private

Definition at line 79 of file pairwisevarianceswap.hpp.

◆ cap_

Real cap_
private

Definition at line 79 of file pairwisevarianceswap.hpp.

◆ floor_

Real floor_
private

Definition at line 79 of file pairwisevarianceswap.hpp.

◆ accrualLag_

int accrualLag_
private

Definition at line 80 of file pairwisevarianceswap.hpp.

◆ valuationSchedule_

ScheduleData valuationSchedule_
private

Definition at line 81 of file pairwisevarianceswap.hpp.

◆ laggedValuationSchedule_

ScheduleData laggedValuationSchedule_
private

Definition at line 81 of file pairwisevarianceswap.hpp.

◆ settlementDate_

string settlementDate_
private

Definition at line 82 of file pairwisevarianceswap.hpp.

◆ currency_

string currency_
private

Definition at line 82 of file pairwisevarianceswap.hpp.

◆ indexNames_

vector<string> indexNames_
private

The index name. Not sure why the index was not just used in the trade XML. This is set to "FX-" + name for FX and left as name for the others for the moment.

Definition at line 87 of file pairwisevarianceswap.hpp.