private double CalculatePlayerFixturePredictedScore(FutureFixture futureFixture, PlayerForm playerForm, IList<Player> allPlayers)
        {
            var oppositionStrength = _teamStrengthCalculator.CalculateTeamStrength(futureFixture.OppositionClubCode, allPlayers);

            var formRelativeToOppositionStrength = playerForm.NormalisedPointsPerGame / oppositionStrength.TeamStrengthMultiplier;

            var locationRatio = futureFixture.Home
                                    ? _predictorParameters.HomeAdvantageMultiplier
                                    : 1 / _predictorParameters.HomeAdvantageMultiplier;

            return formRelativeToOppositionStrength * locationRatio;
        }
 private static void LogPlayerForm(Player player, PlayerForm playerForm, ILogger logger)
 {
     logger.Log(Tag.Prediction,
                    string.Format("{0} {1} - Previous Season: {2} mins, {3} pts",
                    playerForm.NormalisedPointsPerGame.ToFormatted(), player.Name, playerForm.PreviousSeasonMinutesPlayed, playerForm.PreviousSeasonTotalPointsScored));
 }
        private PlayerForm CreatePlayerFormFromPastSeason(Season season)
        {
            var playerForm = new PlayerForm();

            if (season != null && season.MinutesPlayed > 0)
            {
                playerForm.PreviousSeasonTotalPointsScored = season.TotalPointsScored;
                playerForm.PreviousSeasonMinutesPlayed = season.MinutesPlayed;
                var pointsPerMinute = season.TotalPointsScored / (double)season.MinutesPlayed;
                playerForm.NormalisedPointsPerGame = pointsPerMinute * 90;
            }

            return playerForm;
        }