Penaltyblog v1.11.0 adds batch predictions across the goal-model API, neutral venue support, a pre-trained xT model, faster Weibull Copula fitting, and makes the documentation available through Context7 MCP...
I've added a native, dependency-free Bayesian engine to penaltyblog, powered by a custom Cython MCMC sampler to make quantifying uncertainty fast and frustration-free...
v1.5.0 delivers interactive charts, faster models, upgraded football probability grid, and a powerful Flow query language - all designed to make your analysis sharper and quicker...
I've long been critical of the use of radar plots for visualizing football data and was recently challenged by a reader of this blog to come up with a better alternative so here we go...
I wrote up the poster presentation I gave at the 2017 Opta Pro Forum for the Opta Pro blog looking at using machine learning to quantify footballer's decisions....
My Twitter feed seems to be increasingly taken up with discussions of Expected Goals in football yet there always seems to be something important missing from the discussion, and that's uncertainty...
I've discussed various techniques for ranking football teams on my blog before, such as using Massey Ratings to account for strength of schedule, but I've not covered Google's PageRank yet...
John Burn-Murdoch and the Financial Times have used my PlayerRatings model to analyse the recent flux of players moving to teams in the Chinese Super League - you can read the full article here ...
There has been some discussion and misunderstanding around the low frequency of draws in football on my Twitter feed recently so I thought I'd just give a quick recap around why the probabilities of draws are so low...
The Premier League’s fantasy football is back ready for the new season so I thought I’d run through an example of how linear programming can help you mathematically select your team.
I've written about expected goals on this website before but I've changed approach recently so I thought I'd write up some of the different ideas I've been playing around with...
My last article looked at how well my PlayerRatings model predicted which young players would go on to have successful careers. This time we explore false negatives - which top players may have wrongly had low PlayerRatings in their youth...
Following my last article discussing my PlayerRating model for quantifying footballers, JackIO challenged me to test the model by looking at what young players it recommended...
My previous article introduced PlayerRatings, a mathematical model I’ve been working on over the past few months to quantify the ability of individual footballers. One of the nice characteristics of this approach is that player ratings can be aggregated together to create team ratings...
I originally submitted the idea behind this article to the recent Opta Pro Forum and although it was turned down I thought I’d write it up anyway incase anyone else was interested in the results...
In part one I introduced Massey Ratings and how they can be used to rank football teams in a way that accounts for their strength of schedule. Next, we’ll take a look at how Massey Ratings can be extended further to look at team’s attack and defence strength separately.
We all know the league table can lie and one of the common causes of this is strength of schedule. Take Southampton, at the time of writing they are currently second in the Premier League twelve matches in yet still haven’t played...
I recently gave a presentation to the Manchester R Users' Group discussing how to predict football results using R. My presentation gave a brief overview of how to create a Poisson model in R and apply the Dixon and Coles adjustment to it to account for dependance in the scores.
My last article on expected goals introduced the concept of using exponential decay to estimate the probability of scoring based on the shooter’s distance from the goal. The article received lots of feedback (thanks everyone!!), with a couple of common comments standing out that I wanted to address.
The Premier League’s fantasy football is back ready for the new season so I thought I’d run through an example of how linear programming can help you mathematically select your team.
In my last article on expected goals I showed how to incorporate the distance from goal along the Y axis into the expected goal model using Pythagoras’ Theorem. This all worked pretty well, giving us an r squared value of 0.95. However, while the r squared value was good there was still a flaw in the model we need to fix.