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