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";
 }
Ejemplo n.º 3
0
 public static PriceResult ToPriceResult(this QuotationResult quotationResult)
 {
     return(new PriceResult
     {
         InsurerName = quotationResult.Name,
         Price = quotationResult.Price,
         Tax = quotationResult.Tax
     });
 }
        public IHttpActionResult GetQuotation(string currency)
        {
            var quotation = new QuotationResult();

            try
            {
                quotation = new QuotationService().GetQuotation(currency);
            }
            catch (Exception e)
            {
                return(new ResponseMessageResult(Request.CreateResponse(HttpStatusCode.InternalServerError, e.Message)));
            }

            return(new ResponseMessageResult(Request.CreateResponse(quotation.Result, quotation.Message)));
        }
Ejemplo n.º 5
0
        public void ItCreatesPriceResult()
        {
            var quotationResult = new QuotationResult
            {
                Name  = "Insurance company",
                Tax   = 5,
                Price = 2
            };

            var priceResult = quotationResult.ToPriceResult();

            Assert.NotNull(priceResult);
            Assert.Equal(quotationResult.Name, priceResult.InsurerName);
            Assert.Equal(quotationResult.Price, priceResult.Price);
            Assert.Equal(quotationResult.Tax, priceResult.Tax);
        }
 public void RegisterSale(string clientId, int amount, QuotationResult result)
 {
     foreach (var quotation in result.Result)
     {
         var broker = GetBrokerTransactions(quotation.BrokerId, true);
         broker.Push(-quotation.Amount);
     }
     var client = GetClientTransactions(clientId, true);
     client.Push(new TransactionData
     {
         EventDate = DateTime.Now,
         IsSale = true,
         QuotationResult = result,
         RequestedAmount = amount
     });
 }
Ejemplo n.º 7
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);
        }
Ejemplo n.º 8
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);
        }