How does Footlab compute its football predictions?
For every match, Footlab estimates an expected number of goals for each team, then turns those into outcome probabilities with a bivariate Poisson model. The expected number combines six inputs: the recent strength of both teams measured over their last 180 days, a pool-anchored world Elo rating, the probable starting line-up, confirmed absences, home advantage, and match context such as a second leg or days of rest. The model reaches 53.9% correct 1X2 outcomes on a temporal hold-out, where random guessing between three outcomes would give 33.3%.
Model version: 2026-08. Last functional change: web verification of the probable line-up, 9 August 2026. Reference backtest: 16 July 2026, 25,424 matches.
What exactly does the model output for a match?
The model outputs a probability for each of the three outcomes (home win, draw, away win), the most likely scoreline, and the probability of a few derived markets computed on the same score matrix.
- 1X2 probabilities, which sum to 100% by construction.
- The most likely exact score, read from a matrix capped at 8 goals per team.
- The probability of over 2.5 goals and the probability that both teams score.
- The probability of a goal before half-time, calibrated on an empirical share of 44% of goals scored in the first half.
How is a team's strength measured?
A team's strength is estimated over its last 180 days of matches, with a weighting that halves the weight of a match every 180 days, corrected for the quality of the opponents faced and for the averages of its competition.
- Goals scored and conceded are blended 80% with expected goals (the provider's official xG where available, otherwise an estimate from shots on target at 0.3192 goals per shot on target, measured over 270,000 matches).
- A team with few recent matches is pulled back towards its competition average (shrinkage at 5 matches), instead of showing an extreme strength derived from three games.
How can two teams that never meet be compared?
Each domestic league is a near-closed pool whose internal matches cancel out: without a correction, the best club in Romania and the best club in Ukraine end up with the same Elo. Footlab therefore adds a pool anchor to the club Elo, updated only by cross-pool matches.
- A club's world rating is its club Elo plus the anchor of its league.
- A league's anchor moves only on European cups and international matches, with a coefficient of 24 — the single largest measured gain of the project.
- Women's clubs and youth teams have their own pools: their results do not move the anchor of the men's domestic league.
- Home advantage is worth 60 Elo points in the rating update.
Is the starting line-up taken into account?
Yes: since 9 August 2026, Footlab verifies the probable line-up on the web before each match and corrects its prediction based on the announced eleven, its experience and the individual ratings of its players.
- A line-up confirmed by the press takes precedence over one inferred from recent rotations.
- The experience of the eleven and the players' match ratings are rescaled to their league before being compared: a 7.2 rating does not mean the same thing everywhere.
- Confirmed absences (injuries, suspensions) reduce the expected attacking strength of the team concerned.
Why are matches between different leagues handled separately?
Because domestic form barely transfers: measured on the backtest, it retains only 10% of its weight on a cross-league match. It is the most expensive lesson of the project, and it is encoded as such.
- On a cross-pool match, recent domestic form is damped to 10% of its usual weight.
- In exchange, the world Elo gap weighs almost three times more than in domestic play, because pool anchoring finally made that gap comparable.
- Accuracy is measured separately on this segment, continuously, through the cross_pool column of the prediction log.
How often is the model's data refreshed?
Scores are followed minute by minute during matches, standings are recomputed hourly, and injuries as well as Elo ratings are resynchronised daily.
- A prediction is recomputed until kick-off; the last version served is the one that is logged and evaluated.
- The real result is compared with the prediction no earlier than three hours after kick-off.
- A postponed or cancelled match is never counted as an error: it is closed without a result after fourteen days.
What are the model's parameters?
The eight parameters below are the ones that weigh most on the prediction. Each was set by sweeping values on the backtest, then confirmed on a later sample the model had never seen.
| Parameter | Value | What it does |
|---|---|---|
| Form half-life | 180 days | A six-month-old match weighs half as much as a recent one. |
| Shrinkage | 5 matches | A rarely observed team is pulled back towards its competition average. |
| Expected-goals weight | 0.8 | Strength is estimated 80% on expected goals, 20% on actual goals. |
| Pool anchoring coefficient | 24 | Speed at which an entire league rises or falls in the world rating. |
| Home advantage (Elo) | 60 points | Bonus applied to the home team in the rating update. |
| Cross-league damping | 0.1 | Domestic form keeps only 10% of its weight outside its own league. |
| Totals damping | 0.8 | Corrects the overconfidence measured on extreme over-2.5-goals probabilities. |
| First-half goal share | 0.44 | Basis for half-time probabilities. |
What does the model not do?
This list matters as much as the previous one. It holds two kinds of items: what Footlab rules out on principle, and what was implemented, measured, found useless, then left at zero in the code.
- No odds, no bookmakers, no affiliate links. Footlab does not compare its probabilities with a market and does not point to any operator.
- No weather data. Neither temperature, rain nor wind enters the computation.
- No estimate of motivation or declared stakes. A dead-rubber penalty was implemented and tested from 0.05 to 0.2: rejected at every weight, left at zero.
- No referee effect. A prediction is computed before the match, and the referee is recorded on only 0.2% of upcoming fixtures (17 out of the 11,213 scheduled in the next 30 days, measured on 9 August 2026): a factor computed on that coverage would be noise presented as a measurement.
- No standalone goalkeeper effect, and no standalone defensive-absence effect. Both were tested in July 2026: the first degrades results monotonically, the second is indistinguishable from noise. Both sit at zero.
- No congestion effect beyond rest days between matches. Tested, no gain.
- No per-league correction of the draw rate. Tested, it only degrades: leagues with frequent draws are low-scoring leagues, which competition averages already encode.
- No prediction of injuries, transfers or coaching decisions.
Statistical analysis based on Footlab data (Poisson model calibrated on 17,000+ matches). Not betting advice.
Footlab (footlab.ai) is an independent software product. It is unrelated to FOOTLAB World, the indoor football centre franchise, and unrelated to Footy Labs.