public void Pe_Ratio_Throws_Exception_When_Dividend_Is_Zero_And_Double()
        {
            ArgumentException ex = Assert.Throws <ArgumentException>(() =>
                                                                     { MathFormulaCalculations.PeRatio(10, 0.0); });

            Assert.Equal("Price or Divident cannot be zero!", ex.Message);
        }
 public void Pe_Ratio_Returns_Result_When_Params_Are_Valid()
 {
     //Result should be 10/1 = 10
     Assert.Equal(10, MathFormulaCalculations.PeRatio(10, 1));
     //Result should be 10/2 = 5
     Assert.Equal(5, MathFormulaCalculations.PeRatio(10, 2));
 }
        public void Geometric_Mean_Of_List_With_Three_Values()
        {
            var values = new List <double> {
                2.0, 4.0, 6.0
            };

            Assert.Equal(3.63, Math.Round(MathFormulaCalculations.GeometricMean(values), 2));
        }
        public void Geometric_Mean_Of_List_With_One_Value()
        {
            var values = new List <double> {
                2.0
            };

            Assert.Equal(2, MathFormulaCalculations.GeometricMean(values));
        }
        public void Geometric_Mean_Of_List_With_Two_Values()
        {
            var values = new List <double> {
                2.0, 4.5
            };

            Assert.Equal(3, MathFormulaCalculations.GeometricMean(values));
        }
        public void Fixed_Dividend_Yield_Throws_When_Price_Is_Zero_And_Double()
        {
            ArgumentException ex = Assert.Throws <ArgumentException>(() =>
            {
                MathFormulaCalculations.FixedDividend(5, 2, 0.0);
            });

            Assert.Equal("Price cannot be zero!", ex.Message);
        }
        public void Geometric_Mean_Of_Empty_List_Throws_Exception()
        {
            var values           = new List <double>();
            ArgumentException ex = Assert.Throws <ArgumentException>(testCode: () =>
            {
                MathFormulaCalculations.GeometricMean(values: values);
            });

            Assert.Equal(expected: "Values must be not zero", actual: ex.Message);
        }
        public void Volume_Weighted_Stock_Price_Single_Trade_Sum_Is_Correct()
        {
            const double manualCalculation = (5.0 * 1.0) / 1.0;

            var trades = new List <Trade>
            {
                new Trade(new CommonStock("NewYork", 5, 5), TradeIndicators.Buy, 5, 1)
            };

            Assert.Equal(manualCalculation, MathFormulaCalculations.VolumeWeightedStockPrice(trades));
        }
Beispiel #9
0
        public double CalculateVolumeWeightedStockPrice(string stockSymbol, int timeFilter = 5) => DoCalculate(
            stockSymbol,
            stock =>
        {
            var fromDateTime = DateTime.UtcNow.Subtract(new TimeSpan(0, timeFilter, 0));
            var stockTrades  = _trade.GetAllTradesByStockAndDate(stock.Symbol, fromDateTime).ToList();

            return(stockTrades.Any()
                        ? MathFormulaCalculations.VolumeWeightedStockPrice(stockTrades)
                        : 0);
        });
        public void Volume_Weighted_Stock_Price_Two_Trades_Sum_Is_Correct()
        {
            const double manualCalculation = ((5.0 * 1.0) + (7.0 * 2.0)) / (1.0 + 2.0);

            var trades = new List <Trade>
            {
                new Trade(new CommonStock("NewYork1", 5, 5), TradeIndicators.Buy, 5, 1),
                new Trade(new CommonStock("NewYork2", 10, 5), TradeIndicators.Buy, 7, 2)
            };

            Assert.Equal(manualCalculation, MathFormulaCalculations.VolumeWeightedStockPrice(trades));
        }
Beispiel #11
0
        public double CalculateSharedIndex()
        {
            var stockPrices = _tradeablesStocks.Select(s => CalculateVolumeWeightedStockPrice(s.Key)).ToList();

            return(MathFormulaCalculations.GeometricMean(stockPrices));
        }
 public void Fixed_Dividend_Yield__Returns_Double_Result_When_Params_Are_Valid()
 {
     Assert.Equal(0.0, MathFormulaCalculations.FixedDividend(5, 0, 1));
     Assert.Equal(5.0, MathFormulaCalculations.FixedDividend(5, 2, 2));
     Assert.Equal(5, MathFormulaCalculations.FixedDividend(10, 1, 2));
 }
Beispiel #13
0
 public override double CalculateDividendYield(double price)
 {
     return(MathFormulaCalculations.DividendYield(LastDividend, price));
 }
        public void Last_Dividend_Yield_Throws_When_Price_Is_Zero()
        {
            ArgumentException ex = Assert.Throws <ArgumentException>(() => { MathFormulaCalculations.DividendYield(5, 0); });

            Assert.Equal("Price cannot be zero!", ex.Message);
        }
 public void Last_Dividend_Yield_Returns_Double_Result_When_Params_Are_Valid()
 {
     Assert.Equal(10, MathFormulaCalculations.DividendYield(10, 1));
     Assert.Equal(5, MathFormulaCalculations.DividendYield(10, 2));
     Assert.Equal(0, MathFormulaCalculations.DividendYield(0, -1));
 }
 public override double CalculateDividendYield(double price)
 {
     return(MathFormulaCalculations.FixedDividend(_fixedDividend, ParValue, price));
 }
Beispiel #17
0
 public double CalculatePeRatio(double price)
 {
     return(MathFormulaCalculations.PeRatio(price, CalculateDividendYield(price)));
 }