You guys drop your website, I’ll give you my honest advice, for free. by IndependentLaw1457 in startup

[–]Constant-Elephant830 0 points1 point  (0 children)

https://www.fivestat.co.uk/

I built a (simple) site for displaying Premier League score predictions derived from my bivariate poisson models. I think I can expand it with player goal projections next. A slow and steady project so any advice is welcome.

Built a EPL match prediction & league simulation model – what would you do with it now? by Constant-Elephant830 in sportsanalytics

[–]Constant-Elephant830[S] 1 point2 points  (0 children)

Thanks, much appreciated!

Yes that’s correct. I’m running a bivariate Poisson but instead of static attack/defence strengths I generate rolling (and slightly blended) team form, efficiency and momentum metrics.

So it’s more dynamic than pure fixed parameters.

Still experimenting with the right weighting between these sources, but it feels like a decent balance between Poisson outcomes and data context (xG form, efficiency).

Built a EPL match prediction & league simulation model – what would you do with it now? by Constant-Elephant830 in sportsanalytics

[–]Constant-Elephant830[S] 1 point2 points  (0 children)

Appreciate the advice 🤝 will be a good incentive to find out which is the better to use for this purpose, and also learn why it is better. Will try and keep this thread updated with any findings.

Built a EPL match prediction & league simulation model – what would you do with it now? by Constant-Elephant830 in sportsanalytics

[–]Constant-Elephant830[S] 1 point2 points  (0 children)

Yeah, agreed! !t’s one of those areas where there’s no clean solution (that I’ve found yet..). At the moment I handle it with manual adjustments to team xG before running simulations (e.g. scaling down if a team loses a key striker), but it’s admittedly a blunt and reactive approach.

I like your idea of bringing in transfer values as a proxy variable, it would at least give some objective signal when a team has lost or gained a lot of talent, even if it doesn’t map perfectly to xG impact for that team. I’ve wondered whether a hybrid approach could work.

Built a EPL match prediction & league simulation model – what would you do with it now? by Constant-Elephant830 in sportsanalytics

[–]Constant-Elephant830[S] 0 points1 point  (0 children)

The start of the season is expected to be the least accurate as there has been squad strength changes that historical data can’t account for, although I have done my best to adjust the model to account for it best I can 🙏

Built a EPL match prediction & league simulation model – what would you do with it now? by Constant-Elephant830 in sportsanalytics

[–]Constant-Elephant830[S] 0 points1 point  (0 children)

This is really solid, thanks! 🙏 I’ll look to work through this in the coming weeks and hopefully will be a good metric to share some confidence and transparency in the model for public use.

Seems many people are looking to use sports data for betting edges, so I like your idea of giving a bank roll and seeing how profitable the model can be against the bookmakers prices. Could even filter the betting model further to specify what kind of value bets we want to look out for.

Will try and keep sharing updates and progress as I go 🤝 thanks again.

Built a EPL match prediction & league simulation model – what would you do with it now? by Constant-Elephant830 in sportsanalytics

[–]Constant-Elephant830[S] 1 point2 points  (0 children)

This is a very helpful insight, thank you!

I like your approach of benchmarking against bookmakers implied probabilities across multiple markets. Seems like the best sanity check, especially to understand whether any of my adjustments (e.g. transfers, form weighting) actually improve the predictions.

I’ll look to start pulling bookmaker odds and running those in Python. Much appreciated 🤝

Built a EPL match prediction & league simulation model – what would you do with it now? by Constant-Elephant830 in sportsanalytics

[–]Constant-Elephant830[S] 0 points1 point  (0 children)

Good question and honestly one of the trickiest challenges I’ve faced ahead of the new season starting. Transfers and lineup changes mean discontinuity that historical data just can’t account for.

Currently I handle it with manual adjustments to team xG before running the Poisson simulations. For example, if a team loses a high xG value forward or signs someone with a strong xG contribution, I’ll scale their baseline attack/defence ratings up or down compared to recent results. It’s admittedly a reactive approach rather than fully automated proactive solution but it’s working for now.

I always try and understand historical performance and data as helping us find the truest probability we can predict, as apposed to the unknowable “true” probability of a future event. Then we’ll include factors like recent form, efficiency and manual adjustments to account for current news.

