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"; }
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))); }
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 }); }
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); }