20:58: the calculation starts. 21:04: it is already too late.
A match kicks off at 21:00. An initial prediction is published at 20:45. At 20:58, a program starts a new analysis and finishes at 21:04. Which version should count in the historical record?
The first one. The new calculation began before kickoff, but its result was not available in time. Presenting it later as a pre-match prediction would change what had actually been offered.
This hypothetical case captures a practical challenge in sports predictions: starting a calculation before the match is not enough. Its result also needs to be published before kickoff.
Enlarge the diagram in a new tab
The issue extends beyond football models. It arises whenever we assess a past decision, whether a weather forecast, a sales estimate or a financial prediction. The question is the same: what could actually have been known at that point?
Temporal leakage: when future knowledge enters the past
Imagine recalculating today a prediction for a match played last Sunday. We know the score, the standings have changed and the teams’ statistics have been updated. A program can produce a number, but that number may no longer represent what it would have predicted before the game.
This is the principle of temporal leakage: information unavailable at prediction time influences the calculation or its evaluation.
The final score does not even need to appear directly in the inputs. An average that already includes the fixture, standings updated after its result or odds collected too late can be enough.
Enlarge the diagram in a new tab
The relevant boundary is not always kickoff. If we want to evaluate a prediction published at 18:00, an update received at 20:00 is already too late to reconstruct that prediction, even when the match starts at 21:00.
Three related risks follow: using future data, replacing an old prediction with a recent calculation, or applying new selection criteria after seeing which old matches went well. These can make historical performance look better without improving the ability to predict upcoming fixtures.
Calculated, saved and published are different moments
A prediction’s timestamp therefore needs a question: what does it describe? The start of the calculation, its completion, a saved file or the moment the result became available? These events can be minutes apart.
Consider the 20:58 calculation again. Even if every input was fixed at the start, a result published at 21:04 does not become accessible at 20:58. The start time cannot be used to backdate publication.
The situation must be checked at the end of processing, when publishing. If the boundary has passed, the new version must not replace the one already available. If there was no earlier version, the system has to accept a missing prediction.
What if saving the prediction itself crosses kickoff?
An operation may begin just before 21:00 and finish just after it. If we cannot establish that it was complete before kickoff, that uncertainty must remain visible. The new version must not be presented as a confirmed pre-match prediction.
A program interruption calls for the same care. Finding a result after restarting does not prove that it was published in time.
The score changes. The retained prediction stays the same.
A useful historical record brings together what was predicted and what actually happened. The final result arrives after the match and must naturally be added or corrected. That does not justify recalculating the original probabilities.
Take an illustrative example: a 52% home-win probability, 27% draw and 21% away win. The match ends 1–2. The home pick loses; the initial distribution is still the one that should be evaluated.
Enlarge the diagram in a new tab
One defeat does not, by itself, show that a 52% probability was wrong. It shows that a probability is not a certainty. Reliability is assessed across comparable situations, as we explain in our article on probability calibration.
Badges and selections are part of the record too
Keeping the numbers is not enough if new thresholds then change which old fixtures appear in a “best picks” history. The decisions accompanying publication also matter: the chosen market, the badge awarded and membership of a selection.
Testing a new rule on old fixtures is still useful. It simply needs to be identified as a retrospective simulation, separate from what was actually offered at the time.
Postponements and schedules require care too
A game may be delayed or rescheduled. A provider may correct its calendar or report the start of play later than expected. These updates must be handled without erasing the earlier sequence of events.
A postponement known before the deadline can allow upcoming publications to be adapted. One discovered after the previous start time must not, by itself, reopen predictions automatically. This conservative choice can mean there is no new version for a rescheduled fixture.
Time zones add another challenge: 21:00 in Paris and 21:00 in London are not the same instant. During daylight-saving changes, some local times even occur twice. Comparisons therefore need an unambiguous instant with its time zone, rather than just a displayed hour.
We must also distinguish when a fact occurred from when it became known. A correction received on Monday about Sunday’s game was not part of the information available on Sunday.
How Foresportia addresses these risks
At Foresportia, we have included these situations in our prediction controls. The aim is to retain a faithful record of what was offered while continuing to update sports results.
- Check the fixture and its start time. The match must be identified unambiguously and schedule changes taken into account.
- Check at the end of processing. A new calculation must not replace earlier values if the match started while it was running.
- Retain published decisions. Probabilities, badges and selections must keep their historical meaning as models and rules evolve.
- Update sports facts separately. Adding a score is a way to evaluate a prediction, not rewrite it.
- Test the difficult cases. Automated tests simulate processing that crosses kickoff, partially missing old values and an unreadable previous archive.
These controls do not make matches more predictable. Their purpose is to keep evaluation tied to the predictions retained, including the ones that did not work out.
Sometimes an unknown value must stay unknown
An old value may be missing, or it may survive without sufficient evidence of pre-match publication. These are different situations, and neither is resolved by running today’s model again.
Adding a new market today does not mean it was offered six months ago. Historical records can contain gaps and different levels of evidence, particularly in older data.
Enlarge the diagram in a new tab
We therefore need to accept “unknown” when the available evidence does not support a conclusion. Conversely, the absence of an archived row does not automatically prove that no prediction was ever published.
A protected record must retain its values, while a contradiction discovered later must remain visible. Transparency also means preserving those limits rather than making the history appear artificially complete.
Preserving predictions does not replace checking the data
A perfectly archived prediction may still have been calculated using information that arrived too late. Preventing temporal leakage therefore also starts before publication.
To evaluate a model, we need to test it on fixtures later than those used for training, calculate team form without including the game being predicted, and check when every input was actually available.
Chronological splits and statistics based on preceding fixtures are among the precautions present in our learning processes. They complement publication controls; they do not replace examining sources, late corrections and the different variables used.
The scikit-learn documentation on data leakage explains this general principle: evaluation must not benefit from information unavailable at prediction time.
A credible history also keeps the mistakes
Highlighting a successful prediction is not enough to assess a model. What matters is comparing its proposals with results over time, without changing the rules of the past after seeing the scores.
Rejecting a late calculation, retaining a losing selection or leaving a value unknown sometimes means accepting a record that looks less complete. That is also what makes it possible to interpret the record correctly.
A prediction must be allowed to be wrong. Its history must let us see it.
Frequently asked questions
What is temporal leakage?
It is the use of information that was unavailable at prediction time. It can distort the calculation or its historical evaluation.
Is a calculation started before kickoff always a pre-match prediction?
No. Its version must also have been published before kickoff. The start time alone does not establish prior publication.
Why can a result change without changing the prediction?
The score is a sporting fact updated after the match. Retained probabilities and decisions remain the reference for evaluating that result.
Does preserving predictions guarantee success?
No. These controls protect the historical record; they do not remove the uncertainty of football.