How Football Prediction Models Work
A step-by-step worked example of how a statistical model turns team records into expected goals, a scoreline grid and probabilities for every market.
By the GoalStatsHub team · · 7 min read
A football prediction model doesn’t try to guess the score. It estimates how likely every possible score is, and every market follows from that. This guide walks through the method step by step with one worked example, so you can see where a figure like “46% home win” comes from and what it can and can’t tell you.
Step 1: estimate how many goals each side will score
Everything starts with one number per team: the average number of goals it is expected to score in this particular match. Statisticians call it the goal expectancy, and the usual way to estimate it is to compare each team with the league average.
Take an invented fixture, Team A at home to Team B, in a league where:
- home sides score 1.5 goals per game on average, and away sides 1.2;
- Team A scores 1.8 per home game, so its home attack is 1.8 ÷ 1.5 = 1.2 times the average;
- Team B concedes 1.25 per away game, against a league average of 1.5, so its away defence lets in 0.83 times the average;
- Team B scores 1.1 per away game (attack 1.1 ÷ 1.2 ≈ 0.92 times the average);
- Team A concedes 1.2 per home game, exactly the league average (defence 1.0).
Multiply the strengths together and scale by the league average:
- Team A: 1.2 × 0.83 × 1.5 ≈ 1.5 expected goals
- Team B: 0.92 × 1.0 × 1.2 ≈ 1.1 expected goals
Real models refine this a lot. They weight recent matches more than old ones, adjust for the quality of the opponents each team has faced, and need a minimum number of games before they trust a team’s figures at all. The principle stays the same: a strong attack against a weak defence pushes the number up, and the reverse pulls it down.
Step 2: turn an average into a spread of outcomes
An expectation of 1.5 goals doesn’t mean Team A scores one and a half goals. It means that over many identical matches it would average 1.5. Goals are rare, roughly independent events, and counts of that kind are described well by the Poisson distribution. Given the average, it tells you the chance of exactly 0, 1, 2, 3 or more goals:
| Goals | 0 | 1 | 2 | 3 | 4+ |
|---|---|---|---|---|---|
| Team A (1.5) | 22.3% | 33.5% | 25.1% | 12.6% | 6.5% |
| Team B (1.1) | 33.3% | 36.6% | 20.1% | 7.4% | 2.6% |
Even the stronger side fails to score in more than one match in five. That single fact explains a lot of football’s unpredictability.
Step 3: build the scoreline grid
If the two teams’ goals are treated as independent, the chance of any exact score is the product of the two figures. A 1-1 is 33.5% × 36.6% ≈ 12.3%. Do that for every combination and you get a grid of scorelines. For our example the most likely ones are:
- 1-1: 12.3%
- 1-0: 11.1%
- 2-1: 9.2%
- 2-0: 8.4%
- 0-1: 8.2%
- 0-0: 7.4%
The grid is what you see in the correct score tab of every match page. Our guide to reading the correct score matrix covers it in detail.
Step 4: read every market off the same grid
Once the grid exists, the familiar markets are just sums of its cells:
- Home win: every score where Team A is ahead. Here that adds up to 46.4%.
- Draw: the diagonal (0-0, 1-1, 2-2 and so on), 25.8%.
- Away win: everything else, 27.8%.
- Over 2.5 goals: every cell with three or more goals in total, 48.2%.
- Both teams to score: the chance that neither side is held to zero, (1 − 22.3%) × (1 − 33.3%) ≈ 51.8%.
Because all of them come from one grid, they can’t contradict each other. A model that published a 70% over 2.5 next to a 30% both-teams-to-score for an evenly matched game would be making an error somewhere, and this construction rules it out.
What a textbook Poisson model gets wrong
The simple version above is a good start, but serious models correct for a few known weaknesses:
- Low-scoring draws. Real matches end 0-0 and 1-1 slightly more often than two independent Poisson counts suggest. Dixon and Coles described a correction for this in 1997, and most modern models include something similar.
- Changing form. A team’s strength drifts through a season. Weighting recent games more heavily lets the model follow that drift without overreacting to one result.
- Thin data. Early in a season, after promotion or in a cup tie between clubs from different leagues, there are too few comparable games. The honest answer is to report lower confidence rather than pretend to precision.
How GoalStatsHub applies this
Our model follows the same principle. It estimates the goals each side is likely to score, shown on match pages as expected goals, builds one scoreline grid from them and derives every goal market from that grid: 1X2, double chance, both teams to score, the over/under lines, exact scores, Asian handicap and the half-time markets. The exact weighting and adjustments are our own, so our percentages won’t match a hand calculation like the one above to the decimal.
Next to each prediction, up to three confidence dots show how much data the model had. When it had too little, the match page says so in plain words. You can read more about the confidence levels in how our predictions work.
What no model can see
A model built from results and match statistics knows nothing about a striker who was injured in training on Friday, a manager resting players before a cup final, or a pitch turned to mud by rain. Those things move real outcomes, which is why a 70% favourite still fails to win three times in ten. Treat the percentages as a careful starting point, not a forecast you can bank on, and read our guide on judging predictions before trusting any model, ours included.