Exemplo n.º 1
0
        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");
        }