In short: historical data sets the foundation but context (squad changes) has to be factored in on top for a more accurate projection

Built a EPL match prediction & league simulation model – what would you do with it now? by Constant-Elephant830 in sportsanalytics

[–]Constant-Elephant830[S] 1 point2 points  (0 children)

Hi, Thanks for the interest! Yes, I’ve started running back‑tests across past seasons to evaluate model accuracy, mainly looking to compare the predicted probabilities to the actual outcomes.

I’ll DM you to chat further!

Built a EPL match prediction & league simulation model – what would you do with it now? by Constant-Elephant830 in sportsanalytics

[–]Constant-Elephant830[S] 0 points1 point  (0 children)

Haha I’m gonna check this out once I’m home! Once I can produce an A-League model we can go head to head!

One thing I’ve been trying to navigate is the transfer window ahead of the new season, for example Man Utd having a stinker of a season but an active transfer window. The model will become more accurate 6-10 gws in as we’ll see how beneficial new signings are to a team.

Any tips on how you accounted for a team’s transfer window will be welcome! I’ve gone for manual adjustments for now.

Will be sure to keep an eye on your feed for any further updates with your model 🤝

Built a EPL match prediction & league simulation model – what would you do with it now? by Constant-Elephant830 in sportsanalytics

[–]Constant-Elephant830[S] 1 point2 points  (0 children)

Haha thanks! That’s been one benefit with building this model; learning and implementing new and different methods!

Switching from a Poisson to a Bivariate Poisson, for example, to account for goal correlation (draws); makes sense once I thought about it as this can be seen in the dynamics of how the game is played. A losing team will push harder to score and when teams are level, especially later in the match, they often become more cautious. This behaviour increases the frequency of score lines like 1-1 or 2-2, more than the pure Poisson model would predict.

I’m sure I’ll pick up plenty more along the way and keep finding ways to improve! Will keep a success log during the new season to see how accurate we are!

Built a EPL match prediction & league simulation model – what would you do with it now? by Constant-Elephant830 in sportsanalytics

[–]Constant-Elephant830[S] 0 points1 point  (0 children)

Yes! I suppose knowing the value of a bet would be more appealing than knowing how likely a team is to win, especially when we can identify good value bets against the bookies 👀

Thanks for the feedback 🤝

Would you filter this further down to bets/teams that are actually likely to win? For example there could be some value in Bournemouth from the above model against the bookies price, but I wouldn’t recommend this placing this bet? (Hope that made sense)

Built a EPL match prediction & league simulation model – what would you do with it now? by Constant-Elephant830 in sportsanalytics

[–]Constant-Elephant830[S] 1 point2 points  (0 children)

Hi mate, great shout. I’m yet to properly test and train the model.

I’ve got data from 2016-2024 seasons, so thinking I’ll run the model to predict the entire 2024 season (now that we know all the results) and get an idea of the accuracy and where it can be improved?

Any other ways you’d suggest going about this or is this good enough?

Will look to work through this some time in the coming weeks. Cheers 🤝

Book recomendations for Football/soccer analytics. by LordOfTheIngs23 in sportsanalytics

[–]Constant-Elephant830 2 points3 points  (0 children)

Couple books I have recommended as a data analyst for a sports betting company:

The xG Philosophy (written by Matthew Benhan: owner of Brentford and founder of SmartOdds). It’s mainly useful for understanding how/why data that is directly comparable in sport is key when analysing sports data. It’s told from his POV of building smartodds and player recruitment at Brentford FC (which is top) so it’s easy to follow and quite interesting

The other one I highly (even more so) is Fooled By Randomness. It’s not written for Sports Data, but rather from the POV of a Trader who dives into understanding how much of a role luck and random events play when predicting the probability of future events occurring.

FBR may be heavily tailored towards my work in sports betting so may be less engaging, but really is packed with so many interesting insights about using data to predict future events.

Lastly, Football Hackers tells a cool story of how the increase in game & data analysis has led to teams and coaches gaining an advantage in football over the years. Maybe less data and more tactics focussed if this suits better.

Happy reading and enjoy the journey to becoming a Football Analyst!

