Beispiel #1
0
        public void PredictQuarter(int QuarterNo, int GameNo)
        {
            Team HomeTeam = _getStatMethods.GetHomeTeam(GameNo);
            Team AwayTeam = _getStatMethods.GetAwayTeam(GameNo);
            QuarterPredictions Quarter = _simulator.QuarterSimulator(HomeTeam, AwayTeam, QuarterNo, GameNo);

            _statscraper.AddQuarterPrediction(Quarter);
        }
Beispiel #2
0
 public int GetLatestQuarterNoQuarterPredictions()
 {
     try
     {
         QuarterPredictions quarter = this._dbContext.QuarterPredictions.OrderByDescending(x => x.ID).First();
         return(quarter.QuarterNo);
     }
     catch (Exception)
     {
         return(0);
     }
 }
Beispiel #3
0
        public QuarterPredictions QuarterCalculator(QuarterModel Stats, QuarterModel HomeAverages, QuarterModel AwayAverages, QuarterModel HomeDeviation, QuarterModel AwayDeviation)
        {
            double             paceofplay            = PaceofPlayCalculator(Stats);
            double             home2PP               = (Stats.HomeFGM - Stats.Home3PM) / (Stats.HomeFGA - Stats.Home3PA);
            double             away2PP               = (Stats.AwayFGM - Stats.Away3PM) / (Stats.AwayFGA - Stats.Away3PA);
            double             home3PP               = Stats.Home3PM / Stats.Home3PA;
            double             away3PP               = Stats.Away3PM / Stats.Away3PA;
            double             homeFTP               = Stats.HomeFTM / Stats.HomeFTA;
            double             awayFTP               = Stats.AwayFTM / Stats.AwayFTA;
            int                Home3PA               = DeviationApllication(Stats.Home3PA, HomeDeviation.Home3PA, HomeAverages.Home3PA);
            int                HomeTurnovers         = DeviationApllication(Stats.HomeTurnovers, HomeDeviation.HomeTurnovers, HomeAverages.HomeTurnovers);
            int                HomeOffensiveRebounds = DeviationApllication(Stats.HomeOffensiveRebounds, HomeDeviation.HomeOffensiveRebounds, HomeAverages.HomeOffensiveRebounds);
            int                HomeFTA               = DeviationApllication(Stats.HomeFTA, HomeDeviation.HomeFTA, HomeAverages.HomeFTA);
            int                Home2PA               = Convert.ToInt16(Math.Round(paceofplay / 2 - HomeFTA / 2.5 - HomeTurnovers * 0.7 - Home3PA + HomeOffensiveRebounds));
            int                Home2PM               = DeviationApllication(Home2PA * home2PP, HomeDeviation.HomeFGM - HomeDeviation.Home3PM, HomeAverages.HomeFGM - HomeAverages.Home3PM);
            int                Away3PA               = DeviationApllication(Stats.Away3PA, AwayDeviation.Away3PA, AwayAverages.Away3PA);
            int                AwayTurnovers         = DeviationApllication(Stats.AwayTurnovers, AwayDeviation.AwayTurnovers, AwayAverages.AwayTurnovers);
            int                AwayOffensiveRebounds = DeviationApllication(Stats.AwayOffensiveRebounds, AwayDeviation.AwayOffensiveRebounds, AwayAverages.AwayOffensiveRebounds);
            int                AwayFTA               = DeviationApllication(Stats.AwayFTA, AwayDeviation.AwayFTA, AwayAverages.AwayFTA);
            int                Away2PA               = Convert.ToInt16(Math.Round(paceofplay / 2 - AwayFTA / 2.5 - AwayTurnovers * 0.7 - Away3PA + AwayOffensiveRebounds));
            int                Away2PM               = DeviationApllication(Away2PA * away2PP, AwayDeviation.AwayFGM - AwayDeviation.Away3PM, AwayAverages.AwayFGM - AwayAverages.Away3PM);
            QuarterPredictions quarter               = new QuarterPredictions
            {
                HomeFGA               = Home3PA + Home2PA,
                Home3PA               = Home3PA,
                Home3PM               = DeviationApllication(Home3PA * home3PP, HomeDeviation.Home3PA, HomeAverages.Home3PM),
                HomeFTA               = HomeFTA,
                HomeFTM               = DeviationApllication(HomeFTA * homeFTP, HomeDeviation.HomeFTM, HomeAverages.HomeFTM),
                HomeAssists           = DeviationApllication(Stats.HomeAssists, HomeDeviation.HomeAssists, HomeAverages.HomeAssists),
                HomeTurnovers         = HomeTurnovers,
                HomeOffensiveRebounds = HomeOffensiveRebounds,
                HomeDefensiveRebounds = DeviationApllication(Stats.HomeDefensiveRebounds, HomeDeviation.HomeDefensiveRebounds, HomeAverages.HomeDefensiveRebounds),
                HomeBlocks            = DeviationApllication(Stats.HomeBlocks, HomeDeviation.HomeBlocks, HomeAverages.HomeBlocks),
                HomeSteals            = DeviationApllication(Stats.HomeSteals, HomeDeviation.HomeSteals, HomeAverages.HomeSteals),
                AwayFGA               = Away3PA + Away2PA,
                Away3PA               = Away3PA,
                Away3PM               = DeviationApllication(Away3PA * away3PP, AwayDeviation.Away3PA, AwayAverages.Away3PM),
                AwayFTA               = AwayFTA,
                AwayFTM               = DeviationApllication(AwayFTA * awayFTP, AwayDeviation.AwayFTM, AwayAverages.AwayFTM),
                AwayAssists           = DeviationApllication(Stats.AwayAssists, AwayDeviation.AwayAssists, AwayAverages.AwayAssists),
                AwayTurnovers         = AwayTurnovers,
                AwayOffensiveRebounds = AwayOffensiveRebounds,
                AwayDefensiveRebounds = DeviationApllication(Stats.AwayDefensiveRebounds, AwayDeviation.AwayDefensiveRebounds, AwayAverages.AwayDefensiveRebounds),
                AwayBlocks            = DeviationApllication(Stats.AwayBlocks, AwayDeviation.AwayBlocks, AwayAverages.AwayBlocks),
                AwaySteals            = DeviationApllication(Stats.AwaySteals, AwayDeviation.AwaySteals, AwayAverages.AwaySteals)
            };

            quarter.HomeFGM    = quarter.Home3PM + Home2PM;
            quarter.HomePoints = quarter.Home3PM * 3 + Home2PM * 2 + quarter.HomeFTM;
            quarter.AwayFGM    = quarter.Away3PM + Away2PM;
            quarter.AwayPoints = quarter.Away3PM * 3 + Away2PM * 2 + quarter.AwayFTM;
            return(quarter);
        }
