Generalized_HullWhite::Generalized_HullWhite(const Handle<YieldTermStructure>& termStructure, std::vector<Date> dates, std::vector<Real> sigma, Real a, Real fxVol, Real fxCorr) : Vasicek(termStructure->forwardRate(0.0, 0.0, Continuous, NoFrequency), a, 0.0, sigma[0], 0.0), a0_(a), TermStructureConsistentModel(termStructure), fxVol_(fxVol), fxCorr_(fxCorr) { a_ = NullParameter(); b_ = NullParameter(); lambda_ = NullParameter(); DayCounter dc = termStructure->dayCounter(); //volperiods_.push_back(0.0); for (Size i=0; i<dates.size()-1; i++) volperiods_.push_back(dc.yearFraction(Settings::instance().evaluationDate(), dates[i])); sigma_ = PiecewiseConstantParameter(volperiods_, PositiveConstraint()); for (Size i=0; i< sigma_.size(); i++) sigma_.setParam(i, sigma[i]); generateArguments(); registerWith(termStructure); }
HullWhite::HullWhite(const Handle<YieldTermStructure>& termStructure, Real a, Real sigma) : Vasicek(termStructure->forwardRate(0.0, 0.0, Continuous, NoFrequency), a, 0.0, sigma, 0.0), TermStructureConsistentModel(termStructure) { b_ = NullParameter(); lambda_ = NullParameter(); generateArguments(); registerWith(termStructure); }
void CalibratedModel::setParams(const Array& params) { Array::const_iterator p = params.begin(); for (Size i=0; i<arguments_.size(); ++i) { for (Size j=0; j<arguments_[i].size(); ++j, ++p) { QL_REQUIRE(p!=params.end(),"parameter array too small"); arguments_[i].setParam(j, *p); } } QL_REQUIRE(p==params.end(),"parameter array too big!"); generateArguments(); notifyObservers(); }
BatesModel::BatesModel(const boost::shared_ptr<BatesProcess> & process) : HestonModel(process) { arguments_.resize(8); arguments_[5] = ConstantParameter(process->nu(), NoConstraint()); arguments_[6] = ConstantParameter(process->delta(), PositiveConstraint()); arguments_[7] = ConstantParameter(process->lambda(), PositiveConstraint()); generateArguments(); }
void update() { generateArguments(); notifyObservers(); }