private static void Main() { IEnumerable <Match> matches = LoadMatches(@"Assets\results.csv"); IEnumerable <Coordinate> coordinates = matches .Select(m => new Coordinate { X = m.ResultImpliedProbabilityExclVigorish(), Y = (int)m.AbsoluteMargin }); RegressionResult regressionResult = LinearRegression(coordinates); Match match = GetMatchInputs(); double predictedValue = PredictMargin(regressionResult, match.PredictedWinnerImpliedProbabilityExclVigorish()); Console.WriteLine(); Console.WriteLine($"{match.PredictedWinnerName().FormatMatchResult()} is predicted with a margin of {Math.Round(predictedValue)}."); Console.WriteLine(); Console.WriteLine("Press any key to exit..."); Console.ReadKey(); }
/// <summary> /// Predicts a margin of victory /// </summary> /// <param name="regressionResult">Linear regression model</param> /// <param name="impliedProbabilityExclVigorish">Implied probability of victory excl. vigorish</param> /// <returns>Predicted margin of victory</returns> private static double PredictMargin(RegressionResult regressionResult, double impliedProbabilityExclVigorish) => (regressionResult.Slope * impliedProbabilityExclVigorish) + regressionResult.YIntercept;