public static double[] ArithmeticAsianOptionPricing(ArithmeticAsianOptionProb prob) { double s = prob.SpotPrice; double k = prob.StrikePrice; double r = prob.InterestRate; double t = prob.Maturity; double sigma = prob.Volatility; int n = prob.ObservationTime; OptionTypeEnum optionType = prob.OptionType; int pathNum = prob.PathNumber; ControlVariateMethod method = prob.VariateMethod; return(GetAAOPrice(s, k, t, r, sigma, optionType, method, pathNum, n)); }
private void DoCalculation() { IsCalculateEnabled = false; RaisePropertyChanged("IsCalculateEnabled"); ErrorCode errcode = FirstValidation(); if (errcode != ErrorCode.OK) { Result = Utility.getErrorMsg(errcode); } else { var prob = new ArithmeticAsianOptionProb( _spotPrice, _volatility, _interestRate, _maturity, _strikePrice, _observationTime, _optionType, _monteCarloPath, _controlVariateMethod ); errcode = prob.validate(); if (errcode != ErrorCode.OK) { Result = Utility.getErrorMsg(errcode); } else { var results = prob.calculate(); string ans = "["; foreach (var num in results) { ans += Math.Round(num, 4).ToString() + ", "; } ans = ans.Trim().Substring(0, ans.Length - 2) + "]"; Result = ans; } } RaisePropertyChanged("Result"); IsCalculateEnabled = true; RaisePropertyChanged("IsCalculateEnabled"); }