public DiscretizedVanillaOption(VanillaOption.Arguments args, StochasticProcess process, TimeGrid grid) { arguments_ = args; stoppingTimes_ = new InitializedList<double>(args.exercise.dates().Count); for (int i=0; i<stoppingTimes_.Count; ++i) { stoppingTimes_[i] = process.time(args.exercise.date(i)); if (!grid.empty()) { // adjust to the given grid stoppingTimes_[i] = grid.closestTime(stoppingTimes_[i]); } } }
public DiscretizedVanillaOption(VanillaOption.Arguments args, StochasticProcess process, TimeGrid grid) { arguments_ = args; stoppingTimes_ = new InitializedList <double>(args.exercise.dates().Count); for (int i = 0; i < stoppingTimes_.Count; ++i) { stoppingTimes_[i] = process.time(args.exercise.date(i)); if (!grid.empty()) { // adjust to the given grid stoppingTimes_[i] = grid.closestTime(stoppingTimes_[i]); } } }
protected override double?controlVariateValue() { IPricingEngine controlPE = controlPricingEngine(); Utils.QL_REQUIRE(controlPE != null, () => "engine does not provide control variation pricing engine"); VanillaOption.Arguments controlArguments = controlPE.getArguments() as VanillaOption.Arguments; controlArguments = arguments_; controlArguments.exercise = new EuropeanExercise(arguments_.exercise.lastDate()); controlPE.calculate(); VanillaOption.Results controlResults = controlPE.getResults() as VanillaOption.Results; return(controlResults.value); }
protected override double controlVariateValue() { IPricingEngine controlPE = controlPricingEngine(); if (controlPE == null) { throw new Exception("engine does not provide control variation pricing engine"); } VanillaOption.Arguments controlArguments = controlPE.getArguments() as VanillaOption.Arguments; controlArguments = arguments_; controlArguments.exercise = new EuropeanExercise(arguments_.exercise.lastDate()); controlPE.calculate(); VanillaOption.Results controlResults = controlPE.getResults() as VanillaOption.Results; return(controlResults.value.GetValueOrDefault()); }
public Fj_Helper(VanillaOption.Arguments arguments, HestonModel model, AnalyticHestonEngine engine, ComplexLogFormula cpxLog, double term, double ratio, int j) { j_ = j; //arg_(arguments), kappa_ = model.kappa(); theta_ = model.theta(); sigma_ = model.sigma(); v0_ = model.v0(); cpxLog_ = cpxLog; term_ = term; x_ = Math.Log(model.process().s0().link.value()); sx_ = Math.Log(((StrikedTypePayoff)(arguments.payoff)).strike()); dd_ = x_ - Math.Log(ratio); sigma2_ = sigma_ * sigma_; rsigma_ = model.rho() * sigma_; t0_ = kappa_ - ((j_ == 1) ? model.rho() * sigma_ : 0); b_ = 0; g_km1_ = 0; engine_ = engine; }
public void setupArguments(VanillaOption.Arguments args) { this.arguments_ = args; }