1. Data
Results, fixtures and injury reports come from the API-Football dataset. Pre-match market prices come from football-data.co.uk (Friday 1X2, Over/Under 2.5 and Asian-handicap prices) plus our own odds-snapshot poller — 9.67 million timestamped snapshots and counting. Expected-goals features span a seamless three-source timeline (2011-13 shot-based event model, 2014-21 Understat, 2022+ API xG; cross-source correlation 0.795), so no season in the training window is xG-blind. All sources are stored as read-only snapshots, so every published number can be re-derived later.
Coverage: 69 competitions under one unified whitelist — the big five and their second tiers, continental cups, senior men's national-team tournaments, and more — 196,577 completed matches in total. The former Tier-A/B/C hierarchy no longer gates predictions: its signal was absorbed into the feature engineering (per-league shrinkage and a league categorical), and predictions are published for every competition on the whitelist.
2. Model
1X2 core — LightGBM three-class gradient boosting on 30 frozen features: Elo difference and form, rolling league tables, home/away attack-defence estimates, rest days and xG estimates, plus 5 market features (Friday-price implied 1X2, Over/Under 2.5, Asian handicap) and 2 home-advantage heterogeneity features. Trained on all completed seasons up to 2024, with hyperparameters chosen on validation RPS.
Match-score engine — a Dixon-Coles bivariate Poisson fitted per league (365-day time decay, low-score correction estimated per league), then market λ injection: the total-goals expectation is matched to the Friday Over/Under price and the goal difference is shifted onto the Asian-handicap line. The Dixon-Coles grid and the market-anchored grid are blended at b = 0.7 (frozen on validation).
Honesty about the market: market features are the single largest accuracy gain (+1.4pp). On held-out data our 1X2 probabilities are statistically indistinguishable from the closing market (Diebold–Mariano t = 0.59). The value we add is score-level markets, published probabilities with explicit confidence gating and a fully transparent methodology — not beating the market on 1X2.
Confidence gating: a match is flagged high-confidence when its maximum probability clears a threshold chosen only on validation data. Every accuracy number we publish is bound to its coverage — 62.4% @ 44%, 67.7% @ 30% and 72.1% @ 20% coverage on the 2026 test segment.
3. Key parameters
| Parameter | Value | Meaning |
|---|---|---|
| ELO K-factor (clubs) | 20 | Per-match update; 30 for continental finals; scaled by goal difference (cap 3) |
| ELO home advantage | +65 | Global club value; ratings regress one-third toward 1500 between seasons |
| DC time-decay half-life | 365 days | Per-league Dixon-Coles fit on seasons up to 2024 |
| Market λ blend (b) | 0.7 | Mix of Dixon-Coles grid and market-anchored grid, frozen on validation |
| LightGBM configuration | leaves 31 / lr 0.05 | Pinned configuration (lr 0.05, 31 leaves); early stopping peaked at 56-75 rounds, so the model is trained far below its 800-round budget; a 5-seed bagging check showed only noise-level gains, so a single model ships |
| Market features | 5 | Friday 1X2 / Over-Under / Asian handicap implied probabilities — largest single gain (+1.4pp) |
| Confidence gate | val-selected | High-confidence threshold chosen only on validation; accuracy always reported with coverage |
| Training window | ≤ 2024 | Trained on completed seasons 2011-2024 with feature history reaching back to 2008; validation 2025; one-shot test 2026+ |
4. Out-of-sample protocol
Three locked splits: training uses every season up to 2024; the 2025 validation segment is the only data any tuning decision ever saw; the 2026 test segment was evaluated exactly once (49.6% / RPS 0.2001 on the club opening sample — statistically level with the market). Features are snapshotted strictly before kickoff, rolling tables are recomputed historically, and closing prices are never fed into the model. The headline numbers we publish come from the validation segment: {n} big-five matches and {m} international matches, no sampling.
Metrics: Ranked Probability Score for 1X2 is the primary metric (random guessing ≈ 0.222, perfect = 0). Top-pick accuracy is a gated product metric and is always paired with its coverage; multi-class Brier score and log-loss are auxiliary.
5. Live prediction log
Every published prediction is archived before kickoff. When the match finishes, the result is reconciled automatically against the stored probabilities — nothing is deleted or edited.
Per-match archive (v4-Pro blended probabilities, 2025-26 out-of-sample)
A per-match archive of the 2025-26 out-of-sample blended probabilities of the production model, kept for transparency. The headline metrics above come from the same frozen evaluation; going forward this archive is rebuilt from live v4 predictions as they accumulate.
7. Limitations
Full-sample 1X2 accuracy has a physical ceiling set by market information (53–55% for the big five) — v4-Pro operates at that line: the blend trades a marginal accuracy edge for calibration and scoreline quality. Claims of 60% full-sample accuracy are not achievable; that is why every accuracy number we publish is bound to a segment and a coverage. Remaining gains depend on new data sources (early-season xG history, squad market values), not on modelling tricks.
Probabilities are estimates, not guarantees. Nothing on ScoreLens.net is wagering advice.
8. Model vs market
Bookmaker prices are the best publicly available probability estimates in football — not an answer we copy, but the benchmark we measure ourselves against. We take closing 1X2, Over/Under 2.5 and BTTS prices, strip the bookmaker margin (no-vig), and compare them with our own probabilities for the same fixtures.
We report both the size of the disagreement and its direction. Disagreeing at random is noise; disagreeing in the same direction on the same market every time is bias. The verdict column tests for that explicitly.