Football Outcome Prediction screenshot 1

Predict football results using a statistical model

A forecasting system that predicts football match outcomes from historical match statistics alone, built around honest probabilities rather than a single guess.

Role

Solo Engineer

Organisation

Self-directed

Industry

Sports Analytics · Machine Learning

Focus

ML · Data · Modelling

/ Problem

It is easy to build a sports model that looks accurate but is quietly peeking at information it would not have before kickoff. I wanted forecasts built only from what is genuinely known pre-match, and honest about how confident they really are.

/ Solution

I built my own Apify scraper to collect match statistics across eight competitions. Rather than a model per market, four core groups (outcome, goals, first-half goals, corners) forecast expected values, turn them into probability distributions, and read every outcome off those. Everything uses strict time-based splits, calibrated probabilities, and a decision layer that abstains when it is not confident enough.

The honest results were humbling: raw outcome accuracy sits around 51%, a realistic ceiling for a low-signal problem. But acting only when calibrated confidence cleared a threshold reached ~70% precision on the matches it chose to call. A model that knows when to stay quiet is often worth more than one that always answers, and calibration plus a coverage floor is how you build that in.

/ Skills demonstrated

Data CollectionProbabilistic ModellingCalibrationDecision Design

/ Built with

PythonXGBoostscikit-learnpandasNumPyElo modellingDixon-Coles / Poisson / Negative-Binomial distributionsPlatt calibrationjoblibApify
Source on GitHub