Sources and methods
Where every number comes from and how it is calculated.
Where the data comes from
Every number on the site comes from one of these sources, collected through their official, free interfaces (no copying of other websites). Each has its own terms; the attribution below is what they ask for.
| Source | What we take | Competitions | Terms / credit |
|---|---|---|---|
| football-data.org | fixtures, results, half-time scores, teams, top scorers, the current coach (to confirm Wikidata) | Premier League, La Liga, Serie A, Bundesliga, Ligue 1; Championship (last completed season, shown separately on the pages of promoted teams) | data provided by football-data.org (their terms) |
| API-Football | results, half-time scores, match events (goals, cards, substitutions), venues | Liga 1 (Romania), past seasons | data provided by API-Football / API-Sports (their terms) |
| openfootball | a second, independent copy of Liga 1 result, used only to check the first source | Liga 1 (check only) | public domain |
| Wikidata | stadium locations (for travel distance), coaches with their start and end dates | teams in the top five leagues | CC0; credit: Wikidata |
| Open-Meteo | weather forecast at kick-off (temperature, rain, wind); the historical weather during past matches (archive), to measure its effect on goals | upcoming matches; played matches with a known home stadium | Weather data by Open-Meteo.com, CC BY 4.0 |
How fresh it is
How fresh the data is. Every page shows the date it was last rebuilt; results appear after the source publishes them.
- Results and fixtures are collected several times a day from the sources above; each page shows the date it was last rebuilt.
- Model estimates are frozen within the last hour before kick-off (the model runs hourly) and never change afterwards. For now the calibration page shows estimates rebuilt for past seasons (↺); those frozen in real time go into the Estimates Ledger.
How we calculate
How the numbers you see are computed, in one or two sentences each, with a link to the page where each one is shown and checked.
Elo rating
Every team gets a rating that goes up after a result better than expected and down after a worse one (home advantage 50 points, step 10). Ratings are compared only within the same league.
Model estimate (1 / X / 2, scores)
A goals model (Dixon-Coles) fitted only on matches played before each day, then checked on matches it had not seen (Brier score against a simple baseline).
Probability of events
The 8 events in the Arena and in the “Stats” window (home team scores, 3+ goals, both teams score…) come from the same model, recalibrated on past seasons so that 70 % means about 7 in 10.
Arena →
History (k of n)
Shown next to the model: how many times something happened in the last matches, with the sample size and a 95 % interval — a small sample gives a wide interval.
Expected points and season simulator
Points a team would have on average from its matches given the model's chances; the season is played out many times from the current table.
Weather and goals (measured)
Did it change the number of goals when it rained, the wind blew or it was cold? We compared the past matches by the weather while they were played, two ways: against what the model expected and against the league average. Example: a match with 2 mm of rain in the 2 hours of play counts as “rain”.
| Weather during the match | Conclusion | Matches (model / league) | Against the model | Against the league |
|---|---|---|---|---|
| Rain: dry (under 0.1 mm) | — | 1,524 / 5,128 | reference | |
| light rain (0.1–1 mm) | no visible effect | 301 / 926 | +0.09 [−0.13; +0.30] | +0.09 [−0.03; +0.21] |
| rain (1 mm or more) | no visible effect | 124 / 387 | +0.04 [−0.25; +0.33] | +0.26 [+0.08; +0.44] |
| Wind: under 20 km/h | — | 1,783 / 5,731 | reference | |
| 20–30 km/h | no visible effect | 146 / 596 | −0.30 [−0.58; −0.02] | −0.05 [−0.20; +0.09] |
| 30 km/h or more | not enough data | 20 / 114 | — | −0.17 [−0.49; +0.15] |
| Temperature: under 5 °C | no visible effect | 264 / 767 | +0.11 [−0.10; +0.31] | +0.01 [−0.11; +0.14] |
| 5–25 °C | — | 1,589 / 5,172 | reference | |
| 25 °C or more | no visible effect | 96 / 502 | −0.01 [−0.34; +0.32] | +0.08 [−0.07; +0.24] |
- Goals per match compared with the reference row (dry / under 20 km/h / 5–25 °C). “Against the model” = real goals minus the goals the model expected for that match (rebuilt walk-forward, 1,949 matches); “against the league” = real goals minus the league's average in that season (6,441 matches). The brackets are 95% intervals.
- An effect is stated only when the interval excludes 0 in BOTH methods; three factors are tested at once, so a single borderline result can be chance.
- Weather = the Open-Meteo historical archive (ERA5 reanalysis) at the match venue (Liga 1) or the home team's stadium, during the 2 hours of play: rain summed, average wind, temperature in the middle. Matches 15 Jul 2022 – 17 Oct 2026: 6,441 of the 6,571 played matches; the rest have a stadium without verified coordinates or were played in the last 7 days.
- The thresholds were fixed before looking at the results.
- Rain — rain (1 mm or more): against the league the interval excludes 0 (+0.08 … +0.44), against the model it does not (−0.25 … +0.33, 124 matches) ⇒ not claimed; to be re-checked as matches accumulate.
- Wind — 20–30 km/h: against the model the interval excludes 0 (−0.58 … −0.02), against the league it does not (−0.20 … +0.09, 596 matches) ⇒ not claimed; to be re-checked as matches accumulate.
What we don't do
What the site does not do and what data it does not have. An estimate is a probability, not a promise: a 70 % event still fails three times in ten.
- No advice on what to play or spend money on: the site describes, it does not recommend.
- Match events (goal minutes, cards) exist only where the free source provides them: today only Liga 1, imported gradually within the daily request limit. For the top five leagues we have final and half-time scores.
- No expected goals (xG), line-ups or injuries for any league in the free sources — so we do not show them rather than guess.
- Club crests and player photos are not used.
Updated 25 Oct 2026