1919#ifndef ored_volcurves_i
2020#define ored_volcurves_i
2121
22+ %include std_set.i
23+
2224%{
23- using ore::data::GenerticYieldVolCurve
24- using ore::data::SwaptionVolCurve
25+ using ore::data::GenericYieldVolCurve;
26+ using ore::data::SwaptionVolCurve;
27+ using ore::data::BlackScholesModelBuilderBase;
28+ using ore::data::LocalVolModelBuilder;
2529using namespace std ;
2630%}
2731
32+ %template (DateSet) std::set<Date>;
33+
34+ /*
2835%shared_ptr(GenericYieldVolCurve)
2936class GenericYieldVolCurve {
3037 public:
@@ -50,5 +57,33 @@ class SwaptionVolCurve : public GenericYieldVolCurve {
5057 const SwaptionVolatilityCurveSpec& spec() const;
5158
5259};
60+ */
61+
62+ %template (GeneralizedBlackScholesProcessVector) std::vector<ext::shared_ptr<GeneralizedBlackScholesProcess> >;
63+
64+ %shared_ptr(LocalVolModelBuilder)
65+ class LocalVolModelBuilder : public BlackScholesModelBuilderBase {
66+ public:
67+ enum class Type { Dupire, DupireFloored, AndreasenHuge };
68+ LocalVolModelBuilder (const std::vector<Handle<YieldTermStructure>>& curves,
69+ const std::vector<ext::shared_ptr<GeneralizedBlackScholesProcess>>& processes,
70+ const std::set<Date>& simulationDates = {},
71+ const std::set<Date>& addDates = {},
72+ const Size timeStepsPerYear = 1 ,
73+ const Type lvType = Type::Dupire,
74+ const std::vector<Real>& calibrationMoneyness = { -2.0 , -1.0 , 0.0 , 1.0 , 2.0 },
75+ const bool dontCalibrate = false );
76+ LocalVolModelBuilder (const Handle<YieldTermStructure>& curve,
77+ const ext::shared_ptr<GeneralizedBlackScholesProcess>& process,
78+ const std::set<Date>& simulationDates = {},
79+ const std::set<Date>& addDates = {},
80+ const Size timeStepsPerYear = 1 ,
81+ const Type lvType = Type::Dupire,
82+ const std::vector<Real>& calibrationMoneyness = { -2.0 , -1.0 , 0.0 , 1.0 , 2.0 },
83+ const bool dontCalibrate = false );
84+
85+ std::vector<ext::shared_ptr<GeneralizedBlackScholesProcess>> getCalibratedProcesses () const override ;
86+ };
5387
5488
89+ #endif
0 commit comments