Skip to content

Commit 5dc10cf

Browse files
author
jenkins
committed
git subrepo pull (merge) ore
subrepo: subdir: "ore" merged: "30cc15f8b4" upstream: origin: "git@gitlab.acadiasoft.net:qs/ore.git" branch: "master" commit: "281ae67075" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129"
2 parents e85941f + 281ae67 commit 5dc10cf

5 files changed

Lines changed: 33 additions & 0 deletions

File tree

OREAnalytics/orea/simm/simmcalculator.cpp

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1272,6 +1272,12 @@ void SimmCalculator::calcAddMargin(const SimmSide& side, const NettingSetDetails
12721272
// Add to aggregation at portfolio level
12731273
add(nettingSetDetails, regulation, ProductClass::All, RiskClass::All, MarginType::All, "All", pcmMargin, side,
12741274
overwrite);
1275+
CrifRecord spRecord = it;
1276+
if (side == SimmSide::Call)
1277+
spRecord.collectRegulations = regulation;
1278+
else
1279+
spRecord.postRegulations = regulation;
1280+
simmParameters_.addRecord(spRecord);
12751281
}
12761282
}
12771283

@@ -1292,6 +1298,12 @@ void SimmCalculator::calcAddMargin(const SimmSide& side, const NettingSetDetails
12921298
// Add to aggregation at portfolio level
12931299
add(nettingSetDetails, regulation, ProductClass::All, RiskClass::All, MarginType::All, "All", fixedMargin, side,
12941300
overwrite);
1301+
CrifRecord spRecord = it;
1302+
if (side == SimmSide::Call)
1303+
spRecord.collectRegulations = regulation;
1304+
else
1305+
spRecord.postRegulations = regulation;
1306+
simmParameters_.addRecord(spRecord);
12951307
}
12961308

12971309
// Third, add percentage of notional amounts IM, using "AddOnNotionalFactor"
@@ -1326,6 +1338,12 @@ void SimmCalculator::calcAddMargin(const SimmSide& side, const NettingSetDetails
13261338
add(nettingSetDetails, regulation, ProductClass::All, RiskClass::All, MarginType::All, "All",
13271339
notionalFactorMargin,
13281340
side, overwrite);
1341+
CrifRecord spRecord = it;
1342+
if (side == SimmSide::Call)
1343+
spRecord.collectRegulations = regulation;
1344+
else
1345+
spRecord.postRegulations = regulation;
1346+
simmParameters_.addRecord(spRecord);
13291347
}
13301348
}
13311349
}

OREAnalytics/orea/simm/simmcalculator.hpp

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -92,6 +92,8 @@ class SimmCalculator {
9292

9393
const std::map<SimmSide, std::set<std::string>>& finalTradeIds() const { return finalTradeIds_; }
9494

95+
const Crif& simmParameters() const { return simmParameters_; }
96+
9597
//! Return the calculator's calculation currency
9698
const std::string& calculationCurrency(const SimmSide& side) const {
9799
return side == SimmSide::Call ? calculationCcyCall_ : calculationCcyPost_;
@@ -112,6 +114,9 @@ class SimmCalculator {
112114
//! Net sentivities at the regulation level within each netting set
113115
std::map<SimmSide, std::map<ore::data::NettingSetDetails, std::map<std::string, Crif>>> regSensitivities_;
114116

117+
//! Record of SIMM parameters that were used in the calculation
118+
ore::analytics::Crif simmParameters_;
119+
115120
//! The SIMM configuration governing the calculation
116121
QuantLib::ext::shared_ptr<SimmConfiguration> simmConfiguration_;
117122

OREData/ored/portfolio/indexcreditdefaultswapoption.cpp

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -427,6 +427,13 @@ const std::string& IndexCreditDefaultSwapOption::indexTerm() const { return inde
427427

428428
Real IndexCreditDefaultSwapOption::strike() const { return strike_; }
429429

430+
QuantLib::Option::Type IndexCreditDefaultSwapOption::callPut() const {
431+
if (swap().leg().isPayer())
432+
return QuantLib::Option::Type::Call;
433+
else
434+
return QuantLib::Option::Type::Put;
435+
}
436+
430437
const string& IndexCreditDefaultSwapOption::strikeType() const { return strikeType_; }
431438

432439
const Date& IndexCreditDefaultSwapOption::tradeDate() const { return tradeDate_; }

OREData/ored/portfolio/indexcreditdefaultswapoption.hpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -56,6 +56,7 @@ class IndexCreditDefaultSwapOption : public Trade {
5656
const ore::data::OptionData& option() const;
5757
const std::string& indexTerm() const;
5858
QuantLib::Real strike() const;
59+
QuantLib::Option::Type callPut() const;
5960
const std::string& strikeType() const;
6061
const QuantLib::Date& tradeDate() const;
6162
const QuantLib::Date& fepStartDate() const;

Tools/PythonTools/comparison_config.json

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1834,6 +1834,8 @@
18341834
"saccr/rW",
18351835
"simmReport/initial_margin",
18361836
"simmReport/initial_margin_in_report_ccy",
1837+
"simm_parameters/amount",
1838+
"simm_parameters/amount_usd",
18371839
"totalIMReport/initial_margin",
18381840
"totalIMReport/initial_margin_in_report_ccy",
18391841
"xva/allocatedCVA",

0 commit comments

Comments
 (0)