Exemple #1
0
        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();
        }
Exemple #2
0
 /// <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;