Skip to content

Commit 10f64d4

Browse files
committed
QPR-12432 make add results precision configurable, fix typo
1 parent 7554c66 commit 10f64d4

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
@@ -3920,6 +3920,7 @@ \subsubsection{Analytics}\label{sec:analytics}
39203920
<Parameter name="baseCurrency">EUR</Parameter>
39213921
<Parameter name="outputFileName">npv.csv</Parameter>
39223922
<Parameter name="additionalResults">Y</Parameter>
3923+
<Parameter name="additionalResultsReportPrecision">6</Parameter>
39233924
</Analytic>
39243925
<Analytic type="cashflow">
39253926
<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

@@ -406,6 +406,7 @@ class InputParameters {
406406
* Getters for npv analytics
407407
***************************/
408408
bool outputAdditionalResults() const { return outputAdditionalResults_; };
409+
std::size_t additionalResultsReportPrecision() const { return additionalResultsReportPrecision_; }
409410

410411
/***********************
411412
* Getters for cashflows
@@ -681,6 +682,7 @@ class InputParameters {
681682
* NPV analytic
682683
*************/
683684
bool outputAdditionalResults_ = false;
685+
std::size_t additionalResultsReportPrecision_ = 6;
684686
bool outputCurves_ = false;
685687
std::string curvesMarketConfig_ = Market::defaultConfiguration;
686688
std::string curvesGrid_ = "240,1M";

OREAnalytics/orea/app/oreapp.cpp

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

702+
tmp = params_->get("npv", "additionalResultsReportPrecision", false);
703+
if (tmp != "")
704+
setAdditionalResultsReportPrecision(parseInteger(tmp));
705+
702706
/*************
703707
* CASHFLOW
704708
*************/

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
@@ -111,8 +111,10 @@ class ReportWriter {
111111
const std::map<RiskFactorKey, QuantLib::Real>& baseValues,
112112
const std::map<RiskFactorKey, std::string>& keyToFactor);
113113

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

117119
virtual void writeMarketData(ore::data::Report& report, const boost::shared_ptr<ore::data::Loader>& loader, const QuantLib::Date& asof,
118120
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)