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

XVA Calculator base class. More...

#include <orea/aggregation/exposurecalculator.hpp>

+ Collaboration diagram for ExposureCalculator:

Public Types

enum  ExposureIndex { EPE = 0 , ENE , allocatedEPE , allocatedENE }
 

Public Member Functions

 ExposureCalculator (const QuantLib::ext::shared_ptr< Portfolio > &portfolio, const QuantLib::ext::shared_ptr< NPVCube > &cube, const QuantLib::ext::shared_ptr< CubeInterpretation > cubeInterpretation, const QuantLib::ext::shared_ptr< Market > &market, const bool exerciseNextBreak, const string &baseCurrency, const string &configuration, const Real quantile, const CollateralExposureHelper::CalculationType calcType, const bool multiPath, const bool flipViewXVA)
 
virtual ~ExposureCalculator ()
 
virtual void build ()
 Compute exposures along all paths and fill result structures. More...
 
QuantLib::ext::shared_ptr< Portfolioportfolio ()
 
QuantLib::ext::shared_ptr< NPVCubenpvCube ()
 
QuantLib::ext::shared_ptr< CubeInterpretationcubeInterpretation ()
 
QuantLib::ext::shared_ptr< Marketmarket ()
 
bool exerciseNextBreak ()
 
string baseCurrency ()
 
string configuration ()
 
Real quantile ()
 
CollateralExposureHelper::CalculationType calcType ()
 
bool isRegularCubeStorage ()
 
bool multiPath ()
 
vector< Date > dates ()
 
Date today ()
 
DayCounter dc ()
 
vector< string > nettingSetIds ()
 
map< string, Real > nettingSetValueToday ()
 
map< string, Date > nettingSetMaturity ()
 
vector< Real > times ()
 
const QuantLib::ext::shared_ptr< NPVCube > & exposureCube ()
 
const map< string, vector< vector< Real > > > & nettingSetDefaultValue ()
 
const map< string, vector< vector< Real > > > & nettingSetCloseOutValue ()
 
const map< string, vector< vector< Real > > > & nettingSetMporPositiveFlow ()
 
const map< string, vector< vector< Real > > > & nettingSetMporNegativeFlow ()
 
vector< Real > epe (const string &tid)
 
vector< Real > ene (const string &tid)
 
vector< Real > allocatedEpe (const string &tid)
 
vector< Real > allocatedEne (const string &tid)
 
vector< Real > & ee_b (const string &tid)
 
vector< Real > & eee_b (const string &tid)
 
vector< Real > & pfe (const string &tid)
 
Real & epe_b (const string &tid)
 
Real & eepe_b (const string &tid)
 

Public Attributes

const Size EXPOSURE_CUBE_DEPTH = 4
 

Protected Member Functions

vector< Real > getMeanExposure (const string &tid, ExposureIndex index)
 

Protected Attributes

const QuantLib::ext::shared_ptr< Portfolioportfolio_
 
const QuantLib::ext::shared_ptr< NPVCubecube_
 
const QuantLib::ext::shared_ptr< CubeInterpretationcubeInterpretation_
 
const QuantLib::ext::shared_ptr< Marketmarket_
 
const bool exerciseNextBreak_
 
const string baseCurrency_
 
const string configuration_
 
const Real quantile_
 
const CollateralExposureHelper::CalculationType calcType_
 
const bool multiPath_
 
bool isRegularCubeStorage_
 
vector< Date > dates_
 
const Date today_
 
const DayCounter dc_
 
vector< string > nettingSetIds_
 
map< string, Real > nettingSetValueToday_
 
map< string, Date > nettingSetMaturity_
 
vector< Real > times_
 
QuantLib::ext::shared_ptr< NPVCubeexposureCube_
 
map< string, vector< vector< Real > > > nettingSetDefaultValue_
 
map< string, vector< vector< Real > > > nettingSetCloseOutValue_
 
map< string, vector< vector< Real > > > nettingSetMporPositiveFlow_
 
map< string, vector< vector< Real > > > nettingSetMporNegativeFlow_
 
