How Our Football Prediction Model Works

Every match preview on Kickoff Report carries a prediction: win probabilities for each side, an expected-goals estimate, a most-likely scoreline, and the three most probable exact scores. Those numbers are not guesses and they are not scraped from a bookmaker. They come from a model we built and tested ourselves. This page explains, in plain terms, exactly how that model works — what goes into it, what it does with those inputs, and how well it actually performs when measured honestly against real results.

The short version

We estimate how many goals each team is likely to score, then turn those two numbers into probabilities for every plausible scoreline. Add up the scorelines where the home team wins and you have the home-win probability; do the same for draws and away wins. The expected-goals estimate is anchored on Elo ratings — a single number for each team’s strength — and refined with recent form. The scoreline probabilities come from a Poisson model with a well-known low-score correction called Dixon-Coles. That is the whole engine. The rest is detail.

Step 1 — how good is each team? (Elo ratings)

The starting point is an Elo rating for each side. Elo is the same idea used in chess rankings: every team has a number, and the gap between two teams’ numbers tells you how much stronger one is than the other. A 100-point edge means the same thing whether it is a top club against a mid-table one or a World Cup favourite against an outsider.

For domestic clubs we use publicly published club Elo ratings; for international teams we use national-team Elo. Ratings update as results come in, and a rating that has gone stale (more than a month old with no refresh) is treated as missing rather than trusted.

Step 2 — turning a rating gap into expected goals

Elo tells us who is stronger, but a prediction needs goals. We convert the rating gap into a goal supremacy — how many more goals the stronger side is expected to score — with a simple, calibrated relationship:

supremacy = K × (rating gap)

Here K is a coefficient we fitted from historical data (more on that below). We start from an assumed average total of goals in a match, then split that total around its midpoint using the supremacy: the favourite’s share goes up, the underdog’s share comes down. The result is two numbers — an expected goal count for the home side and one for the away side. These two numbers (statisticians call them the lambdas) are the heart of the prediction.

Home advantage is added here too, as a fixed bonus to the home side’s rating — worth roughly the edge a real home crowd and familiar pitch provide. For a neutral-venue match, such as a World Cup final, that bonus is set to zero. For a host nation playing at home in their own tournament, it is kept.

Step 3 — recent form, used carefully

A rating captures long-run strength but not the last few weeks. So where we have recent results, we blend in a form-based estimate: a team’s own scoring rate, adjusted by how leaky the opponent’s defence has been. Recent games count more than older ones — the most recent five matches are weighted from oldest to newest, so last weekend matters more than a month ago.

Two honest caveats. First, form is a fallback, not an equal partner: when both teams have reliable Elo ratings, our tested settings lean fully on the Elo-based estimate, because in testing that produced better predictions than mixing form back in. Form does the real work when a rating is missing — early in a new season, or for a team we do not have a current rating for. Second, we only trust a league-average goal rate when there is enough of a season played to estimate it; a handful of World Cup group games is too little, so we fall back to a sensible default.

Step 4 — head-to-head, as a gentle nudge only

If two teams have met at least three times recently, we let that history nudge the estimate — but only by ten percent, and only after making sure we credit each past match’s goals to the right team regardless of who was at home that day. Head-to-head is a weak, slow-moving signal, and we treat it that way. It never overrides the ratings; it just tilts them slightly.

Step 5 — from expected goals to a full set of probabilities

Now we have two expected-goal numbers. To get probabilities, we assume each team’s goals follow a Poisson distribution — the standard statistical model for counting independent events like goals in a match. That gives a probability for every exact scoreline: 0-0, 1-0, 2-1, and so on, across a grid up to ten goals per side.

Real football has one well-documented quirk the plain Poisson model misses: low-scoring results (0-0, 1-0, 1-1) happen a little more often than pure independence predicts, because teams adjust their play to the score. We apply the Dixon-Coles correction (from a 1997 paper by Mark Dixon and Stuart Coles) to bump those specific low scorelines to their observed frequencies. It is a small, principled adjustment — not a fudge factor.

Summing the grid gives us everything the widget shows:

  • Win / draw / win probabilities — add up all the home-win scorelines, all the draws, all the away-win scorelines.
  • Most-likely scoreline — the single most probable exact score. (If the most likely score is a draw but one side is clearly favoured to win overall, we show that side’s most-likely winning score instead, following the usual tipster convention — but a genuine coin-flip keeps the draw.)
  • Top three scorelines — the three most probable exact scores, with their percentages.
  • Both-teams-to-score and over/under 2.5 goals, read straight off the same grid.

