Methodology
What Oracle90 publishes, how the numbers are produced, and how you can verify that nothing is rewritten after the results come in.
What we publish
For every Premier League and Championship match we publish the probability of a home win, draw and away win, plus the probability of the match producing over or under 2.5 goals. Probabilities always sum to 100%.
How the model works
The forecasts come from an ensemble of two parts. The first is a statistical model built on team scoring rates, shots on target and strength ratings, in the family of Dixon and Coles style Poisson models combined with Elo ratings, trained on more than a decade of historical results. Since model v2, one of its rating tracks also follows market-implied team strength derived from the closing odds of past matches, so part of the market's judgement enters the model itself; we say so here because you would not be able to tell from the outputs.
The second is the market consensus. Betting markets aggregate the judgement of thousands of participants and are the strongest known public predictor of football results. Our published probabilities anchor the statistical model to that consensus. This is standard practice in the industry: Opta, for example, has said publicly that its match predictions use market odds as an input.
We disclose the blend openly. The current published forecasts weight the market consensus at 0.8 and the pure statistical model at 0.2. When the weighting changes, the version number changes with it.
Why anchor to the market
Because it is honest. Decades of academic research show that no public model consistently beats the closing market consensus at predicting match outcomes. A site claiming otherwise is either lucky or lying. Anchoring gives you the most accurate probabilities we can offer, and our track record page shows exactly how they perform.
Known limitations
The model is least reliable in the first weeks of a season, when current-season data is thinnest. Newly promoted clubs carry extra uncertainty because they have little recent history in the top two divisions.
The statistical model knows nothing about injuries, transfers, squad rotation or managerial changes. That information reaches the forecasts only indirectly, through the market consensus anchor and the market-informed rating track.
Probabilities describe long-run frequencies. Any single match can go any way; an upset does not mean the model is broken. Judge us on the calibration shown on the track record page, not on one result.
Verification
Every forecast is committed to a public GitHub repository before kickoff. As team news arrives and the market moves, we may update a forecast up to kickoff; each update is a new public commit, so the full history of every revision can be checked by anyone. Once a match kicks off, the final pre-kickoff forecast is frozen. That version, and only that version, is scored on the track record page. Nothing is amended or rewritten after kickoff; if we were tempted to quietly fix a bad call after full time, the commit history would expose it.
What this is not
Oracle90 is a data science project. It does not offer betting advice, tips or staking suggestions, and it never will. The probabilities describe how likely outcomes are; what you do with that information is entirely your own business.
Where AI-generated match previews appear on this site, they are labelled as AI-generated.
About the price check tool
The price check tool converts odds you enter into the probability they imply, then shows our published estimate for the same outcome beside it. The badge describes the relationship between those two numbers and nothing else: your price sits above, near or below the fair odds of our estimate.
The estimate is the same market-anchored forecast shown on every match page. There is no extra model behind the tool, nothing you type is stored, and no recommendation is made. Whether a gap matters, and what to do about it, is entirely your own business.