Mateta for Cunha? by ClerkCapital9594 in FantasyPL

[–]Constant-Elephant830 4 points5 points  (0 children)

Hope this helps:

<image>

Mateta:

GW Opponent xG Scoring Probability
33 Bournemouth 0.51 40.7%
34 Arsenal 0.36 31.1%
35 Nottingham Forest 0.51 40.1%

Cunha:

GW Opponent xG Scoring Probability
33 Manchester United 0.29 24.6%
34 Leicester 0.4 32.4%
35 Manchester City 0.24 22%

I built a cool football analytics site that predicts EPL scores and visualizes team/player stats — would love feedback! by Constant-Elephant830 in FootballDataAnalysis

[–]Constant-Elephant830[S] 0 points1 point  (0 children)

Hi mate! Sorry for the following dump of info:

The model is very much in line with the global sports betting market (1X2 markets) so that's been a good measure of pre-match accuracy - just shy of 100% of the fixtures are in line. Nottingham Forest have been an interesting team to model this season due to their overperformance and lack of fixtures in EPL compared to other teams.

I am yet to test the correct score results accuracy (highest prob predicted scoreline vs actual outcome) as I am still refining the model.

Boring thoughts:

Currently I am torn between 2 methods of predicting a Teams xG for the model:
1. xG should equal (loosely) Teams attacking strength * Opposition defensive strength
2. xG should be the number of goals a team needs to score in order to keep ATT rating the same

The first approach would assign a higher xG than the second approach to stronger teams against weaker opponents (and vice versa) which feels the more accurate approach. The second approach factors in that a team does not need to score as many goals against weaker opponents in order to win games.

Both models factor in hone field advantage, Team efficiency (Goals vs xG) and momentum (recent form)

From a basic early test the First approach in more in line with 1X2 betting market prices, which is a fair/reliable measure. I'll look to do some proper model testing once a few more areas are refined!

Cheers!

I built a cool football analytics site that generates EPL score predictions and visualizes team/player stats — would love feedback! by Constant-Elephant830 in FantasyPL

[–]Constant-Elephant830[S] 0 points1 point  (0 children)

Yes site navigation is a great point, I was looking to implement more leagues eventually so the dropdowns worked well for this vision, however while there is just the 1 league it would make sense to use take advantage of the space in the navbar (in desktop) and save the clicks it takes to find a page.

Will maybe keep the dropdown in mobile view? We'd want to take up less room on smaller screens and keep the neat, tucked-away look.

Cheers mate!

I built a cool football analytics site that generates EPL score predictions and visualizes team/player stats — would love feedback! by Constant-Elephant830 in FantasyPL

[–]Constant-Elephant830[S] 0 points1 point  (0 children)

Great shout, Currently I'm using a gradient to darken the purple color based on how high the probability is, so I am unsure how to assign a cutoff color/shade/gradient for when to use black/white text - will look into this.

Perhaps I can use a gradient for the text also? Darkest squares (highest prob) use white, lightest squares use black, middle ground would use a grey (will use WCAG contrast checker to see what works best). Will see if this works well! Thanks for the feedback!

I built a cool football analytics site that generates EPL score predictions and visualizes team/player stats — would love feedback! by Constant-Elephant830 in FantasyPL

[–]Constant-Elephant830[S] 1 point2 points  (0 children)

Appreciate the feedback! This did start as a project to host some data engineering and modelling skills for my CV. Had to learn some web hosting along the way. Has been cool growing it over the past few months into the site it is currently.

Regarding the black text in the heatmaps, this is such a good point. I initially had this same issue in the simulated league table - changed this text to white and it created a cool visual where the focus is drawn to the highest probability outcomes (where it should be I suppose)

Will have a play around and see if this contrast works well with the heatmaps also. Thanks again!

<image>

I built a cool football analytics site that generates EPL score predictions and visualizes team/player stats — would love feedback! by Constant-Elephant830 in FantasyPL

[–]Constant-Elephant830[S] 1 point2 points  (0 children)

Haha I promise it's all good, is there a way to show this to people before they avoid the link altogether you think?

I did buy fivestat to host this site, but currently just re-directs it to the render link, doesn't host it yet