The prediction pipeline
- Define the target. State whether the output is a regulation-time result, goal count, both-teams-to-score event or another settled outcome.
- Set the cutoff. Choose the historical moment the prediction represents.
- Assemble inputs. Join teams, competition, form, ratings, events, availability or prices using records known by that cutoff.
- Transform features. Apply rolling windows, encodings and scaling inside the training pipeline.
- Fit a model. Estimate parameters using earlier fixtures only.
- Calibrate and evaluate. Test probabilities on later fixtures against declared baselines.
- Publish and monitor. Store the model version, prediction time, inputs, output and later settlement. scikit-learn's common-pitfalls guidance supports the leakage-safe transformations, and its calibration guide supports the probability checks in this sequence.
scikit-learn's common-pitfalls guide documents leakage and inconsistent transformation risks. Football model-evaluation research shows why algorithms must be compared within one benchmark design.
A probability is not a verdict
An illustrative 52% home-win forecast means that the system assigns 0.52 probability under its current inputs and model. It does not say the home team will win, that 52% is objectively true, or that any price is attractive. Those are separate outcome, calibration and market questions.
| Layer | Question to ask |
|---|---|
| Data | Was every value available at the stated cutoff? |
| Target | Does it match the visible market and settlement period? |
| Model | Which version and parameters produced the number? |
| Calibration | Do similar probabilities occur at similar frequencies? |
| Price | When and where was the comparison price captured? |
| Monitoring | What happens when an input is missing or delayed? |
Calibration guidance supports reliability checks across groups of forecasts, rather than judging probability quality from one result.
Training and live use are different
During development, labels are known and models can be compared retrospectively. During live use, future labels are absent, inputs may arrive late, and provider records can be corrected. The production pipeline must reproduce the exact historical transformation without using the correction or final state of a record too early. TimeSeriesSplit provides one ordered evaluation pattern.
Attribution matters
An application can integrate probabilities produced by another provider. In that case the provider owns claims about the underlying model, while the application owns its mapping, display, price comparison and reporting. The Sportmonks prediction documentation is an example of provider-level capability documentation.
Minimum release record
Preserve target, competition scope, data cutoff, feature version, model version, training window, validation design, final test period, calibration method, prediction timestamp and failure behaviour. Without that record, a strong result cannot be reproduced or diagnosed.
Trace one forecast end to end
Use a single fixture to test the pipeline without using its result. Freeze a cutoff, then export the exact provider rows, transformations and probability vector visible at that moment. The trace should answer:
- Which target and settlement period does the output represent?
- Which input records were accepted, rejected or missing?
- Which feature and model versions transformed them?
- Did the output pass normalization and range checks?
- When was it stored and when was it published?
- Which later record settled the target? scikit-learn's common-pitfalls guidance supports the information-boundary and transformation checks, while calibration guidance supports validating the stored probability output.
scikit-learn's common-pitfalls guidance supports preserving one fitted transformation path between training and prediction. A trace that depends on querying today’s corrected history is not a reconstruction of what the live system knew.
Distinguish three kinds of change
A probability can move because new evidence arrived, the feature pipeline changed, or the model version changed. Store those causes separately. A lineup update under the same model is an information update; a retrained model on unchanged inputs is a methodology update. Combining both under one unexplained “AI updated” label prevents meaningful comparison.
For reader-facing output, show the forecast time and target first. Technical detail can follow, but the reader should never have to infer whether a number is pre-match, live, provider-supplied or produced by a changed model. Sportmonks' prediction documentation illustrates why provider output and predictability metadata require explicit attribution.
Continue the workflow
Continue with what data football models use to assign a timestamp, provenance record and missing-data rule to each input family.
Continue learning
- Next guide: How Football Prediction Models Handle Injuries
- Related guide: Machine Learning for Football Prediction
Assumptions and limitations
This is a general pipeline, not a claim that every service performs each stage correctly. Different providers expose different data and prediction products. Forecast quality can change after drift, competition changes or pipeline failures.

