Give each sample one job
| Sample | Allowed use | Forbidden use |
|---|---|---|
| Training | Fit coefficients, trees, embeddings and preprocessing | Report final performance |
| Validation | Select features, parameters, thresholds and calibration | Repeatedly become the final test |
| Test | Estimate performance after the pipeline is locked | Tune a disappointing model |
| Live monitoring | Detect drift and operational failures | Rewrite historical predictions |
Use chronological boundaries
Football changes over time through squads, promotions, rules, providers and markets. A random split can place later observations from the same context into training while earlier observations sit in test. TimeSeriesSplit documents ordered folds in which later blocks are evaluated after earlier training blocks.
Fit the whole pipeline inside training
Imputation, scaling, encoding, feature selection, text vocabularies and calibration can all leak information when fitted before splitting. scikit-learn's common-pitfalls guide explains why transformations should be learned only from permitted training observations.
A practical schedule
- Freeze all data available through season N-2 for initial training.
- Use rolling blocks in season N-1 for tuning and stability checks.
- Lock target, features, transformations and parameters.
- Evaluate once on season N or another declared future block.
- Store every prediction before outcome inspection.
- Move into live monitoring with a predefined retraining trigger.
The season labels are illustrative. Actual boundaries should match data volume and the intended deployment.
What to report
scikit-learn's model-evaluation guide documents task-appropriate scoring. For football probabilities, publish target, cases, exclusions, coverage, log loss or Brier score, calibration, baseline results and uncertainty. Calibration guidance supports separate reliability analysis.
Leakage checklist
- Closing prices used in a model advertised as an earlier forecast.
- Confirmed lineups inserted into records before announcement time.
- Season totals joined to every fixture from that season.
- Corrected provider fields treated as if the correction existed historically.
- Team identities or competitions selected after inspecting final outcomes.
- Multiple test-period attempts with only the strongest result retained.
Football benchmark research supports declaring the benchmark and feature protocol beside reported performance.
Use a walk-forward development ledger
Record each development decision against the data it was allowed to see:
| Decision | Permitted evidence | Prohibited evidence |
|---|---|---|
| Feature definition | Training blocks | Final test outcomes |
| Hyperparameters | Training and validation blocks | Repeated final test runs |
| Calibration layer | Held-out development predictions | Final test labels |
| Release threshold | Predeclared product constraints | Best-looking test subgroup |
| Final report | Locked pipeline on test | Further tuning presented as confirmation |
TimeSeriesSplit documents expanding ordered training sets. Football seasons are not always equally spaced, so store fixture IDs and date ranges rather than relying only on row positions.
Reset the test after a test-led change
If the final period reveals a bug, fix it, but classify the old result as invalid and choose a new later confirmation period when possible. If the result inspires a new feature, that period has become development evidence. Reporting this honestly is more useful than preserving the “untouched” label after the fact.
Keep data corrections separate from model changes. A provider correction may require rebuilding every split, while a code correction may leave the source snapshot intact. The ledger should make the reason for each rerun visible and prevent repeated evaluation from becoming hidden tuning.
Continue the workflow
The model build guide turns these split roles into an executable project sequence and evidence bundle grounded in the ordered evaluation pattern documented by TimeSeriesSplit.
Continue learning
- Next guide: What Data Football AI Models Use
- Related guide: How to Build a Football Prediction Model
Assumptions and limitations
Chronological testing reduces, but does not remove, selection bias or drift. One future period can still be unusual. Repeated rolling evaluation and an untouched final period answer different questions and should both remain visible.

