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 })); }
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); }
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; } }
public void Reset() { try { Inputs = new BlackScholesParametersModel(); Call = null; Put = null; UpdateAppStatus("Reset operation successfully completed."); } catch (Exception ex) { UpdateAppStatus(ex.Message); } }
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())); }
protected double ComputeD2(BlackScholesParametersModel inputs, double d1) { return(d1 - (inputs.Volatility * Math.Sqrt(inputs.Time))); }
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))); }
protected abstract double ComputeOptionPrice(BlackScholesParametersModel inputs, double d1, double d2);
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)); }
public MainViewModel() { Inputs = new BlackScholesParametersModel(); }