How a prediction gets built
1 · Where the numbers come from
Everything is computed in your browser the moment you open the page. There is no Prediq server, no database, no account, and nothing recorded about you. Close the tab and nothing of yours persists except a cache you can clear.
Match data comes from ESPN's public football endpoints. For each of the 11 domestic leagues Prediq rates, it reads last season's final table, the current table, and this season's completed matches. It also reads the next 7 days of fixtures for those leagues and for the three European competitions — the Champions League, the Europa League and the Conference League — 14 competitions in all. Odds are taken from the same feed, wherever a bookmaker has priced the match.
The European competitions are read for fixtures only. They have no ratings of their own: a Champions League tie is predicted from the two clubs' domestic records, which is the subject of section 4. They also sit idle from roughly June to September, so for part of the year they correctly return nothing at all.
One cap is worth stating plainly, because it is the one place Prediq reads less than it could. Results are fetched a calendar month at a time, and only the most recent 5 months of the season are requested. By May that leaves the opening months of the season out of the match list. The reason it is defensible rather than merely cheaper: with recency weighting halving every eight matches, a match played thirty matches ago already carries about a fourteenth of the weight of the most recent one, so fetching August in May would add sixty-odd requests to move a rating in the third decimal place. The season-long picture is not lost either way — last season's full table and the current table are both read in full, and neither is truncated.
The page loads in two passes, which is why a card can appear with its teams and kickoff time before it has any numbers. The first pass is the fixture list, one request per competition; the second reads the tables and results the model is fitted from. The model is then fitted once, so a card goes from “working out the prediction” straight to its final figures. No probability shown here is ever revised while you read it.
One deliberate exclusion: the current league table is used only for the list of teams and their names, never for strength. Early in a season that table can be contaminated by cup results — while building this, Arsenal's Premier League row showed a 3–0 win over Coventry City, which was a cup tie. Strength is computed from the match list instead, where a fixture against a side outside the division can be identified and discarded. Prediq threw out one such match per league in testing.
The W/D/L strip on each card is read from that same match list rather than from ESPN's own form field, so what you see there is exactly the run of results the ratings beside it were fitted on. Hover any mark for the scoreline.
Requests are cached in your browser, so a repeat visit usually makes no network requests at all.
- Leagues rated from their own results
- 11
- Competitions listed for fixtures
- 14
- Days of fixtures shown
- 7
- Months of results read, at most
- 5
- Requests allowed in flight at once
- 4
- A finished month is cached for
- 90 days
- Last season's table, cached for
- 30 days
- Fixtures and odds, cached for
- 30 min
2 · The model, in four steps
-
Rate every team's attack and defence
Each team gets two numbers. Attack is how many goals it scores relative to the average side in its division; defence is how many it concedes, on the same scale. 1.00 is exactly average. An attack of 1.20 means twenty per cent more goals than a typical side in that league; a defence of 1.20 means twenty per cent more conceded, so for defence, lower is better. Recent matches count for more, halving in weight every 8 matches.
There is a circularity to escape here. Scoring three goals against a strong defence says more than three against a weak one — so a team's rating depends on its opponents' ratings, which depend on theirs. Prediq resolves it by repetition: rate everyone, then re-rate everyone against those ratings, 5 times over. The numbers stop moving after about three passes, and every pass reads from a frozen snapshot of the previous one, so the order teams are visited in cannot change the answer.
Last season is not thrown away. It enters as 6 virtual matches against an average opponent on neutral ground. In August those dominate; by twenty matches played the current season has taken over on its own, with no switch to flip. A promoted side has no record in the division, so it starts at 0.85 attack and 1.15 defence — roughly where promoted teams historically land. The same defaults apply to any side with fewer than 10 games in that league last season, since a partial record is not a reliable prior.
That default is now cruder than it needs to be, and saying so is fairer than leaving you to find out. Prediq rates the Championship, so a promoted English club's actual second-division record is already loaded — and the flat default is still applied to it instead. Using the real record, scaled across divisions the way section 4 describes, is a known improvement that has not been made yet. Until it is, treat a newly promoted side's first few weeks as the weakest ratings on the site.
-
Turn ratings into expected goals
For each side, multiply four things: the league's average goals per team per game, that team's attack, its opponent's defence, and a venue factor. Home sides score about eleven per cent above the league mean and away sides about eleven per cent below (1.11 and 0.89), and once enough of the season has been played Prediq measures that season's actual home effect rather than assuming the long-run one. The two factors always sum to 2, so home advantage tilts a match without inventing goals in it.
-
Build the full scoreline grid
Expected goals are not a prediction — a match ends in whole goals. So Prediq computes the probability of every scoreline from 0–0 up to 9–9 using the Poisson distribution, giving a grid of 100 cells. Stopping at 4–4, as many simple models do, throws away between three and eight per cent of the probability in an ordinary match and around eighteen per cent when a strong side meets a weak one — exactly the matches where the error would be most visible. A ceiling of 9 leaves under a fifth of one per cent unaccounted for even at the extremes, and the grid is then rescaled so it sums to exactly 1.
Two independent Poisson distributions have a known flaw: they under-predict draws and low-scoring games, because real matches are not independent — the moment one side scores, both teams change how they play. The Dixon–Coles correction adjusts the four lowest-scoring cells for this, nudging 0–0 and 1–1 up and 1–0 and 0–1 down. Prediq uses -0.06, which is deliberately milder than the −0.13 usually reported from fitted models, because Prediq has not backtested its own value and a conservative correction is the safer error.
-
Read every answer off the same grid
A home win is the sum of every cell where the home side scores more; the draw is the diagonal; over 2.5 goals is every cell totalling three or more; both teams to score is every cell where neither number is zero. This is why the figures on a card can never contradict each other — they are four views of one grid, not four separate guesses.
The likeliest scoreline is simply the largest single cell, and it is often a draw even when one side is clearly favoured. That is not a contradiction: the favourite's win is spread across many different scorelines, while 1–1 concentrates in one. Displayed percentages are rounded by the largest-remainder method so they sum to exactly 100 rather than 99 or 101.
3 · What the confidence meter means
Confidence describes how clearly the model separates the outcomes, not how likely it is to be right. It is the gap in percentage points between the likeliest outcome and the second likeliest.
That gap is then capped by how much of the current season actually sits behind it, using the less-observed of the two teams. A twenty-point gap in August rests almost entirely on last season, so it cannot earn the top rating no matter how wide it looks. This is why nearly every card reads low or medium in the opening weeks.
- High — gap of at least
- 30 pts
- Moderate — gap of at least
- 18 pts
- Medium — gap of at least
- 8 pts
- Low — anything below that
- —
- High requires this many matches played
- 12
- Moderate requires
- 6
4 · Ties between different leagues
A rating of 1.20 does not mean the same thing in Ligue 1 as in the Premier League, because it is measured against a different set of opponents. For a European tie between teams from different leagues, Prediq scales both ratings by a league quality coefficient before comparing them.
These coefficients are an informed judgement, not a measurement. They are the least rigorous numbers on the site and they are stated here so you can discount them as you see fit. The Premier League is the 1.00 baseline.
- Premier League
- 1.00
- La Liga
- 0.98
- Serie A
- 0.96
- Bundesliga
- 0.96
- Ligue 1
- 0.92
- Primeira Liga
- 0.86
- Eredivisie
- 0.85
- Championship
- 0.82
- Belgian Pro League
- 0.81
- Süper Lig
- 0.80
- Scottish Premiership
- 0.76
Two of these deserve more scepticism than the rest. The Championship is a second division rated on the same scale as first divisions, so 0.82 is asserting how far below the Premier League it sits — a claim with no measurement behind it. And the Scottish Premiership is a twelve-team league where two clubs beat the other ten most weeks, which stretches its internal ratings wider than a balanced division's; a single coefficient cannot express that.
The coefficient is paired with a second adjustment for how freely each league scores, applied as a square root to each of the two ratings. That detail matters for one reason worth stating: for a match between two teams from the same league, both adjustments cancel out exactly. A Premier League fixture is therefore computed identically whether it is reached through the domestic list or a European one, and these judgement-call numbers can only ever affect a genuine cross-border tie.
5 · What the model cannot see
Prediq reads goals. That is all it reads. Everything below is invisible to it, and every one of these can matter more than the ratings do:
- Injuries and suspensions. A side missing its two leading scorers rates exactly as it did with them.
- Transfers. A team that sold its striker in July carries last season's attack rating into August regardless.
- Team selection. A rotated side before a European night looks identical to a full-strength one.
- Managerial change. A new appointment three days ago has no effect on any number here.
- Motivation. A mid-table team safe in May and a side fighting relegation are treated the same way.
- Fixture congestion, travel, and weather. None of it is in the feed, so none of it is in the model.
- What happened inside a match. A red card on six minutes, a penalty shootout, a game overwhelmingly dominated but lost 1–0 — only the final goals are read.
And the honest limit that matters most: Prediq has no measured accuracy figure yet, because not enough matches have been scored. The parameters on this page are reasoned defaults drawn from published work on football modelling, not values fitted against a backtest of past seasons. The model has been tested extensively for correctness — that the probabilities sum to one, that the ratings average to one, that the maths converges, that a stronger side is always favoured over a weaker one — but correctness is not accuracy. Treat the output as a well-built estimate rather than a proven one. What has changed since this page was first written is that the evidence is now being collected in public, one match at a time; the next section is how. No accuracy claim will appear on this site before it has been measured.
6 · The record, and how it is kept
A prediction site that keeps no record is unfalsifiable, and an unfalsifiable prediction is entertainment. So every prediction Prediq makes is written down before the match, kept unchanged, and published where anyone can check it — on the record page, and as plain files in the public repository this site is built from.
-
Written before kickoff
A scheduled job runs every three hours and freezes the prediction for any match starting within 24 hours. Not a week out: the archived numbers should be the ones match-day visitors actually read. At this lead time every fixture is offered to the writer eight times before it starts, so several runs would have to fail in a row to lose one.
-
Never edited afterwards
A record is written once. When the match finishes the final score is attached and nothing else is touched — the probabilities stay exactly as they were. Because each write is a commit in a public repository, the history itself is the audit trail: anyone can confirm a prediction was published before the match it describes, without taking our word for it.
-
The verdict is derived, not stored
A record holds what we claimed and what happened. It does not hold
correct: true. Whether a call was right is recomputed every time the record page is read, from the stored numbers, by one function. A stored verdict would be unfalsifiable in exactly the way this section exists to avoid, and it would let the per-match verdict drift away from the site-wide figure. -
Stamped with the model that made it
Each record carries the model revision (1.0) and an automatic fingerprint of every parameter on this page. Retuning the model therefore cannot quietly rewrite its own history: old predictions stay attributed to the version that actually made them, and one revision showing two different fingerprints is the archive reporting that something changed and was not declared.
Each row on the record page ends with gave it and a percentage: the probability the model put on the thing that actually happened. It says more than the tick does. A miss where the model had the outcome at 30% is an ordinary day for a probability — three in ten arrive. A miss at 4% is the model having been wrong about the match. And a hit at 31% is nearer luck than skill, yet it is marked exactly like any other hit, because the mark on its own was never the interesting part.
Counts appear from the first settled match, because eight right out of twelve is a fact and hiding it would be worse than showing it. A percentage does not appear until 50 matches have settled. Twelve coin tosses land eight-or-better about one time in five, so a hit rate over a handful of games is mostly noise wearing the clothes of a measurement. Calibration — whether calls made at 70% actually land near 70% — needs far more than fifty, and will get its own page rather than being squeezed into this one.
- Prediction frozen before kickoff, within
- 24 h
- Settled matches before a rate is published
- 50
- Days of record the page offers
- 7
- Current model revision
- 1.0
Two things are deliberately kept out of a record: anything the model derived that could be recomputed later, and anything about the teams beyond their names. The one exception is the bookmaker's price, which is stored because it is otherwise lost — the data source deletes odds the moment a match finishes, so a model-versus-market comparison can only ever be built forward from prices captured before kickoff. That is also why that comparison does not exist yet: it has to accumulate.
7 · The bookmaker column
Where a match has been priced, the card shows a mkt field
with the bookmaker's implied probabilities beside the model's. Betting
odds carry a built-in margin, so the three implied probabilities sum to
more than 100 — that excess is the bookmaker's edge, and Prediq
divides it out first so the two views are comparable. Hover the field to
see the provider and the margin removed.
The market is never an input to the model. Blending the two would produce better-looking numbers and destroy the only useful thing here: the ability to see where an independent model and the market actually disagree. When that gap exceeds 6 percentage points, a card says so in plain words. A disagreement is not a prediction that the market is wrong; bookmakers price injuries, team news, and money flow, all of which Prediq cannot see. Read it as a prompt to look closer, and note that at most 3 insight lines appear under any match, chosen by how much they actually tell you.
There is a limit here that is worth being exact about, because it decides
what this site can ever prove. The odds vanish from the feed the moment
a match finishes. Checking a full month of last season across all
fourteen competitions found the results intact and not one priced
fixture — the prices exist only while a match is still to come.
Prediq therefore cannot go back and score itself against the bookmaker on
seasons already played, and any comparison claiming to have done so would
be reconstructing prices it never saw. A model-versus-market record can
only be accumulated forwards, by recording each price before kickoff and
keeping it. Until that record exists and is long enough to mean something,
the mkt field is a comparison you can make yourself on a
single match, and nothing more.
8 · Responsible use
These are probabilities, not tips. A prediction given at 70% is meant to lose roughly three times in every ten — if it never lost, the number would be wrong. A model that is well calibrated on average is still individually wrong constantly, and no run of correct calls on this site would be evidence of anything else.
Prediq publishes statistical output for information and interest. It is not betting advice, it is not a tipping service, and it should not be treated as a reason to stake money. Nothing here accounts for your circumstances. Betting is restricted to adults, and where you are matters — the law differs by country and by state.
If gambling has stopped being entertainment for you or someone close to you, support exists and it is worth using early rather than late. In the United Kingdom, BeGambleAware offers free confidential advice at begambleaware.org. In the United States, the National Problem Gambling Helpline runs on 1-800-522-4700, by call or text, at any hour. Most other countries run an equivalent service.