Skip to content

Commit 44e8d85

Browse files
mgronckijenkins
authored andcommitted
bugfix
1 parent 7f9735c commit 44e8d85

2 files changed

Lines changed: 1 addition & 15 deletions

File tree

OREAnalytics/orea/engine/decomposedsensitivitystream.cpp

Lines changed: 1 addition & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,6 @@ std::vector<SensitivityRecord> DecomposedSensitivityStream::decomposeEquityRisk(
150150
auto indexRefDatum = boost::dynamic_pointer_cast<ore::data::IndexReferenceDatum>(refDatum);
151151
auto decompResults = decomposeIndex(sr.delta, indexRefDatum, ore::data::CurveSpec::CurveType::Equity);
152152
scaleFxRisk(decompResults.fxRisk, indexName);
153-
convertFxRiskToBaseCurrency(decompResults.fxRisk, indexCurrency);
154153
return createDecompositionRecords(
155154
decompResults.equityDelta, decompResults.fxRisk, decompResults.indexCurrency, sr);
156155
} else {
@@ -207,7 +206,6 @@ DecomposedSensitivityStream::decomposeCurrencyHedgedIndexRisk(const SensitivityR
207206
decompResults.fxRisk[ccy] = decompResults.fxRisk[ccy] - fxRisk * fxRiskShiftSize(ccy, baseCurrency_, ssd_);
208207
}
209208
// Convert into the correct currency
210-
convertFxRiskToBaseCurrency(decompResults.fxRisk, indexCurrency);
211209
return createDecompositionRecords(decompResults.equityDelta, decompResults.fxRisk,
212210
indexCurrency, sr);
213211
} else {
@@ -229,7 +227,6 @@ std::vector<SensitivityRecord> DecomposedSensitivityStream::decomposeCommodityRi
229227
auto decompResults = decomposeIndex(sr.delta, indexRefDatum, ore::data::CurveSpec::CurveType::Commodity);
230228
scaleFxRisk(decompResults.fxRisk, indexName);
231229
auto indexCurrency = curveCurrency(indexName, ore::data::CurveSpec::CurveType::Commodity);
232-
convertFxRiskToBaseCurrency(decompResults.fxRisk, indexCurrency);
233230
return createDecompositionRecords(
234231
decompResults.equityDelta, decompResults.fxRisk, decompResults.indexCurrency, sr);
235232
} else {
@@ -293,7 +290,7 @@ std::vector<SensitivityRecord> DecomposedSensitivityStream::createDecompositionR
293290
}
294291
// Add aggregated FX Deltas
295292
for (auto [ccy, delta] : fxDeltas) {
296-
if (ccy != indexCurrency) {
293+
if (ccy != indexCurrency && ccy != baseCurrency_) {
297294
RiskFactorKey underlyingKey(RiskFactorKey::KeyType::FXSpot, ccy + baseCurrency_, 0);
298295
records.push_back(SensitivityRecord(sr.tradeId, sr.isPar, underlyingKey, sr.desc_1, sr.shift_1,
299296
RiskFactorKey(), "", sr.shift_2, sr.currency, sr.baseNpv, delta, 0.0));
@@ -311,15 +308,6 @@ void DecomposedSensitivityStream::scaleFxRisk(std::map<std::string, double>& fxR
311308
}
312309
}
313310

314-
void DecomposedSensitivityStream::convertFxRiskToBaseCurrency(std::map<std::string, double>& fxRisk,
315-
const std::string& indexCurrency) const {
316-
// Eq/Comm Shift to FX Shift Conversion
317-
auto fxSpot = todaysMarket_->fxSpot(indexCurrency + baseCurrency_)->value();
318-
for (auto& [ccy, fxdelta] : fxRisk) {
319-
fxdelta *= fxSpot;
320-
}
321-
}
322-
323311
std::string DecomposedSensitivityStream::curveCurrency(const std::string& name,
324312
ore::data::CurveSpec::CurveType curveType) const {
325313
std::string curveCurrency;

OREAnalytics/orea/engine/decomposedsensitivitystream.hpp

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -82,8 +82,6 @@ class DecomposedSensitivityStream : public SensitivityStream {
8282
std::string curveCurrency(const std::string& name, ore::data::CurveSpec::CurveType curveType) const;
8383
// Scale the fx risk entries from the index decomposition
8484
void scaleFxRisk(std::map<std::string, double>& fxRisk, const std::string& equityName) const;
85-
void convertFxRiskToBaseCurrency(std::map<std::string, double>& fxRisk, const std::string& indexCurrency) const;
86-
8785
std::vector<SensitivityRecord> decomposedRecords_;
8886
std::vector<SensitivityRecord>::iterator itCurrent_;
8987

0 commit comments

Comments
 (0)