Knockouts: who goes through

In a single-leg knockout tie at a major tournament, a draw after 90 minutes does not end things — it goes to extra time and penalties. For those matches we also show each side’s chance of advancing, not just of winning in normal time: a team’s regulation-win probability plus half of the draw probability, treating the extra-time-and-penalties lottery as a 5050. When one side is a clear favourite (at least an even-money regulation win), the headline names their most likely winning score; when the tie is a true toss-up, the headline is the most likely 90-minute score plus who is more likely to progress.

How well does it actually work?

This is the part most prediction sites skip. We test the model the way a forecaster should: by replaying thousands of past matches it never saw during fitting, and scoring its predictions against what really happened.

We fit the model’s coefficients on five seasons of results across Europe’s top five leagues, then validated it on a completely separate season it was never trained on — 1,751 matches. The main measure is the Ranked Probability Score (RPS), the standard metric for three-way football forecasts. Lower is better; a perfect forecast scores 0.

On that held-out season:

Model RPS (lower is better) Calibration
A naive “league average” baseline 0.229
Our model 0.203 0.97
Bet365’s odds (bookmaker benchmark) 0.198

Two things matter here. First, our model clearly beats naive baselines — it is a real model, not a dressed-up average. Second, and just as important: it does not beat the bookmakers, and we are not going to pretend it does. Bet365’s implied odds scored 0.198 to our 0.203 on the same matches. The bookmakers have more data and more resources, and their prices are very hard to beat. Our model gets close, which is a genuinely good result for a solo-built system — but “close to the bookies” is the honest claim, not “sharper than the bookies.”

The calibration number is the other reason we trust it. A calibrated model is one where, when it says 60%, the thing happens about 60% of the time. We measure this by fitting a line through predicted-versus-actual frequencies; a perfectly calibrated model has a slope of 1.0. Ours came out at 0.97 — very close to honest. We hold the model to a rule before it can ship: it must beat our previous model’s accuracy and have a calibration slope between 0.8 and 1.2. If a change to the model fails that test, it does not go live.

International tournaments get their own settings

Club football and international football behave differently — the same rating gap tends to produce a more lopsided result in club matches than at a World Cup, where the field is more bunched. So for FIFA major tournaments (World Cup, Euros, Copa América, AFCON, Asian Cup) we use a separate, separately-validated set of coefficients, tuned on decades of tournament finals and checked on held-out tournaments. It is deliberately less confident than the club model, because over-confident international predictions are a classic modelling mistake. This is why a World Cup underdog on our site is often given a more realistic chance than a naive rating gap would suggest.

What the model does not do

It has no knowledge of team news, injuries, suspensions, weather, motivation, or a manager’s rotation plans. It does not read the news. It is a disciplined, transparent baseline built from ratings, goals, and history — nothing more. That is a strength (it is consistent and it cannot talk itself into a hunch) and a limit (a key striker ruled out an hour before kickoff will not move it). Read our predictions as a well-calibrated starting point, not a crystal ball — and never as betting advice.

FAQ

Where do the prediction numbers come from?
From a statistical model we built and test ourselves. It estimates each team’s expected goals from Elo ratings and recent form, then uses a Poisson model with a Dixon-Coles low-score correction to turn those into probabilities for every scoreline. The numbers are not taken from a bookmaker.

Is the model more accurate than betting odds?
No. On a held-out season of 1,751 matches our model scored an RPS of 0.203 against 0.198 for Bet365’s odds — close, but the bookmaker was still slightly better. We beat naive baselines comfortably and get near the bookmakers, but we do not claim to be sharper than them.

What is a Ranked Probability Score?
It is the standard way to grade a three-way (home/draw/away) football forecast, rewarding predictions that put probability close to what actually happened. Lower is better and a perfect forecast scores zero. We use it because it properly credits a forecast for being confident and right, and penalises confident and wrong.

Does the model account for injuries or team news?
No. It works purely from ratings, goals, and head-to-head history. It has no awareness of injuries, suspensions, line-ups, weather, or motivation. Treat its output as a calibrated statistical baseline, not the last word.

Can I use these predictions for betting?
No. They are published for interest and context only, they are not betting tips, and — as the numbers above show — they do not beat bookmakers’ prices. Never bet based on them.

Leave a Comment

Your email address will not be published. Required fields are marked *

Scroll to Top