Skip to content

Commit bd4364f

Browse files
pcaspersjenkins
authored andcommitted
QPR-12406 pass initial IM to regression dim calculator
1 parent c27af4f commit bd4364f

9 files changed

Lines changed: 24 additions & 12 deletions

File tree

Examples/Example_10/Input/ore.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
<Analytic type="xva">
5252
<Parameter name="active">Y</Parameter>
5353
<Parameter name="csaFile">netting.xml</Parameter>
54-
<Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter>
54+
<!-- <Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter> -->
5555
<Parameter name="cubeFile">cube.csv.gz</Parameter>
5656
<Parameter name="scenarioFile">scenariodata.csv.gz</Parameter>
5757
<Parameter name="baseCurrency">EUR</Parameter>

Examples/Example_10/Input/ore_iah_0.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
<Analytic type="xva">
5252
<Parameter name="active">Y</Parameter>
5353
<Parameter name="csaFile">netting_iah_0.xml</Parameter>
54-
<Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter>
54+
<!-- <Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter> -->
5555
<Parameter name="cubeFile">cube.csv.gz</Parameter>
5656
<Parameter name="scenarioFile">scenariodata.csv.gz</Parameter>
5757
<Parameter name="baseCurrency">EUR</Parameter>

Examples/Example_10/Input/ore_iah_1.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
<Analytic type="xva">
5252
<Parameter name="active">Y</Parameter>
5353
<Parameter name="csaFile">netting_iah_1.xml</Parameter>
54-
<Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter>
54+
<!-- <Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter> -->
5555
<Parameter name="cubeFile">cube.csv.gz</Parameter>
5656
<Parameter name="scenarioFile">scenariodata.csv.gz</Parameter>
5757
<Parameter name="baseCurrency">EUR</Parameter>

Examples/Example_10/Input/ore_mpor.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<Analytic type="xva">
5151
<Parameter name="active">Y</Parameter>
5252
<Parameter name="csaFile">netting_mpor.xml</Parameter>
53-
<Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter>
53+
<!-- <Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter> -->
5454
<Parameter name="cubeFile">cube.csv.gz</Parameter>
5555
<Parameter name="scenarioFile">scenariodata.csv.gz</Parameter>
5656
<Parameter name="baseCurrency">EUR</Parameter>

Examples/Example_10/Input/ore_mta.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<Analytic type="xva">
5151
<Parameter name="active">Y</Parameter>
5252
<Parameter name="csaFile">netting_mta.xml</Parameter>
53-
<Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter>
53+
<!-- <Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter> -->
5454
<Parameter name="cubeFile">cube.csv.gz</Parameter>
5555
<Parameter name="scenarioFile">scenariodata.csv.gz</Parameter>
5656
<Parameter name="baseCurrency">EUR</Parameter>

Examples/Example_10/Input/ore_threshold.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@
5151
<Analytic type="xva">
5252
<Parameter name="active">Y</Parameter>
5353
<Parameter name="csaFile">netting_threshold.xml</Parameter>
54-
<Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter>
54+
<!-- <Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter> -->
5555
<Parameter name="cubeFile">cube.csv.gz</Parameter>
5656
<Parameter name="scenarioFile">scenariodata.csv.gz</Parameter>
5757
<Parameter name="baseCurrency">EUR</Parameter>

Examples/Example_10/Input/ore_threshold_break.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<Analytic type="xva">
5151
<Parameter name="active">Y</Parameter>
5252
<Parameter name="csaFile">netting_threshold.xml</Parameter>
53-
<Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter>
53+
<!-- <Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter> -->
5454
<Parameter name="cubeFile">cube.csv.gz</Parameter>
5555
<Parameter name="scenarioFile">scenariodata.csv.gz</Parameter>
5656
<Parameter name="baseCurrency">EUR</Parameter>

Examples/Example_10/Input/ore_threshold_dim.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -50,7 +50,7 @@
5050
<Analytic type="xva">
5151
<Parameter name="active">Y</Parameter>
5252
<Parameter name="csaFile">netting_threshold.xml</Parameter>
53-
<Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter>
53+
<!-- <Parameter name="collateralBalancesFile">collateralbalances.xml</Parameter> -->
5454
<Parameter name="cubeFile">cube.csv.gz</Parameter>
5555
<Parameter name="scenarioFile">scenariodata.csv.gz</Parameter>
5656
<Parameter name="baseCurrency">EUR</Parameter>

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)