Skip to content

Commit d44788f

Browse files
author
jenkins
committed
git subrepo pull (merge) ore
subrepo: subdir: "ore" merged: "18bfd110fe" upstream: origin: "git@gitlab.acadiasoft.net:qs/ore.git" branch: "master" commit: "e3c769241e" git-subrepo: version: "0.4.6" origin: "https://github.com/ingydotnet/git-subrepo" commit: "73a0129"
2 parents 5029885 + e3c7692 commit d44788f

6 files changed

Lines changed: 39 additions & 78 deletions

File tree

Docs/UserGuide/userguide.tex

Lines changed: 0 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -7210,9 +7210,6 @@ \subsubsection*{Trade Features}
72107210
Some trade features are not yet supported by the multileg option engine:
72117211

72127212
\begin{enumerate}
7213-
\item legs with fx resetting feature
7214-
\item legs with naked option = true
7215-
\item coupon types are restricted to Ibor and CMS
72167213
\item exercise flows (like a notional exchange common to cross currency swaptions) are not supported
72177214
\end{enumerate}
72187215

@@ -7228,12 +7225,6 @@ \subsubsection*{State interpolation for exercise decisions}
72287225
simulated path. Currently this is done using a simple linear interpolation while from a pure methodology point of view a
72297226
Brownian Bridge would be preferable. In our tests we do not see a big impact of this approximation though.
72307227

7231-
\subsubsection*{Missing recalibration of the MCMultiLegOptionEngine}
7232-
7233-
The MC Multi Leg Option Engine builder uses the \verb+CrossAssetModelBuilder+ to set up the pricing model. This class
7234-
does not implement the \verb+ModelBuidler+ interface meaning that the model is not recalibrated in a sensitivity
7235-
analysis run. Therefore the sensitivities calculated by this engine are not valid.
7236-
72377228
\subsubsection*{Basis Function Selection}
72387229

72397230
Currently the basis function system is generated by specifying the type of the functions and the order, see

OREAnalytics/orea/app/analytics/pricinganalytic.cpp

Lines changed: 3 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -158,7 +158,6 @@ void PricingAnalyticImpl::runAnalytic(
158158
else if (type == "SENSITIVITY") {
159159
CONSOLEW("Risk: Sensitivity Report");
160160
LOG("Sensi Analysis - Initialise");
161-
bool recalibrateModels = true;
162161
bool ccyConv = false;
163162
std::string configuration = inputs_->marketConfig("pricing");
164163
boost::shared_ptr<SensitivityAnalysis> sensiAnalysis;
@@ -169,7 +168,7 @@ void PricingAnalyticImpl::runAnalytic(
169168
sensiAnalysis = boost::make_shared<SensitivityAnalysis>(
170169
analytic()->portfolio(), analytic()->market(), configuration, inputs_->pricingEngine(),
171170
analytic()->configurations().simMarketParams, analytic()->configurations().sensiScenarioData,
172-
recalibrateModels, analytic()->configurations().curveConfig,
171+
inputs_->sensiRecalibrateModels(), analytic()->configurations().curveConfig,
173172
analytic()->configurations().todaysMarketParams, ccyConv, inputs_->refDataManager(),
174173
*inputs_->iborFallbackConfig(), true, inputs_->dryRun());
175174
LOG("Single-threaded sensi analysis created");
@@ -182,9 +181,9 @@ void PricingAnalyticImpl::runAnalytic(
182181
std::function<std::vector<boost::shared_ptr<ore::data::EngineBuilder>>()> extraEngineBuilders = {};
183182
std::function<std::vector<boost::shared_ptr<ore::data::LegBuilder>>()> extraLegBuilders = {};
184183
sensiAnalysis = boost::make_shared<SensitivityAnalysis>(
185-
inputs_->nThreads(), inputs_->asof(), loader, analytic()->portfolio(), Market::defaultConfiguration,
184+
inputs_->nThreads(), inputs_->asof(), loader, analytic()->portfolio(), configuration,
186185
inputs_->pricingEngine(), analytic()->configurations().simMarketParams,
187-
analytic()->configurations().sensiScenarioData, recalibrateModels,
186+
analytic()->configurations().sensiScenarioData, inputs_->sensiRecalibrateModels(),
188187
analytic()->configurations().curveConfig, analytic()->configurations().todaysMarketParams, ccyConv,
189188
inputs_->refDataManager(), *inputs_->iborFallbackConfig(), true, inputs_->dryRun());
190189
LOG("Multi-threaded sensi analysis created");

OREAnalytics/orea/app/inputparameters.hpp

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -128,6 +128,7 @@ class InputParameters {
128128
void setOutputJacobi(bool b) { outputJacobi_ = b; }
129129
void setUseSensiSpreadedTermStructures(bool b) { useSensiSpreadedTermStructures_ = b; }
130130
void setSensiThreshold(Real r) { sensiThreshold_ = r; }
131+
void setSensiRecalibrateModels(bool b) { sensiRecalibrateModels_ = b; }
131132
void setSensiSimMarketParams(const std::string& xml);
132133
void setSensiSimMarketParamsFromFile(const std::string& fileName);
133134
void setSensiScenarioData(const std::string& xml);
@@ -420,6 +421,7 @@ class InputParameters {
420421
bool outputJacobi() const { return outputJacobi_; };
421422
bool useSensiSpreadedTermStructures() { return useSensiSpreadedTermStructures_; }
422423
QuantLib::Real sensiThreshold() const { return sensiThreshold_; }
424+
bool sensiRecalibrateModels() const { return sensiRecalibrateModels_; }
423425
const boost::shared_ptr<ore::analytics::ScenarioSimMarketParameters>& sensiSimMarketParams() { return sensiSimMarketParams_; }
424426
const boost::shared_ptr<ore::analytics::SensitivityScenarioData>& sensiScenarioData() { return sensiScenarioData_; }
425427
const boost::shared_ptr<ore::data::EngineData>& sensiPricingEngine() { return sensiPricingEngine_; }
@@ -688,6 +690,7 @@ class InputParameters {
688690
bool alignPillars_ = false;
689691
bool useSensiSpreadedTermStructures_ = true;
690692
QuantLib::Real sensiThreshold_ = 1e-6;
693+
bool sensiRecalibrateModels_ = true;
691694
boost::shared_ptr<ore::analytics::ScenarioSimMarketParameters> sensiSimMarketParams_;
692695
boost::shared_ptr<ore::analytics::SensitivityScenarioData> sensiScenarioData_;
693696
boost::shared_ptr<ore::data::EngineData> sensiPricingEngine_;

OREAnalytics/orea/app/oreapp.cpp

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -766,6 +766,10 @@ void OREApp::buildInputParameters(boost::shared_ptr<InputParameters> inputs,
766766
tmp = params_->get("sensitivity", "outputSensitivityThreshold", false);
767767
if (tmp != "")
768768
inputs->setSensiThreshold(parseReal(tmp));
769+
770+
tmp = params_->get("sensitivity", "recalibrateModels", false);
771+
if (tmp != "")
772+
inputs->setSensiRecalibrateModels(parseBool(tmp));
769773
}
770774

771775

0 commit comments

Comments
 (0)