There is math
behind the prediction.
LigLab’s predictions are not the guess of a chatbot or a language model. Every bot is an explicitly defined statistical model, and every reasoning sentence is generated from the model’s own numbers. More importantly: no idea enters the product until it has proved itself on seasons it has never seen. This page explains how we work.
Six principles
Football is a noisy game: it is easy to find patterns in the past, hard for a pattern to know the future. To avoid fooling ourselves, we work by these rules.
1Testing without seeing the future
On every match day the models are rebuilt using only matches played up to that day, the day’s matches are predicted, and only then are the results revealed. The model has no way of seeing the result of the match it is predicting.
2Locked test seasons
The last three seasons (2023/24–2025/26) are not used during development. Settings are tuned on older seasons; a new component is tested on the locked seasons only once.
3Pre-registration
A test’s rule, metric and pass condition are written before the result is seen. The rule is not bent to fit the result; an idea that fails the condition does not enter the product, however attractive it is.
4Probability, not hit rate
Of the matches we call “70%”, about 70% should really come true (calibration). That is why we measure the whole probability distribution, not a single pick: Ranked Probability Score (RPS) and log loss.
5A record that never changes
The bots’ track record is open in the app and is never corrected afterwards. A published weekly prediction is locked; when the match ends, points are calculated from the prediction the user saw.
6No unmeasurable claims
Every number comes from a measurement. When we cannot find a pattern, we say so too; you can find the ideas that were tried and did not make it into the product below.
Models
Seven bots, seven models that read football from different angles. Consensus combines them.
Each team has an attacking and a defensive strength; the number of goals in a match is modeled with a Poisson distribution (Dixon–Coles). The weight of older matches decays over time; the fact that low scores such as 0–0 and 1–1 occur slightly more often than expected is handled with a separate correction. This is Goal Counter’s method.
Producing shots on target is a more stable measure of strength than goals: a lucky win does not show up in the shot count. Sharpshooter blends strength with shots-on-target data to filter out luck.
Elo strength, updated after every match. A better-than-expected result adds strength, a worse one takes it away. This is Rating Keeper’s method.
Form Watcher puts weight on recent weeks. Points Hunter and Upset Seeker make different decisions from the same probabilities: one emphasizes prediction-league points, the other the chance that the favorite loses.
It combines the components’ probabilities with a learned layer (multinomial logistic regression); it also uses context such as rest time, big matches and early-season uncertainty. The layer is retrained on every match day using past matches only.
When line-ups are announced, we measure how much weaker the starting 11 is than the team’s usual 11, and the probabilities are updated accordingly.
In numbers
On the locked test seasons (2023/24–2025/26, 1,028 matches), on matches the models never saw.
European leagues
In the Premier League, La Liga, Serie A and Bundesliga, Consensus runs its league-independent core: goal model ×0.7 + Elo ×0.3 plus the learned layer. The probable starting 11 was added to this: the start-of-season market value of the team’s starting 11 from its previous league match. In a separate locked test it lowered the combined RPS of the three leagues from 0.1959 to 0.1947, in the same direction in all three leagues and all three seasons; accuracy did not change. The same test also passed in the Bundesliga, but the effect is weaker and based on a single season; the probable-starting-11 version goes live there once it has been separately verified. The big four and suspended players do not enter the model in these leagues; suspensions appear on the match card for information only. None of Consensus’s settings were tuned for these leagues. The other bots also run in these leagues; the settings of Goal Counter, Sharpshooter, Form Watcher and Rating Keeper were chosen separately for each league and beat the Süper Lig settings in a separate locked test (all four bots in the big three leagues; in the Bundesliga only Form Watcher, the others use the Süper Lig settings). In Europe, the three model bots all chose to trust a longer history than in the Süper Lig. The bots’ draw and upset rules are the same as in the Süper Lig; a league-specific rule failed its test. The numbers below are the core’s locked test.
This season (2026/27), including the weeks before launch, every match was predicted using only matches before it; published predictions are never changed afterwards:
End-of-season odds are calculated every day by playing out the remaining matches 10,000 times (ranking: points, goal difference, goals scored). Over 840 team-seasons from 2012/13 to 2025/26 (from weeks 11, 19 and 28), this method clearly beat the baseline that treats all teams as equally strong; title, top-3 and relegation probabilities were also consistent with the observed rates. Each week’s prediction is recorded before that week’s matches start; the app’s screen for each week shows the prediction as it was that day.
Probabilities in the match detail
Every extra probability you see in the app was tested with the same discipline.
Half by half
About 56% of goals come in the second half, and goal rate rises throughout the match. The first-half result, first team to score and half-time/full-time probabilities are derived from Consensus’s expected goals and the score state: a team that trails at half-time scores 12% more goals in the second half. In the locked test it beat the league average on all four measures.
Most likely scorers
The player’s share of team goals while on the pitch (shrunk toward the league average when data is thin) × expected minutes × the team’s expected goals. When the team scores, one of the three most likely players is the scorer 59% of the time; for three randomly chosen players it is 18%.
Suspended players
We did not assume the card-suspension rule; we learned it from the TFF’s official match records: in the match after every 4th yellow card of a season the player is absent from the squad 96–100% of the time, and after a red card 94%. With this rule, 96% of the players we call “suspended” really do not play.
Wisdom of the crowd
The crowd’s average prediction is often better than individual people. To prevent herding, the crowd’s prediction becomes visible only after you have saved your own; it is not shown at all with fewer than 20 predictions. The crowd’s combined prediction and Consensus compete on an open track record under the same scoring rule.
What we learned from the data
Some ideas proved themselves, some did not. We write down both.
Players who would be suspended after one more yellow card get noticeably fewer cards: 3 points below expectation at that point. The pattern was found in older seasons and repeated exactly in seasons never seen.
Teams that change coach recover over the next five matches; but teams that were doing equally badly and did not change coach recover by exactly the same amount. That is why the bots give no extra credit for “a new coach has arrived”.
A team’s tendency to score its goals in the second half does not carry over from one season to the next (correlation ≈ 0). That is why half probabilities are computed from the match’s expected goals rather than from team-specific tendencies.
About 7% of matches end 0–0; the probability Consensus gives matches the observed rate statistically.
The accuracy of “will not play” information extracted from sports news fell below our pre-set 85% condition and caught only a small share of the missing players. We removed it.
In ten seasons of official records, referees clearly differ in the number of cards they show. But in the home side’s result, in the results of big teams, and in goals and penalties, differences between referees could not be told apart from chance. Referee information was not added to the prediction.
We simulate the remaining matches 10,000 times and calculate title, top-three and relegation probabilities. In the three Süper Lig seasons it was better than the baseline that only looks at the league table, but because the sample is small the probability that the difference is not chance stayed at 86% (the condition was 90%). We tested the same method on never-used data from 14 seasons of England, Spain and Italy (840 team-seasons): it clearly beat the baseline in every league and at every point of the season; of the teams it gave an “84% chance of winning the title”, 85% won it. Confirmation for the Süper Lig will be done when the 2026/27 season ends.
We calculate in-play probabilities from a goal rate that changes with the minute and the score: goals pile up toward the end of the match and the trailing team scores about 10% more. In the Süper Lig it beat the simple calculation on accuracy but gave the draw less often than it really happens (23.8% predicted, 26.2% actual). Without changing the settings learned from the Süper Lig, we tested it on 5,008 matches from England, Spain and Italy: it beat the simple calculation again, and at the 60th minute the home, draw and away probabilities matched the observed rates to within 1.5 points. The draw gap may be specific to the Süper Lig; we will look at it again in the Süper Lig when the 2026/27 season ends.
We added the weight of regular players known to be suspended before the match to Consensus. The effect is small, but over the three never-seen seasons (2023/24–2025/26) the improvement in both ranked probability error (0.1917 → 0.1915) and log loss (0.9668 → 0.9661) had a probability of not being chance above 95%; our pre-set condition was 90%. Suspension information is used only when the TFF records are up to date.
The actual line-up is announced about an hour before the match; the weekly prediction could not see it. We used the team’s starting 11 from its previous league match as a proxy: injuries often last several weeks. Over the three never-seen seasons (2023/24–2025/26) the ranked probability error fell from 0.1915 to 0.1905; for both this error and log loss, the probability that the improvement is not chance passed our pre-set 90% condition. The effect is small and did not raise match-result accuracy; the gain is in better-calibrated probabilities.
For every match we measured with the season simulation: how many points does winning versus losing this match change the team’s title, top-places or relegation probability? When the two teams’ stakes differ a lot (for example a team playing to avoid relegation against an opponent with nothing left to play for), the side with more at stake takes about 0.4 points per match more than expected. This pattern points the same way over 14 seasons of England, Spain and Italy and in five lower leagues. But its contribution to the prediction is small: in five never-used lower leagues (16,960 matches) the probability that the difference is not chance stayed at 93%; the condition was 95%. So it did not enter the product. The setting is frozen; it is monitored in the shadows with new matches in 2026/27, and the decision comes at the end of the season.
Predictions are wrong more often for newly promoted teams. We tried two ideas: having the model learn these teams faster in the first weeks, and pre-season squad strength from player ratings in football video games (ratings were only used after the game’s release date). Neither improved the prediction on never-seen seasons.
All were tested. Either there was no effect at all, or a signal seen in older seasons did not repeat in newer seasons.
Data
Match results, shot statistics and line-ups come from publicly available football data (in the European leagues also results, shots and fixtures); cards, substitutions, head coaches and disciplinary decisions come from the Turkish Football Federation’s official match records and PFDK decisions. Users’ personal data does not enter the models; no bot uses betting-odds data.
Football is a game of probabilities: even the best model gets about half of the matches right. LigLab’s goal is not certainty but to be measurably the most consistent.
Got an idea?
Is there something you think affects predictions in football: a statistic, a habit, a hunch? Write to us and we will test it. Every suggestion is judged with the discipline described here: first we look at older seasons, and if it looks promising, the rule is written in advance and tested once on seasons never seen. We share the result on this page, whether it works or not.
[email protected] →
Subject: “LigLab experiment suggestion”. Briefly describe your idea and why it might work.