Insights, research, and analysis on football analytics.
Published on March 10, 2025 by Martin Eastwood
Comparing football goals models — Poisson, Dixon-Coles, and more — to see which predicts best and how to optimize them...
Read MorePublished on January 08, 2025 by Martin Eastwood
This article walks through how to calculate expected threat in Python using linear algebra instead of the original convergence method...
Read MorePublished on December 02, 2022 by Martin Eastwood
This article walks through how to estimate goal expectancies from bookmaker's odds using Python...
Read MorePublished on November 04, 2022 by Martin Eastwood
My penaltyblog python package has been updated to v0.5.1 to include new Bayesian football (soccer) models and web scrapers...
Read MorePublished on October 18, 2022 by Martin Eastwood
It's been ten years since I started this blog...
Read MorePublished on August 05, 2022 by Martin Eastwood
This article shows how to use the penaltyblog python package to scrape football data...
Read MorePublished on August 25, 2021 by Martin Eastwood
This article looks at how to predict football results using a Bayesian hierarchical model built in Python and PyMC3...
Read MorePublished on June 24, 2021 by Martin Eastwood
Building on the last article, we upgrade our Poisson model with the Dixon and Coles adjustment and time decay...
Read MorePublished on June 18, 2021 by Martin Eastwood
A tutorial about predicting football results using Python and the Poisson distribution...
Read MorePublished on May 19, 2021 by Martin Eastwood
Using my Player Ratings model to identify the best footballing prospects...
Read More