(team_id: 2057677)

This is a continuation of our article from last year where my friend Andrew Sproul and I wrote some Python code to create a player recommendation system for selecting the most optimal EPL Fantasy team each week based on player cost, minutes played and total points per fantasy dollar spend – ROI.
You can read the full article with a detailed explanation of our analysis and code logic here:
This new Blog will attempt to track our team’s progress each week and post team recommendations before the transfer window closes each week. Below you can see the team that our algorithm recommended for the start of the new EPL 2019–2020 season based on end of season total ROI stats for each player from last season.
Gameweek 1 Optimal ROI team:
GK: [(‘Jordan Pickford’, 5.5), (‘Lukasz Fabianski’, 5.0)] DF: [(‘Virgil van Dijk’, 6.5), (‘Andrew Robertson’, 7.0), (‘David Luiz Moreira Marinho’, 6.0), (‘Aymeric Laporte’, 6.5), (‘César Azpilicueta’, 6.0)] MD: [(‘Mohamed Salah’, 12.5), (‘Raheem Sterling’, 12.0), (‘Ryan Fraser’, 7.5), (‘Luka Milivojevic’, 7.0), ("N’Golo Kanté", 5.0)] FWD: [(‘Raúl Jiménez’, 7.5), (‘Glenn Murray’, 6.0)]
Note: We need to fix the code because as you can see above the algorithm only picked 14 players instead of 15, but we will try to fix this in the coming days.
My adjusted team’s name in the EPL Fantasy – "alGOALrithm"
Because our recommendation system currently doesn’t take into account what opponent each team is facing, I have made a few custom adjustments to the actual team that was recommended by the algorithm. I still picked players who generated an ROI above 20 last season and were just a few decimal points behind originally recommended players. Below is the configuration I chose to go with for Gameweek 1:

Final notes:
As most of you who have played the EPL Fantasy game before know, luck still has a major factor in the game because of injuries and picking which players to leave on the bench and who you chose as your captain, so there is still a lot of manual decision making and random noise involved with the final outcome of the final winner at the end of the season. That being said we’re still excited to test how much better than the average player we can do by just following a simple Moneyball approach and trying to optimize the total budget for max ROI by the end of the season.
We will also try to make improvements to the code throughout the season to make it more dynamic and I will do my best to post updates here.
In the meantime, Good luck to everyone who is playing and feel free to reach out with any questions!
Update:
Below you can see how our team performed during Gameweek1:

Link to new Blog with updated Algorithm rules, and best ROI team recommendation for Gameweek 2 below: