2727
2828#include < ql/time/daycounters/actualactual.hpp>
2929#include < ql/types.hpp>
30+ #include < ql/math/optimization/levenbergmarquardt.hpp>
3031
3132#include < qle/models/crossassetmodel.hpp>
3233
@@ -48,19 +49,31 @@ using namespace QuantLib;
4849class CommoditySchwartzData {
4950public:
5051 // ! Default constructor
51- CommoditySchwartzData () : driftFreeState_(false ) {}
52+ CommoditySchwartzData (bool driftFreeState = false ,
53+ boost::shared_ptr<OptimizationMethod> optimizationMethod = boost::make_shared<LevenbergMarquardt>(1E-8 , 1E-8 , 1E-8 ),
54+ EndCriteria endCriteria = EndCriteria(1000 , 500 , 1E-8 , 1E-8 , 1E-8 ),
55+ Constraint constraint = Constraint(),
56+ BlackCalibrationHelper::CalibrationErrorType calibrationErrorType = BlackCalibrationHelper::RelativePriceError)
57+ : driftFreeState_(driftFreeState), optimizationMethod_(optimizationMethod), endCriteria_(endCriteria),
58+ constraint_ (constraint), calibrationErrorType_(calibrationErrorType) {}
5259
5360 // ! Detailed constructor
5461 CommoditySchwartzData (std::string name, std::string currency, CalibrationType calibrationType,
5562 bool calibrateSigma, Real sigma,
5663 bool calibrateKappa, Real kappa,
5764 std::vector<std::string> optionExpiries = std::vector<std::string>(),
5865 std::vector<std::string> optionStrikes = std::vector<std::string>(),
66+ boost::shared_ptr<OptimizationMethod> optimizationMethod = boost::make_shared<LevenbergMarquardt>(1E-8 , 1E-8 , 1E-8 ),
67+ EndCriteria endCriteria = EndCriteria(1000 , 500 , 1E-8 , 1E-8 , 1E-8 ),
68+ Constraint constraint = Constraint(),
69+ BlackCalibrationHelper::CalibrationErrorType calibrationErrorType = BlackCalibrationHelper::RelativePriceError,
5970 bool driftFreeState = false)
6071 : name_(name), ccy_(currency), calibrationType_(calibrationType),
6172 calibrateSigma_(calibrateSigma), sigmaType_(ParamType::Constant), sigmaValue_(sigma),
6273 calibrateKappa_(calibrateKappa),kappaType_(ParamType::Constant), kappaValue_(kappa),
63- optionExpiries_(optionExpiries), optionStrikes_(optionStrikes), driftFreeState_(driftFreeState) {}
74+ optionExpiries_(optionExpiries), optionStrikes_(optionStrikes),
75+ driftFreeState_(driftFreeState), optimizationMethod_(optimizationMethod),
76+ endCriteria_(endCriteria), constraint_(constraint), calibrationErrorType_(calibrationErrorType) {}
6477
6578 // ! \name Setters/Getters
6679 // @{
@@ -76,6 +89,10 @@ class CommoditySchwartzData {
7689 std::vector<std::string>& optionExpiries () { return optionExpiries_; }
7790 std::vector<std::string>& optionStrikes () { return optionStrikes_; }
7891 bool & driftFreeState () { return driftFreeState_; }
92+ boost::shared_ptr<OptimizationMethod>& optimizationMethod () { return optimizationMethod_; }
93+ EndCriteria& endCriteria () { return endCriteria_; }
94+ Constraint& constraint () { return constraint_; }
95+ BlackCalibrationHelper::CalibrationErrorType calibrationErrorType () { return calibrationErrorType_; }
7996 // @}
8097
8198 // ! \name Serialisation
@@ -103,6 +120,10 @@ class CommoditySchwartzData {
103120 std::vector<std::string> optionExpiries_;
104121 std::vector<std::string> optionStrikes_;
105122 bool driftFreeState_;
123+ boost::shared_ptr<OptimizationMethod> optimizationMethod_;
124+ EndCriteria endCriteria_;
125+ Constraint constraint_;
126+ BlackCalibrationHelper::CalibrationErrorType calibrationErrorType_;
106127};
107128} // namespace data
108129} // namespace ore
0 commit comments