Beispiel #4
0
        public void CoefficientOptimizerQuarter(int No)
        {
            int    firstgames = 0;
            int    othergames = 0;
            double Coefficient1, Coefficient2, Coefficient3, Coefficient4, Coefficient5, Coefficient6, Coefficient7;
            CoEfficientOptimizer optimizer = new CoEfficientOptimizer();

            Coefficient1 = Math.Floor((double)(No / 729));
            Coefficient2 = Math.Floor((No - Coefficient1 * 729) / 81);
            Coefficient3 = Math.Floor((No - Coefficient1 * 729 - Coefficient2 * 81) / 9);
            Coefficient4 = Math.Floor(No - Coefficient1 * 729 - Coefficient2 * 81 - Coefficient3 * 9);
            Coefficient1++;
            Coefficient2++;
            Coefficient3++;
            Coefficient4++;
            double total = Coefficient1 + Coefficient2 + Coefficient3 + Coefficient4;

            Coefficient1 = total / Coefficient1;
            Coefficient2 = total / Coefficient2;
            Coefficient3 = total / Coefficient3;
            Coefficient4 = total / Coefficient4;

            Coefficient5 = Math.Floor((double)(No % 729 / 81));
            Coefficient6 = Math.Floor((No % 729 - Coefficient5 * 81) / 9);
            Coefficient7 = Math.Floor(No % 729 - Coefficient5 * 81 - Coefficient6 * 9);
            Coefficient5++;
            Coefficient6++;
            Coefficient7++;
            total                  = Coefficient5 + Coefficient6 + Coefficient7;
            Coefficient5           = total / Coefficient5;
            Coefficient6           = total / Coefficient6;
            Coefficient7           = total / Coefficient7;
            optimizer.Coefficient1 = Coefficient1;
            optimizer.Coefficient2 = Coefficient2;
            optimizer.Coefficient3 = Coefficient3;
            optimizer.Coefficient4 = Coefficient4;
            optimizer.Coefficient5 = Coefficient5;
            optimizer.Coefficient6 = Coefficient6;
            optimizer.Coefficient7 = Coefficient7;
            for (int i = 750; i < 971; i++)
            {
                if (i == 707)
                {
                    continue;
                }
                Team homeTeam = _getStatMethods.GetHomeTeam1920(i);
                Team awayTeam = _getStatMethods.GetAwayTeam1920(i);
                for (int j = 1; j < 5; j++)
                {
                    QuarterPredictions      prediction = _simulator.QuarterSimulator1920(homeTeam, awayTeam, j, i, Coefficient1, Coefficient2, Coefficient3, Coefficient4, Coefficient5, Coefficient6, Coefficient7);
                    FullSeasonQuarters19_20 game       = _getStatMethods.GetFullSeasonQuarters1920(i, j);
                    if (game.HomePoints == prediction.HomePoints && game.AwayPoints == prediction.AwayPoints)
                    {
                        if (prediction.FirstGame)
                        {
                            optimizer.TotalHomePoints++;
                        }
                        optimizer.TotalAwayPoints++;
                    }
                    if (prediction.FirstGame)
                    {
                        firstgames++;
                        optimizer.FirstHomePoints += Math.Abs(game.HomePoints - prediction.HomePoints) / game.HomePoints * 100;
                        if (game.Home3PA == 0)
                        {
                            optimizer.FirstHome3PA += 100;
                        }
                        else
                        {
                            optimizer.FirstHome3PA += Math.Abs(game.Home3PA - prediction.Home3PA) / game.Home3PA * 100;
                        }
                        if (game.Home3PM == 0)
                        {
                            optimizer.Home3PM += 100;
                        }
                        else
                        {
                            optimizer.Home3PM += Math.Abs(game.Home3PM - prediction.Home3PM) / game.Home3PM * 100;
                        }
                        optimizer.FirstHomeFGA += Math.Abs(game.HomeFGA - prediction.HomeFGA) / game.HomeFGA * 100;
                        optimizer.FirstHomeFGM += Math.Abs(game.HomeFGM - prediction.HomeFGM) / game.HomeFGM * 100;
                        if (game.HomeFTA == 0)
                        {
                            optimizer.FirstHomeFTA += 100;
                        }
                        else
                        {
                            optimizer.FirstHomeFTA += Math.Abs(game.HomeFTA - prediction.HomeFTA) / game.HomeFTA * 100;
                        }
                        if (game.HomeFTM == 0)
                        {
                            optimizer.FirstHomeFTM += 100;
                        }
                        else
                        {
                            optimizer.FirstHomeFTM += Math.Abs(game.HomeFTM - prediction.HomeFTM) / game.HomeFTM * 100;
                        }
                        optimizer.FirstAwayPoints += Math.Abs(game.AwayPoints - prediction.AwayPoints) / game.AwayPoints * 100;
                        if (game.Away3PA == 0)
                        {
                            optimizer.FirstAway3PA += 100;
                        }
                        else
                        {
                            optimizer.FirstAway3PA += Math.Abs(game.Away3PA - prediction.Away3PA) / game.Away3PA * 100;
                        }
                        if (game.Away3PM == 0)
                        {
                            optimizer.FirstAway3PM += 100;
                        }
                        else
                        {
                            optimizer.FirstAway3PM += Math.Abs(game.Away3PM - prediction.Away3PM) / game.Away3PM * 100;
                        }
                        optimizer.FirstAwayFGA += Math.Abs(game.AwayFGA - prediction.AwayFGA) / game.AwayFGA * 100;
                        optimizer.FirstAwayFGM += Math.Abs(game.AwayFGM - prediction.AwayFGM) / game.AwayFGM * 100;
                        if (game.AwayFTA == 0)
                        {
                            optimizer.FirstAwayFTA += 100;
                        }
                        else
                        {
                            optimizer.FirstAwayFTA += Math.Abs(game.AwayFTA - prediction.AwayFTA) / game.AwayFTA * 100;
                        }
                        if (game.AwayFTM == 0)
                        {
                            optimizer.FirstAwayFTM += 100;
                        }
                        else
                        {
                            optimizer.AwayFTM += Math.Abs(game.AwayFTM - prediction.AwayFTM) / game.AwayFTM * 100;
                        }
                        optimizer.FirstTotalHomePoints += Convert.ToInt16(prediction.HomePoints);
                        optimizer.FirstTotalHome3PA    += Convert.ToInt16(prediction.Home3PA);
                        optimizer.FirstTotalHome3PM    += Convert.ToInt16(prediction.Home3PM);
                        optimizer.FirstTotalHomeFGA    += Convert.ToInt16(prediction.HomeFGA);
                        optimizer.FirstTotalHomeFGM    += Convert.ToInt16(prediction.HomeFGM);
                        optimizer.FirstTotalHomeFTA    += Convert.ToInt16(prediction.HomeFTA);
                        optimizer.FirstTotalHomeFTM    += Convert.ToInt16(prediction.HomeFTM);
                        optimizer.FirstTotalAwayPoints += Convert.ToInt16(prediction.AwayPoints);
                        optimizer.FirstTotalAway3PA    += Convert.ToInt16(prediction.Away3PA);
                        optimizer.FirstTotalAway3PM    += Convert.ToInt16(prediction.Away3PM);
                        optimizer.FirstTotalAwayFGA    += Convert.ToInt16(prediction.AwayFGA);
                        optimizer.FirstTotalAwayFGM    += Convert.ToInt16(prediction.AwayFGM);
                        optimizer.FirstTotalAwayFTA    += Convert.ToInt16(prediction.AwayFTA);
                        optimizer.FirstTotalAwayFTM    += Convert.ToInt16(prediction.AwayFTM);
                    }
                    else
                    {
                        othergames++;
                        optimizer.HomePoints += Math.Abs(game.HomePoints - prediction.HomePoints) / game.HomePoints * 100;
                        if (game.Home3PA == 0)
                        {
                            optimizer.Home3PA += 100;
                        }
                        else
                        {
                            optimizer.Home3PA += Math.Abs(game.Home3PA - prediction.Home3PA) / game.Home3PA * 100;
                        }
                        if (game.Home3PM == 0)
                        {
                            optimizer.Home3PM += 100;
                        }
                        else
                        {
                            optimizer.Home3PM += Math.Abs(game.Home3PM - prediction.Home3PM) / game.Home3PM * 100;
                        }
                        optimizer.HomeFGA += Math.Abs(game.HomeFGA - prediction.HomeFGA) / game.HomeFGA * 100;
                        optimizer.HomeFGM += Math.Abs(game.HomeFGM - prediction.HomeFGM) / game.HomeFGM * 100;
                        if (game.HomeFTA == 0)
                        {
                            optimizer.HomeFTA += 100;
                        }
                        else
                        {
                            optimizer.HomeFTA += Math.Abs(game.HomeFTA - prediction.HomeFTA) / game.HomeFTA * 100;
                        }
                        if (game.HomeFTM == 0)
                        {
                            optimizer.HomeFTM += 100;
                        }
                        else
                        {
                            optimizer.HomeFTM += Math.Abs(game.HomeFTM - prediction.HomeFTM) / game.HomeFTM * 100;
                        }
                        optimizer.AwayPoints += Math.Abs(game.AwayPoints - prediction.AwayPoints) / game.AwayPoints * 100;
                        if (game.Away3PA == 0)
                        {
                            optimizer.Away3PA += 100;
                        }
                        else
                        {
                            optimizer.Away3PA += Math.Abs(game.Away3PA - prediction.Away3PA) / game.Away3PA * 100;
                        }
                        if (game.Away3PM == 0)
                        {
                            optimizer.Away3PM += 100;
                        }
                        else
                        {
                            optimizer.Away3PM += Math.Abs(game.Away3PM - prediction.Away3PM) / game.Away3PM * 100;
                        }
                        optimizer.AwayFGA += Math.Abs(game.AwayFGA - prediction.AwayFGA) / game.AwayFGA * 100;
                        optimizer.AwayFGM += Math.Abs(game.AwayFGM - prediction.AwayFGM) / game.AwayFGM * 100;
                        if (game.AwayFTA == 0)
                        {
                            optimizer.AwayFTA += 100;
                        }
                        else
                        {
                            optimizer.AwayFTA += Math.Abs(game.AwayFTA - prediction.AwayFTA) / game.AwayFTA * 100;
                        }
                        if (game.AwayFTM == 0)
                        {
                            optimizer.AwayFTM += 100;
                        }
                        else
                        {
                            optimizer.AwayFTM += Math.Abs(game.AwayFTM - prediction.AwayFTM) / game.AwayFTM * 100;
                        }
                        optimizer.FirstTotalHomePoints += Convert.ToInt16(prediction.HomePoints);
                        optimizer.FirstTotalHome3PA    += Convert.ToInt16(prediction.Home3PA);
                        optimizer.FirstTotalHome3PM    += Convert.ToInt16(prediction.Home3PM);
                        optimizer.FirstTotalHomeFGA    += Convert.ToInt16(prediction.HomeFGA);
                        optimizer.FirstTotalHomeFGM    += Convert.ToInt16(prediction.HomeFGM);
                        optimizer.FirstTotalHomeFTA    += Convert.ToInt16(prediction.HomeFTA);
                        optimizer.FirstTotalHomeFTM    += Convert.ToInt16(prediction.HomeFTM);
                        optimizer.FirstTotalAwayPoints += Convert.ToInt16(prediction.AwayPoints);
                        optimizer.FirstTotalAway3PA    += Convert.ToInt16(prediction.Away3PA);
                        optimizer.FirstTotalAway3PM    += Convert.ToInt16(prediction.Away3PM);
                        optimizer.FirstTotalAwayFGA    += Convert.ToInt16(prediction.AwayFGA);
                        optimizer.FirstTotalAwayFGM    += Convert.ToInt16(prediction.AwayFGM);
                        optimizer.FirstTotalAwayFTA    += Convert.ToInt16(prediction.AwayFTA);
                        optimizer.FirstTotalAwayFTM    += Convert.ToInt16(prediction.AwayFTM);
                    }
                }
            }
            optimizer.FirstHomePoints /= firstgames;
            optimizer.FirstHome3PA    /= firstgames;
            optimizer.FirstHome3PM    /= firstgames;
            optimizer.FirstHomeFGA    /= firstgames;
            optimizer.FirstHomeFGM    /= firstgames;
            optimizer.FirstHomeFTA    /= firstgames;
            optimizer.FirstHomeFTM    /= firstgames;
            optimizer.FirstAwayPoints /= firstgames;
            optimizer.FirstAway3PA    /= firstgames;
            optimizer.FirstAway3PM    /= firstgames;
            optimizer.FirstAwayFGA    /= firstgames;
            optimizer.FirstAwayFGM    /= firstgames;
            optimizer.FirstAwayFTA    /= firstgames;
            optimizer.FirstAwayFTM    /= firstgames;
            optimizer.HomePoints      /= othergames;
            optimizer.Home3PA         /= othergames;
            optimizer.Home3PM         /= othergames;
            optimizer.HomeFGA         /= othergames;
            optimizer.HomeFGM         /= othergames;
            optimizer.HomeFTA         /= othergames;
            optimizer.HomeFTM         /= othergames;
            optimizer.AwayPoints      /= othergames;
            optimizer.Away3PA         /= othergames;
            optimizer.Away3PM         /= othergames;
            optimizer.AwayFGA         /= othergames;
            optimizer.AwayFGM         /= othergames;
            optimizer.AwayFTA         /= othergames;
            optimizer.AwayFTM         /= othergames;
            this._dbContext.CoEfficientOptimizer.Add(optimizer);
            _unitOfWork.Commit();
        }
