public double GetAveAwayScoreLast5AwayGames(Team?team, DateTime?date, PredictionAlgoContext context) { if (team == null || date == null) { return(0); } return(AllFixturesByAwayTeam[team].Where(x => x.FixtureDate <= date) .Take(5) .Select(x => x.AwayScore) .Average()); }
public double GetPredictedDelta(Team?homeTeam, Team?awayTeam, DateTime?date, PredictionAlgoContext context) { var aveHomeScoreLast5HomeResults = GetAveHomeScoreLast5HomeGames(homeTeam, date, context); var aveAwayScoreLast5AwayResults = GetAveAwayScoreLast5AwayGames(awayTeam, date, context); var deltaLast5HomeResults = GetAveDeltaLast5HomeGames(homeTeam, date, context); var deltaLast5AwayResults = GetAveDeltaLast5AwayGames(awayTeam, date, context); var sameFixturePreviousResult = GetSameFixturePreviousResult(homeTeam, awayTeam, date, context); return((aveHomeScoreLast5HomeResults + deltaLast5HomeResults - aveAwayScoreLast5AwayResults + deltaLast5AwayResults + sameFixturePreviousResult) / .5); }
public IEnumerable <Fixture> GetFixtures(PredictionAlgoContext context, DateTime seasonStartDate, DateTime seasonEndDate) { var reqFixtures = context.Fixtures.Where(x => x.FixtureDate > seasonStartDate) .Where(x => x.FixtureDate < seasonEndDate) .OrderBy(x => x.FixtureDate); foreach (var fixture in reqFixtures) { fixture.PredictionOutcome = fixture.PredictedResult == fixture.Result ? PredictionOutcome.Success : PredictionOutcome.Fail; } return(reqFixtures); }
public void Setup() { var testDataPath = Assembly.GetCallingAssembly().CodeBase; testDataPath = testDataPath.Replace(".Tests/bin/Debug/nunit.framework.DLL", "\\bin\\TestData\\2016.10.25_HCapCoupon - Paddy Power.html"); _uriHCapCouponFake = new Uri(testDataPath).LocalPath; _fakeWebscraper = new WebScraper(); _matchBettingDataList = _fakeWebscraper.GetMatchBettingData(_fakeWebscraper.GetSpreadsAndOdds(_uriHCapCouponFake)); _predictedData = new PredictionComparisonData(); _predictionComparisons = _predictedData.GetPredictionComparisons(_matchBettingDataList); _context = new PredictionAlgoContext(); _fixtureData = new FixtureData(); }
public IEnumerable <FixtureAndBettingData> GetFixtureBettingDatas(PredictionAlgoContext context) { var fixturesWithBettingData = new List <FixtureAndBettingData>(); var fixtures = context.Fixtures.Where(x => x.FixtureDate > new DateTime(2016, 07, 30)); var bettingData = context.MatchBettingDatas; foreach (var fixture in fixtures) { foreach (var betData in bettingData) { if (fixture.FixtureReference == betData.FixtureReference) { fixturesWithBettingData.Add(new FixtureAndBettingData(fixture, betData)); } } } return(fixturesWithBettingData); }
private static IDictionary <Team?, ICollection <Fixture> > GetHomeTeamResults(PredictionAlgoContext context) { var teamResults = new Dictionary <Team?, ICollection <Fixture> >(context.Fixtures.Count() / Teams.Pro12Teams.Count()); foreach (var fixture in context.Fixtures) { if (fixture.HomeTeam != null && teamResults.ContainsKey(fixture.HomeTeam)) { teamResults[fixture.HomeTeam].Add(fixture); } else { if (fixture.HomeTeam != null) { teamResults.Add(fixture.HomeTeam, new List <Fixture> { fixture }); } } } return(teamResults); }
public ResultStatistics GetPredictedResult(Team?homeTeam, Team?awayTeam, DateTime?date, PredictionAlgoContext context) { var predictedDelta = GetPredictedDelta(homeTeam, awayTeam, date, context); return(new ResultStatistics { HomeTeam = homeTeam, AwayTeam = awayTeam, Date = date, AveHomeScoreLast5HomeGames = GetAveHomeScoreLast5HomeGames(homeTeam, date, context), AveDeltaLast5HomeGames = GetAveDeltaLast5HomeGames(homeTeam, date, context), AveAwayScoreLast5AwayGames = GetAveAwayScoreLast5AwayGames(awayTeam, date, context), AveDeltaLast5AwayGames = GetAveDeltaLast5AwayGames(awayTeam, date, context), SameFixturePreviousResult = GetSameFixturePreviousResult(homeTeam, awayTeam, date, context), PredictedScoreDelta = predictedDelta }); }
public double GetSameFixturePreviousResult(Team?homeTeam, Team?awayTeam, DateTime?date, PredictionAlgoContext context) { if (homeTeam == null || awayTeam == null || date == null) { return(0); } var lastHomeResultBtwnTeams = AllFixturesByHomeTeam[homeTeam].Where(x => (x.AwayTeam == awayTeam && x.FixtureDate <= date)) .Take(1) .Select(x => x.ScoreDelta); return(lastHomeResultBtwnTeams.ElementAt(0)); }
public ICollection <Fixture> GetFixturesAndResults(string url) { var fixturesResultList = new List <Fixture>(1030); var web = new HtmlWeb(); var page = web.Load(url); var nodes = page.DocumentNode.SelectNodes(FixtureXpath); var innerTexts = nodes.Select(x => x.InnerText).ToList(); var fixtureDataList = innerTexts.SelectMany(s => s.Split('\n', '\t')) .Where(s => !string.IsNullOrWhiteSpace(s)).ToList(); var predictedResult = new PredictedResult(); var context = new PredictionAlgoContext(); for (var v = 0; v < fixtureDataList.Count; v++) { if (!fixtureDataList[v].Contains(Round)) { continue; } if (fixtureDataList[v + 1].Contains(Round)) { continue; } Team homeTeam, awayTeam; DateTime fixtureDate; int homeScore, awayScore; if (CheckDayOfWeek(fixtureDataList[v + 1])) { fixtureDate = GetPro12Date(fixtureDataList[v + 2]); if (fixtureDate > DateTime.Now) { continue; } homeTeam = (Team)Enum.Parse(typeof(Team), StandardiseTeamName(fixtureDataList[v + 4])); awayTeam = (Team)Enum.Parse(typeof(Team), StandardiseTeamName(fixtureDataList[v + 6])); homeScore = GetScores(fixtureDataList[v + 5], 0); awayScore = GetScores(fixtureDataList[v + 5], 1); } else { fixtureDate = GetPro12Date(fixtureDataList[v + 1]); if (fixtureDate > DateTime.Now) { continue; } if (fixtureDataList[v + 2].Length <= 5) { homeTeam = (Team)Enum.Parse(typeof(Team), StandardiseTeamName(fixtureDataList[v + 3])); awayTeam = (Team)Enum.Parse(typeof(Team), StandardiseTeamName(fixtureDataList[v + 5])); homeScore = GetScores(fixtureDataList[v + 4], 0); awayScore = GetScores(fixtureDataList[v + 4], 1); } else { homeTeam = (Team)Enum.Parse(typeof(Team), StandardiseTeamName(fixtureDataList[v + 2])); awayTeam = (Team)Enum.Parse(typeof(Team), StandardiseTeamName(fixtureDataList[v + 4])); homeScore = GetScores(fixtureDataList[v + 3], 0); awayScore = GetScores(fixtureDataList[v + 3], 1); } } var predictedDelta = predictedResult.GetPredictedResult(homeTeam, awayTeam, fixtureDate, context); var predictedFixtureResult = predictedDelta.PredictedScoreDelta < 0 ? Result.HomeLoss : Result.HomeWin; var scoreDelta = homeScore - awayScore; var actualResult = scoreDelta < 0 ? Result.HomeLoss : scoreDelta == 0 ? Result.Draw : Result.HomeWin; var predictionOutcome = actualResult == predictedFixtureResult ? PredictionOutcome.Success : PredictionOutcome.Fail; var fixture = new Fixture { FixtureDate = fixtureDate, HomeTeam = homeTeam, HomeScore = homeScore, AwayTeam = awayTeam, AwayScore = awayScore, ScoreDelta = scoreDelta, PredictedDelta = predictedDelta.PredictedScoreDelta, PredictedResult = predictedFixtureResult, PredictionOutcome = predictionOutcome, Result = actualResult, Competition = Competition.Pro12, FixtureReference = GetFixtureReference(homeTeam, fixtureDate) }; fixturesResultList.Add(fixture); } return(fixturesResultList); }
public IEnumerable <Fixture> GetSeasonResults(PredictionAlgoContext context) { return(new FixturesForSeason().GetFixtures(context, _seasonStartDate, _seasonEndDate)); }