There is a moment in almost every football match โ usually around the 65th minute โ where the crowd shifts before the scoreboard does. One team is pressing, the other is defending deep, and anyone watching can feel the probability tilting even though the score hasn't moved. Edge Model can now quantify that feeling.
We just shipped the live match tracker: a Bayesian predictor with live-updating probabilities that refreshes in real time as goals go in and time runs down. This post explains what that means, why we built it the way we did, and what you can actually do with it.
What changes when a match goes live
Edge Model's Gamma-Poisson model builds a pre-match view of each fixture based on team attack and defense ratings derived from the season so far. It expresses that view as three probabilities โ home win, draw, away win โ that add up to 100%. Before a match, those numbers reflect each team's overall quality across the whole season.
Once the match starts, something different happens. A goal is a very strong piece of evidence. A 0โ0 scoreline at half-time after an attacking team has had most of the possession is also evidence, albeit quieter. The model now reads both. It scales the remaining expected goals by how much time is left, recalculates the full 8ร8 Poisson scoreline grid for the remaining minutes, and collapses that grid into updated WDL probabilities. The pre-match view and the live evidence combine โ which is exactly what Bayesian updating means in practice.
The result is a live win probability that cannot be read off the scoreboard. A team trailing 0โ1 with 30 minutes left against a defensively poor opponent has a genuinely different chance of levelling than one trailing 0โ1 with 5 minutes left against the league leaders. The model distinguishes them. The scoreline alone does not.
How the update reaches you
The simplest way to build a live tracker would be to have every open browser tab poll the API every 60 seconds. That approach has a flaw: if 50 people are watching the same Saturday afternoon fixtures, the server receives 50 API calls per minute to do the exact same work 50 times. It gets worse the more popular the tracker becomes.
Instead, Edge Model uses a server-side polling architecture. One background process โ a single thread on the server โ calls the football-data.org API once per minute, regardless of how many people have the app open. It processes the live match data, runs the updated probability calculations, and broadcasts the result to all connected tabs simultaneously via Server-Sent Events. Ten tabs open, one API call, one computation, ten simultaneous updates. The maths is shared; only the display is per-user.
This also means the live panel populates instantly when you switch to the Fixtures tab. The server is already holding the latest match state in memory. There is no waiting for the first poll cycle to complete โ your browser just reads the cache.
Finished matches feed the model
The live tracker does something else that is easy to miss: it closes the loop on auto-ingestion. When a match finishes, the live polling thread detects the FINISHED status, records the result directly into the league model, and updates the season-long championship probabilities โ all without any manual data entry. The standings and prediction charts reflect the full-time result within a minute of the final whistle.
This matters because Edge Model's core value is the championship prediction, not just the live score. The live tracker and the season-long model are now the same thing: one feeds the other automatically. A late equaliser in a relegation battle doesn't just change the live win probability โ it ripples through the full Bayesian model and updates every team's title and relegation odds in real time.
What you see in the app
Open any league, switch to the Fixtures tab, and the Live section appears at the top whenever matches are in progress. Each live match shows the current score, the elapsed time, and the three live Bayesian probabilities as a simple visual bar. The bar updates every minute without any page reload. When the final whistle sounds, the match moves to FINISHED and the standings below it quietly update to reflect the new result.
If no matches are live right now, the section is empty. There is no clutter when there is nothing to show.
The value proposition for a Bayesian predictor
Most football data products treat a live score as the end of the story. The scoreline changes; the odds shift; someone either wins or loses money. Edge Model treats the live score as the start of a Bayesian calculation. The question the model is always asking is: given everything we knew before the match and everything we've seen since kick-off, what is the most honest estimate of how this ends?
That question is worth asking in-play for the same reason it was worth asking before kick-off: the initial market odds and the in-play odds are both based on models that may be better or worse than ours. If the model disagrees with the live market on a team's real chances at 2โ0 with 20 minutes remaining, that disagreement is information. It won't always be right, but it will always be grounded in the same consistent framework that produced the pre-match view โ and that consistency is the whole point.
If you want to watch Bayesian probabilities update live during this weekend's fixtures, open the app, load any supported league, and switch to the Fixtures tab.