Prediction Methodology

This page documents exactly how our predictions are produced, so you can judge them on their merits.

Inputs

The model uses each team's attacking and defensive strength, derived from goals scored and conceded relative to opposition quality, plus recent form, home and away splits, and competition-level scoring baselines.

It does not use subjective ratings, tipster opinion or market prices. Odds shown on fixture pages are for comparison only and are not model inputs.

Expected goals for the fixture

Team strengths are combined with the opponent's defensive rating and a home advantage adjustment to produce an expected goals figure for each side in that specific fixture. These two numbers are the foundation of every market we publish.

Scoreline distribution

The two expected-goals figures are passed through a Poisson distribution to produce the probability of every plausible scoreline. All published markets are sums over that single grid, which guarantees internal consistency: 1X2 probabilities total 100%, over 1.5 always exceeds over 2.5, and double chance equals the sum of its two components.

Confidence levels

Each prediction carries a Low, Medium or High confidence label. This reflects both the strength of the leading probability and the amount of data behind the two teams. Fixtures with sparse form data are capped at lower confidence even when the probability looks decisive.

Baseline and fallback predictions

When no fixture-specific data has reached us for a match — a newly scheduled game, a competition we have just started covering, or an upstream data gap — the page falls back to a competition-average baseline with standard home advantage. That is a prior, not a read on those two teams, and identical numbers can therefore appear across several fixtures in the same competition.

Baseline fixtures are labelled as such on the page, are excluded from featured picks, accumulators and value selections, and are not treated as indexable. They are replaced automatically as soon as real team data arrives.

Prediction updates and timestamps

Predictions are generated on request from the latest available data and are regenerated as form, lineups and tables update, so figures can move between your first visit and kick-off. The last-updated time shown on a fixture page reflects the data behind the numbers you are looking at.

We do not currently persist a frozen pre-match snapshot of every prediction. Until we do, we do not describe our published figures as an audited pre-match track record anywhere on the site, and we never edit a prediction after a match to make it look better.

Backtesting versus a live published record

The accuracy and calibration figures on this site are a rolling backtest: the current model is re-run over completed fixtures and its output compared with the final score. Every fixture in the window is included, so nothing is cherry-picked, but this is a measure of model behaviour, not a verified record of predictions timestamped before kick-off.

Because form data refreshes continuously, a re-run can incorporate information that did not exist before the match, which generally flatters a backtest. We therefore publish calibration — stated probability against observed outcome frequency — alongside hit rates, and we publish no profit, return or yield figures at all.

Index quality gating

A fixture page only becomes indexable once it scores highly enough on a quality gate that counts what is actually on the page: a fixture-specific model prediction rather than a competition baseline, at least three recent results for each side, a league table for the competition, per-team season statistics, head-to-head history where it exists, and at least three generated analysis points. Pages below that threshold are served with noindex,follow — crawlable and linked, but not offered to search as standalone content.

The existence of a fixture URL is never on its own a reason to index it. Baseline-only pages stay out of the XML sitemap as well as out of the index, and are not carrying advertising.

Known limitations

The model cannot see injuries, suspensions, rotation, motivation, weather or in-game red cards. It assumes goal-scoring is approximately Poisson-distributed, which slightly understates very high-scoring matches. It performs least well on cup fixtures between teams from different divisions, where data is limited.

Predictions regenerate as data updates, so numbers can move between your first visit and kickoff.