map< string, std::vector< Real > > ee_b_
 
map< string, std::vector< Real > > eee_b_
 
map< string, std::vector< Real > > pfe_
 
map< string, Real > epe_b_
 
map< string, Real > eepe_b_
 
bool flipViewXVA_
 

Detailed Description

XVA Calculator base class.

Derived classes implement a constructor with the relevant additional input data and a build function that performs the XVA calculations for all netting sets and along all paths.

Definition at line 46 of file exposurecalculator.hpp.

Member Enumeration Documentation

◆ ExposureIndex

Constructor & Destructor Documentation

◆ ExposureCalculator()

ExposureCalculator ( const QuantLib::ext::shared_ptr< Portfolio > &  portfolio,
const QuantLib::ext::shared_ptr< NPVCube > &  cube,
const QuantLib::ext::shared_ptr< CubeInterpretation cubeInterpretation,
const QuantLib::ext::shared_ptr< Market > &  market,
const bool  exerciseNextBreak,
const string &  baseCurrency,
const string &  configuration,
const Real  quantile,
const CollateralExposureHelper::CalculationType  calcType,
const bool  multiPath,
const bool  flipViewXVA 
)
Parameters
portfolioDriving portfolio consistent with the cube below
cubeNPV cube resulting from the Monte Carlo simulation loop
cubeInterpretationInterpreter for cube storage (where to find which data items)
marketMarket data object to access e.g. discounting and funding curves
exerciseNextBreakFlag to indicate exposure termination at the next break date
baseCurrencyExpression currency for all results
configurationMarket configuration to use
quantileQuantile for Potential Future Exposure output
calcTypeCollateral calculation type to be used, see class CollateralExposureHelper
multiPathFlag to indicate exposure evaluation with dynamic credit
flipViewXVAFlag to indicate flipped xva calculation

Definition at line 33 of file exposurecalculator.cpp.

44 multiPath_(multiPath), dates_(cube->dates()),
45 today_(market_->asofDate()), dc_(ActualActual(ActualActual::ISDA)), flipViewXVA_(flipViewXVA) {
46
47 QL_REQUIRE(portfolio_, "portfolio is null");
48
49 if (multiPath) {
50 exposureCube_ = QuantLib::ext::make_shared<SinglePrecisionInMemoryCubeN>(
51 market->asofDate(), portfolio_->ids(), dates_,
52 cube_->samples(), EXPOSURE_CUBE_DEPTH);// EPE, ENE, allocatedEPE, allocatedENE
53 } else {
54 exposureCube_ = QuantLib::ext::make_shared<DoublePrecisionInMemoryCubeN>(
55 market->asofDate(), portfolio_->ids(), dates_,
56 1, EXPOSURE_CUBE_DEPTH);// EPE, ENE, allocatedEPE, allocatedENE
57 }
58
59 set<string> nettingSetIdsSet;
60 for (const auto& [tradeId, trade] : portfolio->trades())
61 nettingSetIdsSet.insert(trade->envelope().nettingSetId());
62 nettingSetIds_= vector<string>(nettingSetIdsSet.begin(), nettingSetIdsSet.end());
63
64 times_ = vector<Real>(dates_.size(), 0.0);
65 for (Size i = 0; i < dates_.size(); i++)
66 times_[i] = dc_.yearFraction(today_, cube_->dates()[i]);
67
68 isRegularCubeStorage_ = !cubeInterpretation_->withCloseOutLag();
69}
const QuantLib::ext::shared_ptr< Portfolio > portfolio_
const QuantLib::ext::shared_ptr< NPVCube > cube_
QuantLib::ext::shared_ptr< Market > market()
QuantLib::ext::shared_ptr< NPVCube > exposureCube_
QuantLib::ext::shared_ptr< CubeInterpretation > cubeInterpretation()
const CollateralExposureHelper::CalculationType calcType_
CollateralExposureHelper::CalculationType calcType()
QuantLib::ext::shared_ptr< Portfolio > portfolio()
const QuantLib::ext::shared_ptr< Market > market_
const QuantLib::ext::shared_ptr< CubeInterpretation > cubeInterpretation_
+ Here is the call graph for this function:

