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";
 }
Exemple #3
0
 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();
 }
Exemple #4
0
        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);
        }
Exemple #5
0
        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);
        }
Exemple #6
0
        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);
        }
Exemple #7
0
        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);
        }