Skip to content

Commit 5ae2756

Browse files
damienbarkerGitlab CI
authored andcommitted
Merge branch 'feature/QPR-13699' into 'master'
QPR-13699: set mpor date given mpor days Closes QPR-13699 See merge request qs/oreplus!3089
1 parent d1fee76 commit 5ae2756

4 files changed

Lines changed: 17 additions & 0 deletions

File tree

ORE-SWIG/OREAnalytics-SWIG/SWIG/orea_app.i

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -112,6 +112,7 @@ public:
112112
const ext::shared_ptr<ore::data::CurrencyConfig>& currencyConfigs();
113113
const ext::shared_ptr<ore::data::CalendarAdjustmentConfig>& calendarAdjustmentConfigs();
114114
const ext::shared_ptr<CurveConfigurations>& curveConfig(const std::string& s = std::string()) const;
115+
QuantLib::Date mporDate();
115116

116117
const QuantLib::ext::shared_ptr<ScenarioSimMarketParameters>& stressSimMarketParams() const;
117118
const QuantLib::ext::shared_ptr<StressTestScenarioData>& stressScenarioData() const;

ORE-SWIG/OREData-SWIG/SWIG/ored_parsers.i

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ using ore::data::parseBusinessDayConvention;
7474
using ore::data::parseDate;
7575
using ore::data::fxDominance;
7676
using ore::data::isGenericIborIndex;
77+
using ore::data::calculateMporDate;
7778
%}
7879
bool isGenericIborIndex(const std::string& indexName);
7980
ext::shared_ptr<IborIndex> parseIborIndex(const std::string& s,
@@ -103,6 +104,7 @@ QuantLib::Settlement::Type parseSettlementType(const std::string& s);
103104
QuantLib::Exercise::Type parseExerciseType(const std::string& s);
104105
QuantLib::Option::Type parseOptionType(const std::string& s);
105106
QuantLib::Date parseDate(const std::string& s);
107+
QuantLib::Date calculateMporDate(QuantLib::Size& mporDays, QuantLib::Date asOf = QuantLib::Date(), std::string mporCalendar = "US");
106108

107109
%template(StringCalMap) std::map<std::string, Calendar>;
108110

OREData/ored/utilities/parsers.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -472,6 +472,13 @@ Settlement::Method parseSettlementMethod(const std::string& s) {
472472
}
473473
}
474474

475+
QuantLib::Date calculateMporDate(QuantLib::Size& mporDays, QuantLib::Date asOf, std::string mporCalendar) {
476+
QuantLib::Calendar mporCal = parseCalendar(mporCalendar);
477+
if (asOf == Date())
478+
asOf = Settings::instance().evaluationDate();
479+
return mporCal.advance(asOf, mporDays, QuantExt::Days);
480+
}
481+
475482
Exercise::Type parseExerciseType(const std::string& s) {
476483
static map<string, Exercise::Type> m = {
477484
{"European", Exercise::European},

OREData/ored/utilities/parsers.hpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -611,6 +611,13 @@ enum MporCashFlowMode { Unspecified, NonePay, BothPay, WePay, TheyPay };
611611
*/
612612
MporCashFlowMode parseMporCashFlowMode(const std::string& s);
613613

614+
//! Return Mpor Date given Mpor days and Mpor Calendar
615+
/*!
616+
\ingroup utilities
617+
*/
618+
QuantLib::Date calculateMporDate(QuantLib::Size& mporDays, QuantLib::Date asOf = QuantLib::Date(),
619+
std::string mporCalendar = "US");
620+
614621
//! Write MporCashFlowMode to stream
615622
/*!
616623
\ingroup utilities

0 commit comments

Comments
 (0)