◆ ~ExposureCalculator()

virtual ~ExposureCalculator ( )
virtual

Definition at line 73 of file exposurecalculator.hpp.

73{}

Member Function Documentation

◆ build()

void build ( )
virtual

Compute exposures along all paths and fill result structures.

Definition at line 71 of file exposurecalculator.cpp.

71 {
72 LOG("Compute trade exposure profiles, " << (flipViewXVA_ ? "inverted (flipViewXVA = Y)" : "regular (flipViewXVA = N)"));
73 size_t i = 0;
74 for (auto tradeIt = portfolio_->trades().begin(); tradeIt != portfolio_->trades().end(); ++tradeIt, ++i) {
75 auto trade = tradeIt->second;
76 string tradeId = tradeIt->first;
77 string nettingSetId = trade->envelope().nettingSetId();
78 LOG("Aggregate exposure for trade " << tradeId);
79 if (nettingSetDefaultValue_.find(nettingSetId) == nettingSetDefaultValue_.end()) {
80 nettingSetDefaultValue_[nettingSetId] = vector<vector<Real>>(dates_.size(), vector<Real>(cube_->samples(), 0.0));
81 nettingSetCloseOutValue_[nettingSetId] = vector<vector<Real>>(dates_.size(), vector<Real>(cube_->samples(), 0.0));
82 nettingSetMporPositiveFlow_[nettingSetId] = vector<vector<Real>>(dates_.size(), vector<Real>(cube_->samples(), 0.0));
83 nettingSetMporNegativeFlow_[nettingSetId] = vector<vector<Real>>(dates_.size(), vector<Real>(cube_->samples(), 0.0));
84 }
85
86 // Identify the next break date if provided, default is trade maturity.
87 Date nextBreakDate = trade->maturity();
88 TradeActions ta = trade->tradeActions();
89 if (exerciseNextBreak_ && !ta.empty()) {
90 // loop over actions and pick next mutual break, if available
91 vector<TradeAction> actions = ta.actions();
92 for (Size j = 0; j < actions.size(); ++j) {
93 DLOG("TradeAction for " << tradeId << ", actionType " << actions[j].type() << ", actionOwner "
94 << actions[j].owner());
95 // FIXME: Introduce enumeration and parse text when building trade
96 if (actions[j].type() == "Break" && actions[j].owner() == "Mutual") {
97 QuantLib::Schedule schedule = ore::data::makeSchedule(actions[j].schedule());
98 vector<Date> dates = schedule.dates();
99 std::sort(dates.begin(), dates.end());
100 Date today = Settings::instance().evaluationDate();
101 for (Size k = 0; k < dates.size(); ++k) {
102 if (dates[k] > today && dates[k] < nextBreakDate) {
103 nextBreakDate = dates[k];
104 DLOG("Next break date for trade " << tradeId << ": "
105 << QuantLib::io::iso_date(nextBreakDate));
106 break;
107 }
108 }
109 }
110 }
111 }
112
113 Handle<YieldTermStructure> curve = market_->discountCurve(baseCurrency_, configuration_);
114 Real npv0;
115 if (flipViewXVA_) {
116 npv0 = -cube_->getT0(i);
117 } else {
118 npv0 = cube_->getT0(i);
119 }
120 vector<Real> epe(dates_.size() + 1, 0.0);
121 vector<Real> ene(dates_.size() + 1, 0.0);
122 vector<Real> ee_b(dates_.size() + 1, 0.0);
123 vector<Real> eee_b(dates_.size() + 1, 0.0);
124 vector<Real> pfe(dates_.size() + 1, 0.0);
125 epe[0] = std::max(npv0, 0.0);
126 ene[0] = std::max(-npv0, 0.0);
127 ee_b[0] = epe[0];
128 eee_b[0] = ee_b[0];
129 pfe[0] = std::max(npv0, 0.0);
130 exposureCube_->setT0(epe[0], tradeId, ExposureIndex::EPE);
131 exposureCube_->setT0(ene[0], tradeId, ExposureIndex::ENE);
132 for (Size j = 0; j < dates_.size(); ++j) {
133 Date d = cube_->dates()[j];
134 vector<Real> distribution(cube_->samples(), 0.0);
135 for (Size k = 0; k < cube_->samples(); ++k) {
136 // RL 2020-07-17
137 // 1) If the calculation type is set to NoLag:
138 // Collateral balances are NOT delayed by the MPoR, but we use the close-out NPV.
139 // 2) Otherwise:
140 // Collateral balances are delayed by the MPoR (if possible, i.e. the valuation
141 // grid has MPoR spacing), and we use the default date NPV.
142 // This is the treatment in the ORE releases up to June 2020).
143 Real defaultValue =
144 d > nextBreakDate && exerciseNextBreak_ ? 0.0 : cubeInterpretation_->getDefaultNpv(cube_, i, j, k);
145 Real closeOutValue;
146 if (isRegularCubeStorage_ && j == dates_.size() - 1)
147 closeOutValue = defaultValue;
148 else
149 closeOutValue = d > nextBreakDate && exerciseNextBreak_
150 ? 0.0
151 : cubeInterpretation_->getCloseOutNpv(cube_, i, j, k);
152
153 Real positiveCashFlow = cubeInterpretation_->getMporPositiveFlows(cube_, i, j, k);
154 Real negativeCashFlow = cubeInterpretation_->getMporNegativeFlows(cube_, i, j, k);
155 //for single trade exposures, always default value is relevant
156 Real npv = defaultValue;
157 epe[j + 1] += max(npv, 0.0) / cube_->samples();
158 ene[j + 1] += max(-npv, 0.0) / cube_->samples();
159 nettingSetDefaultValue_[nettingSetId][j][k] += defaultValue;
160 nettingSetCloseOutValue_[nettingSetId][j][k] += closeOutValue;
161 nettingSetMporPositiveFlow_[nettingSetId][j][k] += positiveCashFlow;
162 nettingSetMporNegativeFlow_[nettingSetId][j][k] += negativeCashFlow;
163 distribution[k] = npv;
164 if (multiPath_) {
165 exposureCube_->set(max(npv, 0.0), tradeId, d, k, ExposureIndex::EPE);
166 exposureCube_->set(max(-npv, 0.0), tradeId, d, k, ExposureIndex::ENE);
167 }
168 }
169 if (!multiPath_) {
170 exposureCube_->set(epe[j + 1], tradeId, d, 0, ExposureIndex::EPE);
171 exposureCube_->set(ene[j + 1], tradeId, d, 0, ExposureIndex::ENE);
172 }
173 ee_b[j + 1] = epe[j + 1] / curve->discount(cube_->dates()[j]);
174 eee_b[j + 1] = std::max(eee_b[j], ee_b[j + 1]);
175 std::sort(distribution.begin(), distribution.end());
176 Size index = Size(floor(quantile_ * (cube_->samples() - 1) + 0.5));
177 pfe[j + 1] = std::max(distribution[index], 0.0);
178 }
179 ee_b_[tradeId] = ee_b;
180 eee_b_[tradeId] = eee_b;
181 pfe_[tradeId] = pfe;
182
183 Real epe_b = 0.0;
184 Real eepe_b = 0.0;
185
186 Size t = 0;
187 Calendar cal = WeekendsOnly();
188 /*The time average in the EEPE calculation is taken over the first year of the exposure evolution
189 (or until maturity if all positions of the netting set mature before one year).
190 This one year point is actually taken to be today+1Y+4D, so that the 1Y point on the dateGrid is always
191 included.
192 This may effect DateGrids with daily data points*/
193 Date maturity = std::min(cal.adjust(today_ + 1 * Years + 4 * Days), trade->maturity());
194 QuantLib::Real maturityTime = dc_.yearFraction(today_, maturity);
195
196 while (t < dates_.size() && times_[t] <= maturityTime)
197 ++t;
198
199 if (t > 0) {
200 vector<double> weights(t);
201 weights[0] = times_[0];
202 for (Size k = 1; k < t; k++)
203 weights[k] = times_[k] - times_[k - 1];
204 double totalWeights = std::accumulate(weights.begin(), weights.end(), 0.0);
205 for (Size k = 0; k < t; k++)
206 weights[k] /= totalWeights;
207
208 for (Size k = 0; k < t; k++) {
209 epe_b += ee_b[k] * weights[k];
210 eepe_b += eee_b[k] * weights[k];
211 }
212 }
213 epe_b_[tradeId] = epe_b;
214 eepe_b_[tradeId] = eepe_b;
215 }
216}
map< string, std::vector< Real > > pfe_
map< string, vector< vector< Real > > > nettingSetDefaultValue_
map< string, vector< vector< Real > > > nettingSetMporPositiveFlow_
vector< Real > epe(const string &tid)
vector< Real > & pfe(const string &tid)
map< string, vector< vector< Real > > > nettingSetMporNegativeFlow_
vector< Real > & eee_b(const string &tid)
map< string, std::vector< Real > > eee_b_
map< string, vector< vector< Real > > > nettingSetCloseOutValue_
map< string, std::vector< Real > > ee_b_
vector< Real > & ee_b(const string &tid)
vector< Real > ene(const string &tid)
#define LOG(text)
#define DLOG(text)
Time maturity
RandomVariable max(RandomVariable x, const RandomVariable &y)
Schedule makeSchedule(const ScheduleDates &data)
+ Here is the call graph for this function:

