1616 FITNESS FOR A PARTICULAR PURPOSE. See the license for more details.
1717*/
1818
19- #include < ored/model/blackscholesmodelbuilderbase .hpp>
19+ #include < ored/model/assetmodelbuilderbase .hpp>
2020#include < ored/model/utilities.hpp>
2121
2222namespace ore {
2323namespace data {
2424
25- BlackScholesModelBuilderBase::BlackScholesModelBuilderBase (
26- const Handle<YieldTermStructure>& curve, const QuantLib::ext::shared_ptr<GeneralizedBlackScholesProcess>& process,
27- const std::set<Date>& simulationDates, const std::set<Date>& addDates, const Size timeStepsPerYear ,
28- const Handle<YieldTermStructure>& baseCurve)
29- : BlackScholesModelBuilderBase (std::vector<Handle<YieldTermStructure>>{curve},
30- std::vector<QuantLib::ext::shared_ptr<GeneralizedBlackScholesProcess>>{process},
31- simulationDates, addDates, timeStepsPerYear, baseCurve) {}
25+ AssetModelBuilderBase::AssetModelBuilderBase ( const Handle<YieldTermStructure>& curve,
26+ const QuantLib::ext::shared_ptr<GeneralizedBlackScholesProcess>& process,
27+ const std::set<Date>& simulationDates, const std::set<Date>& addDates,
28+ const Size timeStepsPerYear, const Handle<YieldTermStructure>& baseCurve)
29+ : AssetModelBuilderBase (std::vector<Handle<YieldTermStructure>>{curve},
30+ std::vector<QuantLib::ext::shared_ptr<GeneralizedBlackScholesProcess>>{process},
31+ simulationDates, addDates, timeStepsPerYear, baseCurve) {}
3232
33- BlackScholesModelBuilderBase::BlackScholesModelBuilderBase (
33+ AssetModelBuilderBase::AssetModelBuilderBase (
3434 const std::vector<Handle<YieldTermStructure>>& curves,
3535 const std::vector<QuantLib::ext::shared_ptr<GeneralizedBlackScholesProcess>>& processes,
3636 const std::set<Date>& simulationDates, const std::set<Date>& addDates, const Size timeStepsPerYear,
3737 const Handle<YieldTermStructure>& baseCurve)
3838 : curves_(curves), baseCurve_(baseCurve), processes_(processes), simulationDates_(simulationDates),
3939 addDates_ (addDates), timeStepsPerYear_(timeStepsPerYear) {
4040
41- QL_REQUIRE (!curves_.empty (), " BlackScholesModelBuilderBase : no curves given" );
41+ QL_REQUIRE (!curves_.empty (), " AssetModelBuilderBase : no curves given" );
4242
4343 marketObserver_ = QuantLib::ext::make_shared<MarketObserver>();
4444
@@ -59,7 +59,7 @@ BlackScholesModelBuilderBase::BlackScholesModelBuilderBase(
5959 alwaysForwardNotifications ();
6060
6161 allCurves_ = curves_;
62- if (!baseCurve_.empty ())
62+ if (!baseCurve_.empty ())
6363 allCurves_.push_back (baseCurve_);
6464 for (auto const & p : processes_) {
6565 vols_.push_back (p->blackVolatility ());
@@ -68,29 +68,29 @@ BlackScholesModelBuilderBase::BlackScholesModelBuilderBase(
6868 }
6969}
7070
71- BlackScholesModelBuilderBase::BlackScholesModelBuilderBase (
72- const Handle<YieldTermStructure>& curve, const QuantLib::ext::shared_ptr<GeneralizedBlackScholesProcess>& process)
73- : BlackScholesModelBuilderBase (curve, process, {}, {}, 1 ) {}
71+ AssetModelBuilderBase::AssetModelBuilderBase ( const Handle<YieldTermStructure>& curve,
72+ const QuantLib::ext::shared_ptr<GeneralizedBlackScholesProcess>& process)
73+ : AssetModelBuilderBase (curve, process, {}, {}, 1 ) {}
7474
75- Handle<BlackScholesModelWrapper> BlackScholesModelBuilderBase ::model () const {
75+ Handle<AssetModelWrapper> AssetModelBuilderBase ::model () const {
7676 calculate ();
7777 return model_;
7878}
7979
80- bool BlackScholesModelBuilderBase ::requiresRecalibration () const {
80+ bool AssetModelBuilderBase ::requiresRecalibration () const {
8181 setupDatesAndTimes ();
8282 return calibrationPointsChanged (false ) || marketObserver_->hasUpdated (false ) || forceCalibration_;
8383}
8484
85- void BlackScholesModelBuilderBase ::newCalcWithoutRecalibration () const { calculate (); }
85+ void AssetModelBuilderBase ::newCalcWithoutRecalibration () const { calculate (); }
8686
87- void BlackScholesModelBuilderBase ::forceRecalculate () {
87+ void AssetModelBuilderBase ::forceRecalculate () {
8888 forceCalibration_ = true ;
8989 ModelBuilder::forceRecalculate ();
9090 forceCalibration_ = false ;
9191}
9292
93- void BlackScholesModelBuilderBase ::setupDatesAndTimes () const {
93+ void AssetModelBuilderBase ::setupDatesAndTimes () const {
9494 Date referenceDate = curves_.front ()->referenceDate ();
9595 effectiveSimulationDates_.clear ();
9696 effectiveSimulationDates_.insert (referenceDate);
@@ -108,7 +108,7 @@ void BlackScholesModelBuilderBase::setupDatesAndTimes() const {
108108 discretisationTimeGrid_ = TimeGrid (times.begin (), times.end (), steps);
109109}
110110
111- void BlackScholesModelBuilderBase ::performCalculations () const {
111+ void AssetModelBuilderBase ::performCalculations () const {
112112 if (requiresRecalibration ()) {
113113
114114 // update vol and curves cache
@@ -121,15 +121,15 @@ void BlackScholesModelBuilderBase::performCalculations() const {
121121
122122 // setup model
123123
124- model_.linkTo (QuantLib::ext::make_shared<BlackScholesModelWrapper>( getCalibratedProcesses (), effectiveSimulationDates_,
125- discretisationTimeGrid_));
124+ model_.linkTo (QuantLib::ext::make_shared<AssetModelWrapper>(
125+ processType (), getCalibratedProcesses (), effectiveSimulationDates_, discretisationTimeGrid_));
126126
127127 // notify model observers
128128 model_->notifyObservers ();
129129 }
130130}
131131
132- bool BlackScholesModelBuilderBase ::calibrationPointsChanged (const bool updateCache) const {
132+ bool AssetModelBuilderBase ::calibrationPointsChanged (const bool updateCache) const {
133133
134134 // get times for curves and times / strikes for vols
135135
0 commit comments