コード例 #1
0
        public void CheckValidUserInput(double S, double K, double t, double sigma, double r)
        {
            BlackScholesParametersModel inputs = new BlackScholesParametersModel(S, K, t, sigma, r);

            Assert.IsTrue(UsefulTools.IsBlackScholesVariablesValid(new List <double>()
            {
                S, K, t, sigma, r
            }));
        }
コード例 #2
0
        public void ReturnTheCorrectValueOfCall(double S, double K,
                                                double t, double sigma,
                                                double r, double expectedPriceValue)
        {
            BlackScholesParametersModel inputs = new BlackScholesParametersModel(S, K, t, sigma, r);

            CallOption  callOption = new CallOption();
            OptionModel call       = callOption.GetOptionData(inputs);

            Assert.AreEqual(expectedPriceValue, call.Value, 0.0001);
        }
コード例 #3
0
        public OptionModel GetOptionData(BlackScholesParametersModel inputs)
        {
            try
            {
                double d1          = ComputeD1(inputs);
                double d2          = ComputeD2(inputs, d1);
                double optionPrice = ComputeOptionPrice(inputs, d1, d2);

                return(new OptionModel(OptionType, optionPrice));
            }
            catch (Exception)
            {
                throw;
            }
        }
コード例 #4
0
        public void Reset()
        {
            try
            {
                Inputs = new BlackScholesParametersModel();
                Call   = null;
                Put    = null;

                UpdateAppStatus("Reset operation successfully completed.");
            }
            catch (Exception ex)
            {
                UpdateAppStatus(ex.Message);
            }
        }
コード例 #5
0
        public void TestResetCalculator(double S, double K, double t, double sigma, double r)
        {
            BlackScholesParametersModel inputs = new BlackScholesParametersModel(S, K, t, sigma, r);

            MainViewModel mvm = new MainViewModel
            {
                Inputs = inputs
            };

            mvm.ComputeOptionsPrice();
            mvm.Reset();

            Assert.IsNull(mvm.Call);
            Assert.IsNull(mvm.Put);
            Assert.IsFalse(UsefulTools.IsBlackScholesVariablesValid(mvm.Inputs.InputParametersDict.Values.ToList()));
        }
コード例 #6
0
 protected double ComputeD2(BlackScholesParametersModel inputs, double d1)
 {
     return(d1 - (inputs.Volatility * Math.Sqrt(inputs.Time)));
 }
コード例 #7
0
 protected double ComputeD1(BlackScholesParametersModel inputs)
 {
     return((Math.Log(inputs.Stock / inputs.Strike) + (inputs.InterestRate + (Math.Pow(inputs.Volatility, 2) / 2)) * inputs.Time) / (inputs.Volatility * Math.Sqrt(inputs.Time)));
 }
コード例 #8
0
 protected abstract double ComputeOptionPrice(BlackScholesParametersModel inputs, double d1, double d2);
コード例 #9
0
 protected override double ComputeOptionPrice(BlackScholesParametersModel inputs, double d1, double d2)
 {
     return(Math.Round((inputs.Strike * Math.Exp(-inputs.InterestRate * inputs.Time) * CND(-d2)) - (inputs.Stock * CND(-d1)), 4));
 }
コード例 #10
0
 public MainViewModel()
 {
     Inputs = new BlackScholesParametersModel();
 }