public override void setupArguments(IPricingEngineArguments args) { base.setupArguments(args); DiscreteAveragingAsianOption.Arguments moreArgs = args as DiscreteAveragingAsianOption.Arguments; Utils.QL_REQUIRE(moreArgs != null, () => "wrong argument type"); moreArgs.averageType = averageType_; moreArgs.runningAccumulator = runningAccumulator_; moreArgs.pastFixings = pastFixings_; moreArgs.fixingDates = fixingDates_; }
protected override double?controlVariateValue() { IPricingEngine controlPE = this.controlPricingEngine(); Utils.QL_REQUIRE(controlPE != null, () => "engine does not provide control variation pricing engine"); DiscreteAveragingAsianOption.Arguments controlArguments = (DiscreteAveragingAsianOption.Arguments)controlPE.getArguments(); controlArguments = arguments_; controlPE.calculate(); DiscreteAveragingAsianOption.Results controlResults = (DiscreteAveragingAsianOption.Results)(controlPE.getResults()); return(controlResults.value); }