Skip to content

Commit 659a16e

Browse files
pcaspersjenkins
authored andcommitted
Merge remote-tracking branch 'origin/master' into QPR-12406
1 parent b83e31c commit 659a16e

1 file changed

Lines changed: 16 additions & 4 deletions

File tree

OREAnalytics/orea/app/analytics/xvaanalytic.cpp

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -555,11 +555,23 @@ void XvaAnalyticImpl::runPostProcessor() {
555555
if (!dimCalculator_ && (analytics["mva"] || analytics["dim"])) {
556556
if (inputs_->dimModel() == "Regression") {
557557
LOG("dim calculator not set, create RegressionDynamicInitialMarginCalculator");
558+
std::map<std::string, Real> currentIM;
559+
if (inputs_->collateralBalances()) {
560+
for (auto const& [n, b] : inputs_->collateralBalances()->collateralBalances()) {
561+
currentIM[n.nettingSetId()] =
562+
b->initialMargin() * (b->currency() == baseCurrency
563+
? 1.0
564+
: analytic()
565+
->market()
566+
->fxRate(b->currency() + baseCurrency, marketConfiguration)
567+
->value());
568+
}
569+
}
558570
dimCalculator_ = boost::make_shared<RegressionDynamicInitialMarginCalculator>(
559-
inputs_, analytic()->portfolio(), cube_, cubeInterpreter_, *scenarioData_, dimQuantile, dimHorizonCalendarDays, dimRegressionOrder,
560-
dimRegressors, dimLocalRegressionEvaluations, dimLocalRegressionBandwidth);
561-
}
562-
else {
571+
inputs_, analytic()->portfolio(), cube_, cubeInterpreter_, *scenarioData_, dimQuantile,
572+
dimHorizonCalendarDays, dimRegressionOrder, dimRegressors, dimLocalRegressionEvaluations,
573+
dimLocalRegressionBandwidth, currentIM);
574+
} else {
563575
LOG("dim calculator not set, create FlatDynamicInitialMarginCalculator");
564576
dimCalculator_ = boost::make_shared<FlatDynamicInitialMarginCalculator>(
565577
inputs_, analytic()->portfolio(), cube_, cubeInterpreter_, *scenarioData_);

0 commit comments

Comments
 (0)