◆ portfolio()

QuantLib::ext::shared_ptr< Portfolio > portfolio ( )

Definition at line 86 of file exposurecalculator.hpp.

86{ return portfolio_; }
+ Here is the caller graph for this function:

◆ npvCube()

QuantLib::ext::shared_ptr< NPVCube > npvCube ( )

Definition at line 87 of file exposurecalculator.hpp.

87{ return cube_; }

◆ cubeInterpretation()

QuantLib::ext::shared_ptr< CubeInterpretation > cubeInterpretation ( )

Definition at line 88 of file exposurecalculator.hpp.

88{ return cubeInterpretation_; }

◆ market()

QuantLib::ext::shared_ptr< Market > market ( )

Definition at line 89 of file exposurecalculator.hpp.

89{ return market_; }
+ Here is the caller graph for this function:

◆ exerciseNextBreak()

bool exerciseNextBreak ( )

Definition at line 90 of file exposurecalculator.hpp.

90{ return exerciseNextBreak_; }

◆ baseCurrency()

string baseCurrency ( )

Definition at line 91 of file exposurecalculator.hpp.

91{ return baseCurrency_; }

◆ configuration()

string configuration ( )

Definition at line 92 of file exposurecalculator.hpp.

92{ return configuration_; }

◆ quantile()

