Skip to content

Commit c4b2bbf

Browse files
pcaspersjenkins
authored andcommitted
QPR-12432 make add results precision configurable, fix typo
1 parent 5a7e98d commit c4b2bbf

8 files changed

Lines changed: 19 additions & 8 deletions

File tree

Docs/UserGuide/userguide.tex

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3951,6 +3951,7 @@ \subsubsection{Analytics}\label{sec:analytics}
39513951
<Parameter name="baseCurrency">EUR</Parameter>
39523952
<Parameter name="outputFileName">npv.csv</Parameter>
39533953
<Parameter name="additionalResults">Y</Parameter>
3954+
<Parameter name="additionalResultsReportPrecision">6</Parameter>
39543955
</Analytic>
39553956
<Analytic type="cashflow">
39563957
<Parameter name="active">Y</Parameter>

Examples/Example_1/Input/ore.xml

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -32,6 +32,7 @@
3232
<Parameter name="baseCurrency">EUR</Parameter>
3333
<Parameter name="outputFileName">npv.csv</Parameter>
3434
<Parameter name="additionalResults">Y</Parameter>
35+
<Parameter name="additionalResultsReportPrecision">12</Parameter>
3536
</Analytic>
3637
<Analytic type="cashflow">
3738
<Parameter name="active">Y</Parameter>

OREAnalytics/orea/app/analytics/pricinganalytic.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -98,7 +98,7 @@ void PricingAnalyticImpl::runAnalytic(
9898
boost::shared_ptr<InMemoryReport> addReport = boost::make_shared<InMemoryReport>();;
9999
ReportWriter(inputs_->reportNaString())
100100
.writeAdditionalResultsReport(*addReport, analytic()->portfolio(), analytic()->market(),
101-
effectiveResultCurrency);
101+
effectiveResultCurrency, inputs_->additionalResultsReportPrecision());
102102
analytic()->reports()[type]["additional_results"] = addReport;
103103
CONSOLE("OK");
104104
}

OREAnalytics/orea/app/inputparameters.hpp

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -115,7 +115,7 @@ class InputParameters {
115115

116116
// Setters for npv analytics
117117
void setOutputAdditionalResults(bool b) { outputAdditionalResults_ = b; }
118-
118+
void setAdditionalResultsReportPrecision(std::size_t p) { additionalResultsReportPrecision_ = p; }
119119
// Setters for cashflows
120120
void setIncludePastCashflows(bool b) { includePastCashflows_ = b; }
121121

@@ -411,6 +411,7 @@ class InputParameters {
411411
* Getters for npv analytics
412412
***************************/
413413
bool outputAdditionalResults() const { return outputAdditionalResults_; };
414+
std::size_t additionalResultsReportPrecision() const { return additionalResultsReportPrecision_; }
414415

415416
/***********************
416417
* Getters for cashflows
@@ -689,6 +690,7 @@ class InputParameters {
689690
* NPV analytic
690691
*************/
691692
bool outputAdditionalResults_ = false;
693+
std::size_t additionalResultsReportPrecision_ = 6;
692694
bool outputCurves_ = false;
693695
std::string curvesMarketConfig_ = Market::defaultConfiguration;
694696
std::string curvesGrid_ = "240,1M";

OREAnalytics/orea/app/oreapp.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -736,6 +736,10 @@ void OREAppInputParameters::loadParameters() {
736736
if (tmp != "")
737737
setOutputAdditionalResults(parseBool(tmp));
738738

739+
tmp = params_->get("npv", "additionalResultsReportPrecision", false);
740+
if (tmp != "")
741+
setAdditionalResultsReportPrecision(parseInteger(tmp));
742+
739743
/*************
740744
* CASHFLOW
741745
*************/

OREAnalytics/orea/app/reportwriter.cpp

Lines changed: 4 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1233,7 +1233,8 @@ void addMapResults(boost::any resultMap, const std::string& tradeId, const std::
12331233
}
12341234

12351235
void ReportWriter::writeAdditionalResultsReport(Report& report, boost::shared_ptr<Portfolio> portfolio,
1236-
boost::shared_ptr<Market> market, const std::string& baseCurrency) {
1236+
boost::shared_ptr<Market> market, const std::string& baseCurrency,
1237+
const std::size_t precision) {
12371238

12381239
LOG("Writing AdditionalResults report");
12391240

@@ -1252,7 +1253,7 @@ void ReportWriter::writeAdditionalResultsReport(Report& report, boost::shared_pt
12521253
// Get the additional data for the current instrument.
12531254
auto additionalData = trade->additionalData();
12541255
for (const auto& kv : additionalData) {
1255-
auto p = parseBoostAny(kv.second, 6);
1256+
auto p = parseBoostAny(kv.second, precision);
12561257
if (boost::starts_with(p.first, "vector")) {
12571258
vector<std::string> tokens;
12581259
string vect = p.second;
@@ -1329,7 +1330,7 @@ void ReportWriter::writeAdditionalResultsReport(Report& report, boost::shared_pt
13291330
} else if (kv.second.type() == typeid(result_type_scalar)) {
13301331
addMapResults<result_type_scalar>(kv.second, tradeId, kv.first, report);
13311332
} else {
1332-
auto p = parseBoostAny(kv.second, 6);
1333+
auto p = parseBoostAny(kv.second, precision);
13331334
if (boost::starts_with(p.first, "vector")) {
13341335
vector<std::string> tokens;
13351336
string vect = p.second;

OREAnalytics/orea/app/reportwriter.hpp

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -112,8 +112,10 @@ class ReportWriter {
112112
const std::map<RiskFactorKey, QuantLib::Real>& baseValues,
113113
const std::map<RiskFactorKey, std::string>& keyToFactor);
114114

115-
virtual void writeAdditionalResultsReport(ore::data::Report& report, boost::shared_ptr<ore::data::Portfolio> portfolio,
116-
boost::shared_ptr<Market> market, const std::string& baseCurrency);
115+
virtual void writeAdditionalResultsReport(ore::data::Report& report,
116+
boost::shared_ptr<ore::data::Portfolio> portfolio,
117+
boost::shared_ptr<Market> market, const std::string& baseCurrency,
118+
const std::size_t precision = 6);
117119

118120
virtual void writeMarketData(ore::data::Report& report, const boost::shared_ptr<ore::data::Loader>& loader, const QuantLib::Date& asof,
119121
const set<string>& quoteNames, bool returnAll);

OREData/ored/portfolio/builders/scriptedtrade.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -177,7 +177,7 @@ ScriptedTradeEngineBuilder::engine(const std::string& id, const ScriptedTrade& s
177177
// 12 get the t0 curves for each model ccy
178178

179179
std::string externalDiscountCurve = scriptedTrade.envelope().additionalField("discount_curve", false);
180-
std::string externalSecuritySpread = scriptedTrade.envelope().additionalField("security_spreads", false);
180+
std::string externalSecuritySpread = scriptedTrade.envelope().additionalField("security_spread", false);
181181
for (auto const& c : modelCcys_) {
182182
// for base ccy we account for an external discount curve and security spread if given
183183
Handle<YieldTermStructure> yts =

0 commit comments

Comments
 (0)