The world’s leading publication for data science, AI, and ML professionals.

EPL Fantasy GW6 Recap and GW7 Algo Picks

Our Moneyball approach to the Fantasy EPL (team_id: 2122122)

Top Team for GW6
Top Team for GW6

If this is the first time you land on one of our Fantasy EPL Blogs, you might want to check out some of our original EPL blogs in my Medium archives to get familiar with how this project started and the improvements we’ve made over time.

Top 100 FPL Team Stats for GW6

For the first time in a while the top 100 players in the world didn’t have a crazy aggregate score and only averaged around 65pts, with some of the top players scoring in the 40–50pts range, which makes us feel a little better about ourselves since we didn’t do that well this week too.

Most Selected Goalkeepers by Top100

Most Selected Defenders by Top100

Most Selected Midfielders by Top100

Most Selected Strikers by Top100

We used this data to create the team below which is a blend of the most selected players by Top100:

Most selected Team Formation by Top 100

These stats make sense as most of the top players are trying to capitalize on offensive midfielders and strikers with the 3–4–3 formation.

GW6 Team Performance Recap and Overall Stats

We had all of our teams score above average, but barely. One of our teams left 11pts on the bench and the other had a -2 from Digne, plus Salah did not perform as expected. Also, the early Allison recovery left us with no GK for two of our teams, so not that many positives for us. I guess having Vardy, Kane captain, Son and Zaha on one of our teams was a nice combination that made this GW decent at least for one of our teams.

We also participate in the FanTeam version of the FPL, where we fortunately had much better luck and most of our players banked a good amount of points

Useful Stats to Inform our GW7 Picks

Since we added a lot of new stats to our Algorithm this year, this Blog will evolve to have more stats and graphs and less text over time. Let’s start with the Fixture Difficulty Rating (FDR) for the next three game-weeks below:

Looks like LIV, SHU, LEI, LEE, and NEW have some tough games coming up, so our Algorithm might not be picking players from those teams. CHE, TOT, CRY, WHU, WBA, and EVE seem to have more easy schedules over the next three weeks.

Bookie Odds

We will try to stack up on players from teams that have a higher than 50 % chance of winning such as TOT, LIV, MCI, CHE, WOL, EVE and MUN . We should try not to have too many defensive players from WHU, BHA, CRY, NEW, and BUR.

Teams with higher probability to draw, especially when the game is combined with high odds for Under 2.5, might be good for selecting defensive players because if the game ends 0:0, that will result in lots of bonus points. Combined with the Under/Over Graph below, we can identify the following games with higher probability of at least one clean sheet – FUL-WBA and WOL-CRY.

Inversely, we might want to have more attacking players from games with high odds for Over 2.5 such as LIV-WHU, SHU-MCI, BUR-CHE, AVL-SOU, TOT-BHA and MUN-ARS.

Referee Stats

From the stats below it appears that there is a higher chance for penalty given in games: SHU-MCI, BUR-CHE, LEE-LEI, and LIV-WHU, so we recommend having penalty takers for some of these teams. Looks, like the games FUL-WBA, TOT-BHA and SHU-MCI have refs that like to give a lot of cards, so expect to lose some points there from yellow cards, but hopefully no red…

Team Penalty Stats

On top of the referee probability to give penalty, let’s also look at what teams have been given the most penalties over the last 5 seasons, to see where we get the highest combined probabilities. From the graph below we can conclude that LEI, CRY, MCI, MUN, TOT and LIV are most likely to get a penalty.

Projected Starting Lineups

Before we run our final team selector, let’s take into account the predicted starting 11 for each team.

Pay attention to the doubtful player names on the right and also the the most recent injury news updates below:

Team Cumulative ROI Stats

This table can reveal which teams are considered good investments overall, and which teams have a lot of overpriced underperforming players. Teams are sorted by avg_pts_per_player, so to no surprise AVL, EVE, SOU, LEE, WOL and WHU are the teams at the top of the list, since they have exceeded their expected performance given their player prices. Some of the more overpriced, underperforming players can be found in FUL, BUR, SHU, MUN, MCI, and NEW, so it would be a good idea to be very selective with which players you pick from those teams.