Real quantile ( )

Definition at line 93 of file exposurecalculator.hpp.

93{ return quantile_; }

◆ calcType()

Definition at line 94 of file exposurecalculator.hpp.

94{ return calcType_; }

◆ isRegularCubeStorage()

bool isRegularCubeStorage ( )

Definition at line 95 of file exposurecalculator.hpp.

95{ return isRegularCubeStorage_; }

◆ multiPath()

bool multiPath ( )

Definition at line 96 of file exposurecalculator.hpp.

96{ return multiPath_; }
+ Here is the caller graph for this function:

◆ dates()

vector< Date > dates ( )

Definition at line 98 of file exposurecalculator.hpp.

98{ return dates_; }
+ Here is the caller graph for this function:

◆ today()

Date today ( )

Definition at line 99 of file exposurecalculator.hpp.

99{ return today_; }
+ Here is the caller graph for this function:

◆ dc()

DayCounter dc ( )

Definition at line 100 of file exposurecalculator.hpp.

100{ return dc_; }

◆ nettingSetIds()

vector< string > nettingSetIds ( )

Definition at line 101 of file exposurecalculator.hpp.

101{ return nettingSetIds_; }

◆ nettingSetValueToday()

map< string, Real > nettingSetValueToday ( )

Definition at line 102 of file exposurecalculator.hpp.

