Skip to content

Commit 3cdb30e

Browse files
author
sebastien.bouvard
committed
QPR-13799 Supress Error Message
1 parent 4e508a3 commit 3cdb30e

6 files changed

Lines changed: 11 additions & 29 deletions

File tree

OREAnalytics/orea/app/analytics/correlationanalytic.cpp

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -114,8 +114,7 @@ void CorrelationAnalyticImpl::setCorrelationReport(const QuantLib::ext::shared_p
114114
analytic()->configurations().simMarketParams);
115115

116116
correlationReport_ = ext::make_shared<CorrelationReport>(inputs_->scenarioReader(),
117-
inputs_->correlationMethod(), benchmarkVarPeriod, scenarios, shiftCalculator,
118-
analytic()->configurations().sensiScenarioData);
117+
inputs_->correlationMethod(), benchmarkVarPeriod, scenarios, shiftCalculator);
119118
}
120119

121120
} //namespace analytics

OREAnalytics/orea/engine/correlationreport.cpp

Lines changed: 2 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,6 @@
1616
FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.
1717
*/
1818
#include <orea/engine/correlationreport.hpp>
19-
#include <orea/scenario/sensitivityscenariodata.hpp>
2019
#include <ored/utilities/to_string.hpp>
2120
#include <qle/math/deltagammavar.hpp>
2221
#include <ored/utilities/correlationmatrix.hpp>
@@ -40,28 +39,14 @@ void CorrelationReport::calculate(const ext::shared_ptr<Report>& report) {
4039
// i.e., keep only those deltaKeys present in ptfRiskFactors ignoring index
4140
// populateSensiShifts iterate over the scenario and deltaKeys, if mismatch with the sensiScenarioData shift
4241
// it throws an error.
43-
auto ptfRiskFactors = sensiScenarioData_->getPortfolioRiskFactors();
44-
if(ptfRiskFactors.size()>0){
45-
std::set<std::pair<RiskFactorKey::KeyType, std::string>> ptfKeyNameSet;
46-
for (auto& k : ptfRiskFactors) {
47-
ptfKeyNameSet.emplace(k.keytype, k.name);
48-
}
49-
std::vector<RiskFactorKey> filteredKeys;
50-
filteredKeys.reserve(deltaKeys.size());
51-
for (auto& k : deltaKeys) {
52-
if (ptfKeyNameSet.count(std::make_pair(k.keytype, k.name)) > 0) {
53-
filteredKeys.push_back(k);
54-
}
55-
}
56-
deltaKeys.swap(filteredKeys);
57-
}
42+
bool supressError = true;
5843

5944
ext::shared_ptr<NPVCube>cube;
6045
ext::shared_ptr<CovarianceCalculator> covCalculator;
6146
covCalculator = ext::make_shared<CovarianceCalculator>(covariancePeriod());
6247

6348
sensiPnlCalculator_ = ext::make_shared<HistoricalSensiPnlCalculator>(hisScenGen_, nullptr);
64-
sensiPnlCalculator_->populateSensiShifts(cube, deltaKeys, shiftCalc_);
49+
sensiPnlCalculator_->populateSensiShifts(cube, deltaKeys, shiftCalc_, supressError);
6550
sensiPnlCalculator_->calculateSensiPnl({}, deltaKeys, cube, pnlCalculators_, covCalculator, {},
6651
false, false, false);
6752

OREAnalytics/orea/engine/correlationreport.hpp

Lines changed: 2 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -39,10 +39,9 @@ class CorrelationReport{
3939
const std::string& correlationMethod,
4040
QuantLib::ext::optional<ore::data::TimePeriod> period,
4141
const QuantLib::ext::shared_ptr<HistoricalScenarioGenerator>& hisScenGen = nullptr,
42-
const QuantLib::ext::shared_ptr<ScenarioShiftCalculator>& shiftCalc = nullptr,
43-
QuantLib::ext::shared_ptr<ore::analytics::SensitivityScenarioData> sensiScenarioData = nullptr)
42+
const QuantLib::ext::shared_ptr<ScenarioShiftCalculator>& shiftCalc = nullptr)
4443
: scenario_(scenario), correlationMethod_(correlationMethod), period_(period), hisScenGen_(hisScenGen),
45-
shiftCalc_(shiftCalc), sensiScenarioData_(sensiScenarioData) {
44+
shiftCalc_(shiftCalc) {
4645
}
4746

4847
void writeReports(const QuantLib::ext::shared_ptr<Report>& report);
@@ -60,7 +59,6 @@ class CorrelationReport{
6059
QuantLib::Matrix correlationMatrix_;
6160
std::map<std::pair<RiskFactorKey, RiskFactorKey>, Real> correlationPairs_;
6261
std::vector<QuantLib::ext::shared_ptr<PNLCalculator>> pnlCalculators_;
63-
QuantLib::ext::shared_ptr<ore::analytics::SensitivityScenarioData> sensiScenarioData_;
6462

6563
ore::data::TimePeriod covariancePeriod() const { return period_.value(); }
6664
std::vector<ore::data::TimePeriod> timePeriods() { return {period_.value()}; }

OREAnalytics/orea/engine/historicalsensipnlcalculator.cpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -173,7 +173,7 @@ void PNLCalculator::populateRiskFactorTradePNLs(const RiskFactorTradePnLStore& a
173173
}
174174

175175
void HistoricalSensiPnlCalculator::populateSensiShifts(QuantLib::ext::shared_ptr<NPVCube>& cube, const vector<RiskFactorKey>& keys,
176-
ext::shared_ptr<ScenarioShiftCalculator> shiftCalculator) {
176+
ext::shared_ptr<ScenarioShiftCalculator> shiftCalculator, const bool& supressError) {
177177

178178
hisScenGen_->reset();
179179
QuantLib::ext::shared_ptr<Scenario> baseScenario = hisScenGen_->baseScenario();
@@ -200,11 +200,13 @@ void HistoricalSensiPnlCalculator::populateSensiShifts(QuantLib::ext::shared_ptr
200200
Real shift = shiftCalculator->shift(key, *baseScenario, *scenario, isPar);
201201
cube->set(shift, j, 0, i);
202202
} catch (const std::exception& e) {
203-
StructuredAnalyticsErrorMessage(
203+
if(!supressError){
204+
StructuredAnalyticsErrorMessage(
204205
"HistocialSensiPnlCalculator",
205206
"Shift calculation failed. Check consistency of simulation and sensi config.",
206207
"Error retrieving sensi key '" + ore::data::to_string(key) + "' from ssm scenario: '" + e.what())
207208
.log();
209+
}
208210
}
209211
j++;
210212
}

OREAnalytics/orea/engine/historicalsensipnlcalculator.hpp

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -118,7 +118,8 @@ class HistoricalSensiPnlCalculator {
118118
: hisScenGen_(hisScenGen), sensitivityStream_(ss) {}
119119

120120
void populateSensiShifts(QuantLib::ext::shared_ptr<NPVCube>& cube, const vector<RiskFactorKey>& keys,
121-
QuantLib::ext::shared_ptr<ScenarioShiftCalculator> shiftCalculator);
121+
QuantLib::ext::shared_ptr<ScenarioShiftCalculator> shiftCalculator,
122+
const bool& supressError = false);
122123

123124
void calculateSensiPnl(const std::set<SensitivityRecord>& srs,
124125
const std::vector<RiskFactorKey>& rfKeys,

OREAnalytics/orea/scenario/sensitivityscenariodata.hpp

Lines changed: 0 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -304,7 +304,6 @@ class SensitivityScenarioData : public XMLSerializable {
304304
void setComputeGamma(const bool b) { computeGamma_ = b; }
305305
void setUseSpreadedTermStructures(const bool b) { useSpreadedTermStructures_ = b; }
306306
void setParConversionExcludeFixings(const std::string b) { parConversionExcludeFixings_ = b; }
307-
void setPortfolioRiskFactors(const std::vector<RiskFactorKey> b) { portfolioRiskFactors_ = b;}
308307

309308
//@}
310309

@@ -323,7 +322,6 @@ class SensitivityScenarioData : public XMLSerializable {
323322
//! Utilities
324323
//@{
325324
string getIndexCurrency(string indexName);
326-
std::vector<RiskFactorKey> getPortfolioRiskFactors(){return portfolioRiskFactors_;}
327325
//@}
328326

329327
protected:
@@ -371,7 +369,6 @@ class SensitivityScenarioData : public XMLSerializable {
371369
set<ore::analytics::RiskFactorKey::KeyType> parConversionExcludes_;
372370
std::string parConversionExcludeFixings_;
373371
ore::data::ParConversionMatrixRegularisation parConversionMatrixRegularisation_;
374-
std::vector<RiskFactorKey> portfolioRiskFactors_;
375372

376373
private:
377374
void parDataFromXML(XMLNode* child, CurveShiftParData& data);

0 commit comments

Comments
 (0)