Defensive vs. Offensive Team Stats

So far, having offensive players from TOT, LIV, EVE, LEI, CHE, AVL, and LEE seems to be a good investment.

While having too many offensive players from MCI, CRY, WOL, WBA< FUL< BUR, and SHU seems to be a poor investment, unless you have the one player who scores 70% of the goals such as Jimenez at WOL or Zaha at CRY.

Having defensive players from AVL, ARS, WOL, WHU, MCI, TOT, and LEI seems to be a good investment.

While having defensive players from FUL, WBA, LIV, BHA, MUN, and NEW, seems to be a poor investment.

Captain Recommender

Our approach takes the predicted points for the upcoming game, probability that the player takes penalties, corners, or free kicks, a coefficient for the player’s aerial threat from the past 4 seasons, the likelihood of their team scoring 2 or more goals, and blends all of those in a normalized way into a final captain_choice coefficient. The coefficient is then discounted by an opponent_resistance score, based on the player’s next opponents adjusted FDR and normalized score for defensive strength this season. Example of what the Pandas DF looks like below:

Based on that formula, here is the list of the Top15 recommended captains for this GW. Lots of good options there, so not an easy choice by all means. For the first time in a while Salah is not the top choice, and the recommender thinks you should for Kane, Son, Mitrovic, KDB or Sterling and then Salah.

Predictive Models (Player Stats)

It’s time for the crown jewel of this year’s improved Algorithm – the predicted player stats. After we layer in all the FDR, bookie coefficient, ref starts, projected lineups and injuries, there are two major metrics that we take into consideration when tuning our Team Optimizer for the next n-gameweeks team selection – predicted total points and expected value (ROI). Below are the stats for each metric, also broken down by position.

Projected Total Points – Top 25 Players

Projected Points – Top Goalkeepers

Projected Points – Top Defenders

Projected Points – Top Midfielders

Projected Points – Top Strikers

As you can see there is a large number of options we can choose from for each position, so we will be plugging a lot of the stats above into an Optimization Function in Python, which will output the team with the highest expected total points, given our budget constraints and other metrics that go into our decision making process. Some of the preliminary filters, applied before the Team Selector Code kicks in, include:

  1. Exclude Injured or Suspended players
  2. Exclude Players from teams with high FDR
  3. Exclude Players from Teams without Fixtures in GW1
  4. Cannot have more than 3 players from the same team
  5. Must have 15 players total (GK=2, DF=5, MD=5, ST=3)

Optimize Budget for most used formation

Most used formation by Top100 players last week was 3–4–3, so we will present optimized team for that formation. As you can see below, the model first looks at parameters that tells it if it should optimize towards full squad of 15 players, or towards a specific formation with 11 key players and 4 cheap fillers. For the fillers, it first looks at preferred formation and uses that to decide how many fillers to get per position. The model then subtracts the total amount spent on the 4 fillers from our initial budget and spends the leftover budget on the key 11 players, given the optimization function and model constraints.

Example1: Optimize towards max expected points

Example2: Optimize towards max Expected Value (ROI)

With a few modifications from us – The Value team in this case looks pretty appealing and balanced and if you are worried about lots of injuries and rotations of key expensive players, then this approach could be a good way to protect yourself from that.

Our Team for GW7

We will always use our top scoring team from last week, and try to do maximum of 1–2 transfers. Since our team didn’t have a playing GK last week, we just made one transfer, which was to get Martinez for Adrian. For our captain we’re going with the top recommended player – Kane. It was hard to decide between Grealish and Jorginho for a MD to bench, but we’re hoping AVL will get more offensive plays at home vs SOU, then Jorginho getting another penalty or assist, so hopefully we don’t regret that.

Conclusion

The way the season has been going, we recommend shifting away from expensive defenders and trying to just have three mid-range defenders and stack lots of chips in midfield and offense, since it has been raining goals so far this season, and there is no indication that things might be slowing down anytime soon. Thanks for reading as always and good luck this week!


Related Articles