102{ return nettingSetValueToday_; }

◆ nettingSetMaturity()

map< string, Date > nettingSetMaturity ( )

Definition at line 103 of file exposurecalculator.hpp.

103{ return nettingSetMaturity_; }

◆ times()

vector< Real > times ( )

Definition at line 104 of file exposurecalculator.hpp.

104{ return times_; };

◆ exposureCube()

const QuantLib::ext::shared_ptr< NPVCube > & exposureCube ( )

Definition at line 106 of file exposurecalculator.hpp.

106{ return exposureCube_; }

◆ nettingSetDefaultValue()

const map< string, vector< vector< Real > > > & nettingSetDefaultValue ( )

Definition at line 107 of file exposurecalculator.hpp.

107{ return nettingSetDefaultValue_; }

◆ nettingSetCloseOutValue()

const map< string, vector< vector< Real > > > & nettingSetCloseOutValue ( )

Definition at line 108 of file exposurecalculator.hpp.

108{ return nettingSetCloseOutValue_; }

◆ nettingSetMporPositiveFlow()

const map< string, vector< vector< Real > > > & nettingSetMporPositiveFlow ( )

Definition at line 109 of file exposurecalculator.hpp.

◆ nettingSetMporNegativeFlow()

const map< string, vector< vector< Real > > > & nettingSetMporNegativeFlow ( )

Definition at line 110 of file exposurecalculator.hpp.

◆ epe()

vector< Real > epe ( const string &  tid)

Definition at line 112 of file exposurecalculator.hpp.

112{ return getMeanExposure(tid, ExposureIndex::EPE); }
vector< Real > getMeanExposure(const string &tid, ExposureIndex index)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ ene()

vector< Real > ene ( const string &  tid)

Definition at line 113 of file exposurecalculator.hpp.

113{ return getMeanExposure(tid, ExposureIndex::ENE); }
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ allocatedEpe()

vector< Real > allocatedEpe ( const string &  tid)

Definition at line 114 of file exposurecalculator.hpp.

+ Here is the call graph for this function:

◆ allocatedEne()

vector< Real > allocatedEne ( const string &  tid)

Definition at line 115 of file exposurecalculator.hpp.

+ Here is the call graph for this function:

◆ ee_b()

vector< Real > & ee_b ( const string &  tid)

Definition at line 116 of file exposurecalculator.hpp.

116{ return ee_b_[tid]; }
+ Here is the caller graph for this function:

◆ eee_b()

vector< Real > & eee_b ( const string &  tid)

Definition at line 117 of file exposurecalculator.hpp.

117{ return eee_b_[tid]; }
+ Here is the caller graph for this function:

◆ pfe()

vector< Real > & pfe ( const string &  tid)

Definition at line 118 of file exposurecalculator.hpp.

118{ return pfe_[tid]; }
+ Here is the caller graph for this function:

◆ epe_b()

Real & epe_b ( const string &  tid)

Definition at line 119 of file exposurecalculator.hpp.

119{ return epe_b_[tid]; }
+ Here is the caller graph for this function:

◆ eepe_b()

Real & eepe_b ( const string &  tid)

Definition at line 120 of file exposurecalculator.hpp.

120{ return eepe_b_[tid]; }
+ Here is the caller graph for this function:

◆ getMeanExposure()

vector< Real > getMeanExposure ( const string &  tid,
ExposureIndex  index 
)
protected

Definition at line 218 of file exposurecalculator.cpp.

218 {
219 vector<Real> exp(dates_.size() + 1, 0.0);
220 exp[0] = exposureCube_->getT0(tid, index);
221 for (Size i = 0; i < dates_.size(); i++) {
222 for (Size k = 0; k < exposureCube_->samples(); k++) {
223 exp[i + 1] += exposureCube_->get(tid, dates_[i], k, index);
224 }
225 exp[i + 1] /= exposureCube_->samples();
226 }
227 return exp;
228}
RandomVariable exp(RandomVariable x)
+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ EXPOSURE_CUBE_DEPTH

const Size EXPOSURE_CUBE_DEPTH = 4

