예제 #1
0
        public override double GetSchemeProfit(StockHistorySet testData, AbstractPredictor Predictor, int today, int daysToPredict)
        {
            double profit = 0D;

            // If prediction is higher, buy 1 unit. Otherwise, short 1 unit
            foreach (StockHistory stockHistory in testData.AllStockHistories)
            {
                double startV        = stockHistory.Closes[today];
                double predictedEndV = Predictor.PredictValue(stockHistory, today, daysToPredict);
                double actualEndV    = stockHistory.Closes[today + daysToPredict];

                if (Predictor is RandomPredictor)
                {
                    ;;
                }

                if (predictedEndV > startV)
                {
                    profit += (actualEndV - startV);
                }
                else
                {
                    profit += (startV - actualEndV);
                }
            }

            return(profit / testData.AllStockHistories.Count);
        }
예제 #2
0
        public override double GetSchemeProfit(StockHistorySet testData, AbstractPredictor Predictor, int today, int daysToPredict)
        {
            double profit = 0D;

            foreach (StockHistory stockHistory in testData.AllStockHistories)
            {
                double startV     = stockHistory.Closes[today];
                double actualEndV = stockHistory.Closes[today + daysToPredict];

                profit += (actualEndV - startV);
            }

            return(profit / testData.AllStockHistories.Count);
        }
예제 #3
0
        public override double GetSchemeProfit(StockHistorySet testData, AbstractPredictor Predictor, int today, int daysToPredict)
        {
            var stocksInOrder = testData.AllStockHistories.OrderByDescending(x => random.NextDouble()).ToArray();
            var tenRandom     = stocksInOrder.Take(10).ToArray();

            double profit = 0D;

            foreach (StockHistory stockHistory in tenRandom)
            {
                double startV     = stockHistory.Closes[today];
                double actualEndV = stockHistory.Closes[today + daysToPredict];

                profit += (actualEndV - startV);
            }

            return(profit / 10);
        }
예제 #4
0
 /// <summary>
 /// How good the Predictor is with this purchasing scheme. Specifically, if you invested $1 in it, how much would you get back.
 /// </summary>
 /// <returns>The profit of this scheme</returns>
 public abstract double GetSchemeProfit(StockHistorySet testData, AbstractPredictor Predictor, int today, int daysToPredict);