@@ -1143,14 +1143,25 @@ void ReportWriter::writeSensitivityReport(Report& report, const boost::shared_pt
11431143
11441144void ReportWriter::writeSensitivityConfigReport (ore::data::Report& report,
11451145 const std::map<RiskFactorKey, QuantLib::Real>& shiftSizes,
1146- const std::map<RiskFactorKey, QuantLib::Real>& baseValues) {
1146+ const std::map<RiskFactorKey, QuantLib::Real>& baseValues,
1147+ const std::map<RiskFactorKey, std::string>& keyToFactor) {
11471148 LOG (" Writing Sensitivity Config report" );
11481149
1149- report.addColumn (" Key" , string ()).addColumn (" BaseValue" , double (), 8 ).addColumn (" ShiftSize" , double (), 8 );
1150+ report.addColumn (" Key" , string ())
1151+ .addColumn (" Factor" , string ())
1152+ .addColumn (" BaseValue" , double (), 8 )
1153+ .addColumn (" ShiftSize" , double (), 8 );
11501154
11511155 for (auto const & [key, shift] : shiftSizes) {
11521156 report.next ();
1153- report.add (ore::data::to_string (key)).add (baseValues.at (key)).add (shift);
1157+ std::string keyStr = " na" , factorStr = " na" ;
1158+ Real baseValue = Null<Real>();
1159+ keyStr = ore::data::to_string (key);
1160+ if (auto it = keyToFactor.find (key); it != keyToFactor.end ())
1161+ factorStr = it->second ;
1162+ if (auto it = baseValues.find (key); it != baseValues.end ())
1163+ baseValue = it->second ;
1164+ report.add (keyStr).add (factorStr).add (baseValue).add (shift);
11541165 }
11551166
11561167 report.end ();
0 commit comments