Logo
Fully annotated reference manual - version 1.8.12
Loading...
Searching...
No Matches
simplescenariofactory.hpp
Go to the documentation of this file.
1/*
2 Copyright (C) 2016 Quaternion Risk Management Ltd
3 All rights reserved.
4
5 This file is part of ORE, a free-software/open-source library
6 for transparent pricing and risk analysis - http://opensourcerisk.org
7
8 ORE is free software: you can redistribute it and/or modify it
9 under the terms of the Modified BSD License. You should have received a
10 copy of the license along with this program.
11 The license is also available online at <http://opensourcerisk.org>
12
13 This program is distributed on the basis that it will form a useful
14 contribution to risk analytics and model standardisation, but WITHOUT
15 ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
16 FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.
17*/
18
19/*! \file simplescenariofactory.hpp
20 \brief factory classes for simple scenarios
21 \ingroup scenario
22*/
23
24#pragma once
25
26#include <boost/make_shared.hpp>
29
30namespace ore {
31namespace analytics {
32
33//! Factory class for building simple scenario objects
34/*! \ingroup scenario
35 */
37public:
38 /*! use shared data block only if it is guarateed that all scenarios created by this factory:
39 - are all absolute or all relative
40 - provide values for exactly the same set of risk factor keys
41 - have the same coordinates for all risk factor keys (if any) */
42 explicit SimpleScenarioFactory(const bool useCommonSharedDataBlock = false)
43 : useCommonSharedDataBlock_(useCommonSharedDataBlock) {}
44 explicit SimpleScenarioFactory(const QuantLib::ext::shared_ptr<SimpleScenario::SharedData>& sharedData)
45 : useCommonSharedDataBlock_(true), sharedData_(sharedData) {}
46 const QuantLib::ext::shared_ptr<Scenario> buildScenario(Date asof, bool isAbsolute, const std::string& label = "",
47 Real numeraire = 0.0) const override {
48 auto tmp = QuantLib::ext::make_shared<SimpleScenario>(asof, label, numeraire,
50 tmp->setAbsolute(isAbsolute);
51 if (useCommonSharedDataBlock_ && sharedData_ == nullptr)
52 sharedData_ = tmp->sharedData();
53 return tmp;
54 }
55
56private:
58 mutable QuantLib::ext::shared_ptr<SimpleScenario::SharedData> sharedData_;
59};
60
61} // namespace analytics
62} // namespace ore
Scenario factory base class.
Factory class for building simple scenario objects.
SimpleScenarioFactory(const QuantLib::ext::shared_ptr< SimpleScenario::SharedData > &sharedData)
SimpleScenarioFactory(const bool useCommonSharedDataBlock=false)
QuantLib::ext::shared_ptr< SimpleScenario::SharedData > sharedData_
const QuantLib::ext::shared_ptr< Scenario > buildScenario(Date asof, bool isAbsolute, const std::string &label="", Real numeraire=0.0) const override
Build a scenario instance without filling it.
factory classes for scenarios
Simple scenario class.
Date asof(14, Jun, 2018)