Beispiel #5
0
        public QuarterPredictions QuarterSimulator(Team HomeTeam, Team AwayTeam, int QuarterNo, int GameNo)
        {
            //FullSeason Lists
            List <GameTime>           homeGT = _getStatMethods.GetFullSeasonGameTimePlayed(HomeTeam);
            List <GameTime>           awayGT = _getStatMethods.GetFullSeasonGameTimePlayed(AwayTeam);
            List <FullSeasonQuarters> homeFullSeasonQuarters = new List <FullSeasonQuarters>();
            List <FullSeasonQuarters> awayFullSeasonQuarters = new List <FullSeasonQuarters>();

            foreach (var game in homeGT)
            {
                try
                {
                    homeFullSeasonQuarters.Add(_getStatMethods.GetFullSeasonQuarters(game.GameNo, QuarterNo));
                }
                catch (Exception)
                {
                }
            }

            foreach (var game in awayGT)
            {
                try
                {
                    awayFullSeasonQuarters.Add(_getStatMethods.GetFullSeasonQuarters(game.GameNo, QuarterNo));
                }
                catch (Exception)
                {
                }
            }

            //Standard Deviations
            QuarterModel TotalDeviation = new QuarterModel();
            QuarterModel HomeDeviation  = _statCalculator.DeviationCalculator(homeFullSeasonQuarters, HomeTeam);

            _statCalculator.QuarterModelAddition(TotalDeviation, HomeDeviation);
            QuarterModel AwayDeviation = _statCalculator.DeviationCalculator(awayFullSeasonQuarters, AwayTeam);

            _statCalculator.QuarterModelSwitch(AwayDeviation);
            _statCalculator.QuarterModelAddition(TotalDeviation, AwayDeviation);
            //Season Averages with Coefficients

            var          firstGame         = true;
            QuarterModel HomeQuarters      = new QuarterModel();
            QuarterModel AwayQuarters      = new QuarterModel();
            List <Team>  homePlayedAgainst = new List <Team>();

            foreach (var game in homeFullSeasonQuarters)
            {
                if (HomeTeam == game.HomeTeam && !homePlayedAgainst.Contains(game.AwayTeam))
                {
                    homePlayedAgainst.Add(game.AwayTeam);
                }
                else if (HomeTeam == game.AwayTeam && !homePlayedAgainst.Contains(game.HomeTeam))
                {
                    homePlayedAgainst.Add(game.HomeTeam);
                }
            }
            List <Team> awayPlayedAgainst = new List <Team>();

            foreach (var game in awayFullSeasonQuarters)
            {
                if (AwayTeam == game.HomeTeam && !awayPlayedAgainst.Contains(game.AwayTeam))
                {
                    awayPlayedAgainst.Add(game.AwayTeam);
                }
                else if (AwayTeam == game.AwayTeam && !awayPlayedAgainst.Contains(game.HomeTeam))
                {
                    awayPlayedAgainst.Add(game.HomeTeam);
                }
            }
            List <Team> commonTeams = new List <Team>();

            foreach (var team1 in homePlayedAgainst)
            {
                foreach (var team2 in awayPlayedAgainst)
                {
                    if (team1 == team2)
                    {
                        commonTeams.Add(team1);
                    }
                }
            }
            List <FullSeasonQuarters> homePlayedCommon = new List <FullSeasonQuarters>();
            List <FullSeasonQuarters> awayPlayedCommon = new List <FullSeasonQuarters>();

            foreach (var team in commonTeams)
            {
                homePlayedCommon.Add(homeFullSeasonQuarters.FirstOrDefault(x => x.HomeTeam == team || x.AwayTeam == team));
                awayPlayedCommon.Add(awayFullSeasonQuarters.FirstOrDefault(x => x.HomeTeam == team || x.AwayTeam == team));
            }
            if (homeFullSeasonQuarters.FirstOrDefault(x => (x.HomeTeam == HomeTeam && x.AwayTeam == AwayTeam) ||
                                                      (x.HomeTeam == AwayTeam && x.AwayTeam == HomeTeam)) != null)
            {
                firstGame = false;
                QuarterModel homelast5gamesQuarters = _statCalculator.AverageCalculator(homeFullSeasonQuarters.Take(5).ToList(), HomeTeam);
                _statCalculator.QuarterModelDivision(homelast5gamesQuarters, 3);
                QuarterModel homeathomegamesQuarters = _statCalculator.AverageCalculator(homeFullSeasonQuarters.Where(x => x.HomeTeam == HomeTeam).ToList(), HomeTeam);
                _statCalculator.QuarterModelDivision(homeathomegamesQuarters, 3);
                QuarterModel homecommon = _statCalculator.AverageCalculator(homePlayedCommon, HomeTeam);
                _statCalculator.QuarterModelDivision(homecommon, 4);
                QuarterModel awaylast5gamesQuarters = _statCalculator.AverageCalculator(awayFullSeasonQuarters.Take(5).ToList(), AwayTeam);
                _statCalculator.QuarterModelDivision(awaylast5gamesQuarters, 3);
                QuarterModel awayatawaygamesQuarters = _statCalculator.AverageCalculator(awayFullSeasonQuarters.Where(x => x.AwayTeam == AwayTeam).ToList(), AwayTeam);
                _statCalculator.QuarterModelDivision(awayatawaygamesQuarters, 3);
                QuarterModel awaycommon = _statCalculator.AverageCalculator(awayPlayedCommon, AwayTeam);
                _statCalculator.QuarterModelDivision(awaycommon, 4);
                QuarterModel seasonmatchupsQuarters = _statCalculator.AverageCalculator(homeFullSeasonQuarters.Where(x => (x.HomeTeam == HomeTeam && x.AwayTeam == AwayTeam) || (x.HomeTeam == AwayTeam && x.AwayTeam == HomeTeam)).ToList(), HomeTeam);
                _statCalculator.QuarterModelDivision(seasonmatchupsQuarters, 12);

                _statCalculator.QuarterModelAddition(HomeQuarters, homelast5gamesQuarters);
                _statCalculator.QuarterModelAddition(HomeQuarters, homeathomegamesQuarters);
                _statCalculator.QuarterModelAddition(HomeQuarters, homecommon);
                _statCalculator.QuarterModelAddition(HomeQuarters, seasonmatchupsQuarters);
                _statCalculator.QuarterModelAddition(AwayQuarters, awaylast5gamesQuarters);
                _statCalculator.QuarterModelAddition(AwayQuarters, awayatawaygamesQuarters);
                _statCalculator.QuarterModelAddition(AwayQuarters, awaycommon);
                _statCalculator.QuarterModelAdditionSwitch(AwayQuarters, seasonmatchupsQuarters);
                _statCalculator.QuarterModelSwitch(AwayQuarters);
            }
            else
            {
                QuarterModel homelast5gamesQuarters = _statCalculator.AverageCalculator(homeFullSeasonQuarters.Take(5).ToList(), HomeTeam);
                _statCalculator.QuarterModelDivision(homelast5gamesQuarters, 3.166);
                QuarterModel homeathomegamesQuarters = _statCalculator.AverageCalculator(homeFullSeasonQuarters.Where(x => x.HomeTeam == HomeTeam).ToList(), HomeTeam);
                _statCalculator.QuarterModelDivision(homeathomegamesQuarters, 2.375);
                QuarterModel homecommon = _statCalculator.AverageCalculator(homePlayedCommon, HomeTeam);
                _statCalculator.QuarterModelDivision(homecommon, 3.8);
                QuarterModel awaylast5gamesQuarters = _statCalculator.AverageCalculator(awayFullSeasonQuarters.Take(5).ToList(), AwayTeam);
                _statCalculator.QuarterModelDivision(awaylast5gamesQuarters, 3.166);
                QuarterModel awayatawaygamesQuarters = _statCalculator.AverageCalculator(awayFullSeasonQuarters.Where(x => x.AwayTeam == AwayTeam).ToList(), AwayTeam);
                _statCalculator.QuarterModelDivision(awayatawaygamesQuarters, 2.375);
                QuarterModel awaycommon = _statCalculator.AverageCalculator(awayPlayedCommon, AwayTeam);
                _statCalculator.QuarterModelDivision(awaycommon, 3.8);

                _statCalculator.QuarterModelAddition(HomeQuarters, homelast5gamesQuarters);
                _statCalculator.QuarterModelAddition(HomeQuarters, homeathomegamesQuarters);
                _statCalculator.QuarterModelAddition(HomeQuarters, homecommon);
                _statCalculator.QuarterModelAddition(AwayQuarters, awaylast5gamesQuarters);
                _statCalculator.QuarterModelAddition(AwayQuarters, awayatawaygamesQuarters);
                _statCalculator.QuarterModelAddition(AwayQuarters, awaycommon);
                _statCalculator.QuarterModelSwitch(AwayQuarters);
            }
            _statCalculator.QuarterModelMultiplication(HomeQuarters, AwayDeviation);
            _statCalculator.QuarterModelMultiplication(AwayQuarters, HomeDeviation);
            _statCalculator.QuarterModelAddition(HomeQuarters, AwayQuarters);
            _statCalculator.QuarterModelDivision(HomeQuarters, TotalDeviation);
            QuarterModel homeSeasonAverages = _statCalculator.AverageCalculator(homeFullSeasonQuarters, HomeTeam);
            QuarterModel awaySeasonAverages = _statCalculator.AverageCalculator(awayFullSeasonQuarters, AwayTeam);

            _statCalculator.QuarterModelSwitch(awaySeasonAverages);
            QuarterPredictions Quarter = QuarterCalculator(HomeQuarters, homeSeasonAverages, awaySeasonAverages, HomeDeviation, AwayDeviation);

            Quarter.HomeTeam  = HomeTeam;
            Quarter.AwayTeam  = AwayTeam;
            Quarter.QuarterNo = QuarterNo;
            Quarter.GameNo    = GameNo;
            Quarter.FirstGame = firstGame;
            return(Quarter);
        }