Skip to content

Commit f66c694

Browse files
pcaspersjenkins
authored andcommitted
QPR-12548 Fix the warning missing index decomposition if it concerns an Equity
1 parent 8da3840 commit f66c694

1 file changed

Lines changed: 7 additions & 1 deletion

File tree

OREAnalytics/orea/engine/decomposedsensitivitystream.cpp

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -76,6 +76,12 @@ std::vector<SensitivityRecord> DecomposedSensitivityStream::decompose(const Sens
7676
refDataManager_ != nullptr &&
7777
refDataManager_->hasData("CommodityIndex", record.key_1.name);
7878

79+
if (isEquitySpotSensi && refDataManager_->hasData("Equity", record.key_1.name)) {
80+
auto eqRefData = QuantLib::ext::dynamic_pointer_cast<ore::data::EquityReferenceDatum>(
81+
refDataManager_->getData("Equity", record.key_1.name));
82+
isEquitySpotSensi = eqRefData->equityData().isIndex;
83+
}
84+
7985
try {
8086
if (tradeMarkedForDecompositionDefaultRisk && isSurvivalProbSensi && isNotCrossGamma) {
8187
return decomposeSurvivalProbability(record);
@@ -91,7 +97,7 @@ std::vector<SensitivityRecord> DecomposedSensitivityStream::decompose(const Sens
9197
indexDecomposition(record.delta, record.key_1.name, ore::data::CurveSpec::CurveType::Commodity);
9298
return sensitivityRecords(decompResults.spotRisk, decompResults.fxRisk, decompResults.indexCurrency,
9399
record);
94-
} else if (tradeMarkedForDecomposition && (isCommoditySpotSensi || isEquitySpotSensi) && isNotCrossGamma) {
100+
} else if (tradeMarkedForDecomposition && (isCommoditySpotSensi || isEquitySpotSensi ) && isNotCrossGamma) {
95101
auto subFields = std::map<std::string, std::string>({{"tradeId", record.tradeId}});
96102
StructuredAnalyticsErrorMessage(
97103
"Sensitivity Decomposition", "Index decomposition failed",

0 commit comments

Comments
 (0)