Definition at line 84 of file exposurecalculator.hpp.

◆ portfolio_

const QuantLib::ext::shared_ptr<Portfolio> portfolio_
protected

Definition at line 123 of file exposurecalculator.hpp.

◆ cube_

const QuantLib::ext::shared_ptr<NPVCube> cube_
protected

Definition at line 124 of file exposurecalculator.hpp.

◆ cubeInterpretation_

const QuantLib::ext::shared_ptr<CubeInterpretation> cubeInterpretation_
protected

Definition at line 125 of file exposurecalculator.hpp.

◆ market_

const QuantLib::ext::shared_ptr<Market> market_
protected

Definition at line 126 of file exposurecalculator.hpp.

◆ exerciseNextBreak_

const bool exerciseNextBreak_
protected

Definition at line 127 of file exposurecalculator.hpp.

◆ baseCurrency_

const string baseCurrency_
protected

Definition at line 128 of file exposurecalculator.hpp.

◆ configuration_

const string configuration_
protected

Definition at line 129 of file exposurecalculator.hpp.

◆ quantile_

const Real quantile_
protected

Definition at line 130 of file exposurecalculator.hpp.

◆ calcType_

const CollateralExposureHelper::CalculationType calcType_
protected

Definition at line 131 of file exposurecalculator.hpp.

◆ multiPath_

const bool multiPath_
protected

Definition at line 132 of file exposurecalculator.hpp.

◆ isRegularCubeStorage_

bool isRegularCubeStorage_
protected

Definition at line 133 of file exposurecalculator.hpp.

◆ dates_

vector<Date> dates_
protected

Definition at line 135 of file exposurecalculator.hpp.

◆ today_

const Date today_
protected

Definition at line 136 of file exposurecalculator.hpp.

◆ dc_

const DayCounter dc_
protected

Definition at line 137 of file exposurecalculator.hpp.

◆ nettingSetIds_

vector<string> nettingSetIds_
protected

Definition at line 138 of file exposurecalculator.hpp.

◆ nettingSetValueToday_

map<string, Real> nettingSetValueToday_
protected

Definition at line 139 of file exposurecalculator.hpp.

◆ nettingSetMaturity_

map<string, Date> nettingSetMaturity_
protected

Definition at line 140 of file exposurecalculator.hpp.

◆ times_

vector<Real> times_
protected

Definition at line 141 of file exposurecalculator.hpp.

◆ exposureCube_

QuantLib::ext::shared_ptr<NPVCube> exposureCube_
protected

Definition at line 143 of file exposurecalculator.hpp.

◆ nettingSetDefaultValue_

map<string, vector<vector<Real> > > nettingSetDefaultValue_
protected

Definition at line 144 of file exposurecalculator.hpp.

◆ nettingSetCloseOutValue_

map<string, vector<vector<Real> > > nettingSetCloseOutValue_
protected

Definition at line 144 of file exposurecalculator.hpp.

◆ nettingSetMporPositiveFlow_

map<string, vector<vector<Real> > > nettingSetMporPositiveFlow_
protected

Definition at line 145 of file exposurecalculator.hpp.

◆ nettingSetMporNegativeFlow_

map<string, vector<vector<Real> > > nettingSetMporNegativeFlow_
protected

Definition at line 145 of file exposurecalculator.hpp.

◆ ee_b_

map<string, std::vector<Real> > ee_b_
protected

Definition at line 147 of file exposurecalculator.hpp.

◆ eee_b_

map<string, std::vector<Real> > eee_b_
protected

Definition at line 148 of file exposurecalculator.hpp.

◆ pfe_

map<string, std::vector<Real> > pfe_
protected

Definition at line 149 of file exposurecalculator.hpp.

◆ epe_b_

map<string, Real> epe_b_
protected

Definition at line 150 of file exposurecalculator.hpp.

◆ eepe_b_

map<string, Real> eepe_b_
protected

Definition at line 151 of file exposurecalculator.hpp.

◆ flipViewXVA_

bool flipViewXVA_
protected

Definition at line 153 of file exposurecalculator.hpp.