RSSAmplifier

Blog

penaltyblog

pena.ltRSS feed ↗100 posts

Latest posts

Penaltyblog v1.11.0: Faster Batch Predictions, Neutral Venue Support, a Pretrained xT Model, and Faster Weibull Copula Fits

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...

Why I Wrote My Own MCMC Sampler for Penaltyblog

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...

Introducing the Opta API Connector for matchflow

Streamline your football data pipelines with direct, hassle-free Opta API integration for matchflow...

Shrinkage, Uncertainty, and Son Heung-min: Using Bayesian Methods to Identify Finishing Ability

Why most finishing metrics are flawed and how a Bayesian approach gives us a truer picture of a player's finishing ability...

From Biased Odds to Fair Probabilities: Removing the Bookmaker's Overround

A simple guide to stripping the overround and finding the real probabilities behind the bookmaker's odds...

Penaltyblog v1.5.0: Faster Models, Smarter Queries, and a Sharper Edge

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...

How Accurate Are Soccer Odds? A Data Dive into 250 Million Betting Lines

A data-driven deep dive into how accurately bookmakers price global soccer markets...

MatchFlow 1.4.0: Optimizing, Visualizing, and Validating your Data Pipelines

MatchFlow just got smarter, friendlier, and more powerful for optimizing your pipelines, visualizing your data flow, and keeping your data clean...

Introducing MatchFlow: a JSON-native query engine for football data.

MatchFlow is a JSON-native query engine for football data - no flattening, no fuss...

Better Metrics for Football Forecasts: Moving Beyond the Ranked Probability Score

Why the Ranked Probability Score might be misleading your football model evaluations, and what to use instead....

Pi Ratings: The Smarter Way to Rank Football Teams

A smarter, football-focused alternative to Elo — using Pi Ratings to track team strength and predict matches...

Football Prediction Models: Which Ones Work the Best?

Comparing football goals models — Poisson, Dixon-Coles, and more — to see which predicts best and how to optimize them...

Calculating Expected Threat in Python Using Linear Algebra

This article walks through how to calculate expected threat in Python using linear algebra instead of the original convergence method...

Estimating Goal Expectancy From Bookmaker's Odds

This article walks through how to estimate goal expectancies from bookmaker's odds using Python...

Penaltyblog Python Package Updated to v0.5.1

My penaltyblog python package has been updated to v0.5.1 to include new Bayesian football (soccer) models and web scrapers...

Ten Years of pena.lt/y/blog

It's been ten years since I started this blog...

Scraping Football Data Using the penaltyblog Python Package

This article shows how to use the penaltyblog python package to scrape football data...

Predicting Football Results Using Bayesian Modelling with Python and PyMC3

This article looks at how to predict football results using a Bayesian hierarchical model built in Python and PyMC3...

Predicting Football Results Using Python and the Dixon and Coles Model

Building on the last article, we upgrade our Poisson model with the Dixon and Coles adjustment and time decay...

Predicting Football Results With the Poisson Distribution

A tutorial about predicting football results using Python and the Poisson distribution...

Which Young Players Will be Stars?

Using my Player Ratings model to identify the best footballing prospects...

Predicting Player Career Trajectories

Predicting what player's potential career trajectories look like...

Sharing xG Using Multi-touch Attribution Modelling

Reattributing xG using multi-touch attribution modelling...

VAR, What is it Good For?

As Edwin Starr famously said, VAR, what is it good for? Well, let's find out...

Opta Pro Forum 2018

I finally wrote about the presentation I gave at the Opta Pro 2018 Forum....

Automated Feature Engineering

I recently gave a presentation on automated feature engineering at MancML....

Deep Learning in R Using Keras

I recently gave a presentation at the Manchester R Users Group on Deep Learning in R using Keras....

An Alternatve to Radars for Visualising Football Data

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...

Opta Pro Forum 2017

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....

Opta Pro Forum 2016

With the 2017 Opta Pro Forum rapidly approaching, I thought it was about time I transcribed my presentation from the previous event....

A Footballer Recommendation Engine

With the transfer window well under way I thought I'd discuss my footballer recommendation engine for identifying potential transfer targets....

Expected Goals and Uncertainty

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...

Ranking Football Teams Using Google's Page Rank Algorithm

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...

It’s Not Just The Money: Quality of Signings Suggest China Could Become a Major Power in Club Football

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 ...

Frequency of Draws in Football

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...

Updated Massey Ratings

Updated Massey ratings for the English Premier League showing how well teams are really doing when you account for their strength of schedule...

Mathematically Optimising Your Fantasy Football Team: Redux

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.

Expected Goals And Support Vector Machines

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...

PlayerRatings And False Negatives

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...

Backtesting PlayerRatings

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...

PlayerRatings And Team Quality

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...

PlayerRating: A Bayesian Method For Evaluating Football Players

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...

Mathematically Optimising Your Fantasy Football Team: Update

It's transfer window time so here's your mathematically optimised fantasy football team...

Massey Ratings For Football Part Two

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.

Massey Ratings For Football Part One

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...

English Premier League Pythagorean

I’ve not posted this for a while so here is the latest Pythagorean for the English Premier League.

Predicting Football Using R

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.

Expected Goals: Foot Shots Versus Headers

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.

Mathematically Optimising Your Fantasy Football Team

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.

Expected Goals And Exponential Decay

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.