public Task <QuotationResult> CalculatePremiums(QuotationInput quoteparams) { try { return(Task.Run(() => { double d1 = 0.0; double d2 = 0.0; QuotationResult quotes = new QuotationResult(); double S = double.Parse(quoteparams.StockPrice.Replace(".", ",")); double K = double.Parse(quoteparams.StrikePrice.Replace(".", ",")); double T = double.Parse(quoteparams.TimeToMaturity.Replace(".", ",")); double r = double.Parse(quoteparams.InterestRate.Replace(".", ",")); double v = double.Parse(quoteparams.Volatility.Replace(".", ",")); d1 = Math.Round((Math.Log(S / K) + (r + v * v / 2.0) * T) / v / Math.Sqrt(T), 4); d2 = Math.Round(d1 - v * Math.Sqrt(T), 4); quotes.D1 = d1; quotes.D2 = d2; quotes.CallPremium = Math.Round(S * CumulativeNormDistFunction(d1) - K * Math.Exp(-r * T) * CumulativeNormDistFunction(d2), 4); quotes.PutPremium = Math.Round(K * Math.Exp(-r * T) * CumulativeNormDistFunction(-d2) - S * CumulativeNormDistFunction(-d1), 4); return quotes; })); } catch (Exception ex) { throw; } }
public BlackScholesQuotationViewModel(IOptionsPricerService pricerService, IEventAggregator eventAggregator) { _pricerService = pricerService; _eventAggregator = eventAggregator; QuotationInput = new QuotationInput(); QuotationResult = new QuotationResult(); Name = "BlackScholes"; }
private void quoInput_CancelEvent(object sender, EventArgs e) { quoInput = new QuotationInput(); quoInput.SaveEvent -= new EventHandler(quoInput_SaveEvent); quoInput.SaveEvent += new EventHandler(quoInput_SaveEvent); quoInput.CancelEvent -= new EventHandler(quoInput_CancelEvent); quoInput.CancelEvent += new EventHandler(quoInput_CancelEvent); this.LoadMain(); }
public void ShouldCallCalculatePremiumsMethodOfOptionsPricerServiceWhenGetQuoteCommandIsExecuted() { var input = new QuotationInput() { StockPrice = "50.0", StrikePrice = "55.0", Volatility = "0.2", InterestRate = "0.09", TimeToMaturity = "1.0" }; _viewModel.QuotationInput = input; _viewModel.GetQuoteCommand.Execute(null); _pricerServiceMock.Verify(dp => dp.CalculatePremiums(_viewModel.QuotationInput), Times.Once); }
public Main() { InitializeComponent(); poview = new PoView(); quoInput = new QuotationInput(); ringiassign = new RingiAssign(); transferview = new TransferView(); disposalProcessing = new DisposalProcessing(); mainview = new MainView(); mainview.NewItemEvent -= new EventHandler(mainview_NewItemEvent); mainview.NewItemEvent += new EventHandler(mainview_NewItemEvent); this.LoadControl(mainview); lblMain.BackColor = Color.AliceBlue; lblMain.ForeColor = Color.DodgerBlue; lblMain.Font = new Font("Calibri", lblMain.Font.Size, FontStyle.Bold); }
public void CalculatePremiums_should_return_double2() { //Arrange var pricer = new OptionsPricerService(); var input = new QuotationInput() { StockPrice = "64.0", StrikePrice = "60.0", Volatility = "0.27", InterestRate = "0.045", TimeToMaturity = (180.0 / 365.0).ToString(CultureInfo.InvariantCulture) }; QuotationResult expected = new QuotationResult() { CallPremium = 7.7661, PutPremium = 2.4493 }; //Act var result = pricer.CalculatePremiums(input); //Assert Assert.Equal(expected.CallPremium, result.Result.CallPremium, 3); Assert.Equal(expected.PutPremium, result.Result.PutPremium, 3); }
public void CalculatePremiums_should_return_double() { //Arrange var pricer = new OptionsPricerService(); var input = new QuotationInput() { StockPrice = "50.0", StrikePrice = "55.0", Volatility = "0.2", InterestRate = "0.09", TimeToMaturity = "1.0" }; QuotationResult expected = new QuotationResult() { CallPremium = 3.8617, PutPremium = 4.1279 }; //Act var result = pricer.CalculatePremiums(input); //Assert Assert.Equal(expected.CallPremium, result.Result.CallPremium); Assert.Equal(expected.PutPremium, result.Result.PutPremium); }