Methodology
How our football predictions work
Two engines write every forecast on Oddsivio. Sirius calls the match — home, draw or away. Janus calls what happens inside it — goals, cards and corners. This page explains what evidence they weigh, how a forecast becomes a number, and the rules that keep both honest.
It is not a formula reveal — the exact weightings stay ours. It is the part that matters more: what goes in, what we promise about every number that comes out, and where to check that we keep those promises.
Five rules every forecast follows
Built from evidence
Every forecast is computed from measured, pre-kickoff evidence — results, form, matchup patterns and league norms. No hunches, no gut calls, no hand edits.
Frozen at kickoff
Forecasts lock when the whistle blows. What you see during and after a match is exactly what we published before it — nothing is quietly rewritten, nothing is removed.
Scored in public
At full time every forecast is scored against what actually happened, and the result rolls into a public track record — the complete ledger, not a highlight reel.
Misses included
When we're wrong, the miss stays on the page next to the final score it was scored against. A record you can't lose isn't a record.
Sits out rather than guesses
When the evidence is too thin — a newly promoted side, a first meeting, a young season — the engines publish no forecast rather than dressing up a guess. Every sit-out is kept on the record too.
One more rule about the records themselves: headline numbers are held until a record clears three hundred scored claims, and slices still short of that say so instead of pretending. Young numbers prove nothing either way — we'd rather show you nothing than noise.
Where and when forecasts appear
Forecasts cover competitive matches across 20+ competitions — the Premier League, La Liga, Serie A, Bundesliga and Ligue 1, the UEFA club competitions, and more leagues and cups worldwide. Friendlies never get forecasts: experimental line-ups make the evidence unreliable, and we don't publish numbers we don't trust.
Each forecast opens up to a week before kickoff and is re-scored every night as new evidence lands, then freezes when the match starts. At full time it is scored, and the result rolls into the public record. The evidence itself comes from professional match-data feeds — results, line-ups, match events and team statistics — the same data that powers the rest of the site.
Sirius — match forecasts
Sirius forecasts the result. For every covered match it publishes three chances — home win, draw, away win — that always add up to 100%, frozen before kickoff and shown with the key evidence for and against each side.
It works from an evidence ledger: a running record of what each team has measurably done. Recent results and home-and-away form, scoring and defensive signals, head-to-head patterns, and how matches with similar evidence played out before. When a team's circumstances break with its record — promotion, a new manager, a reworked squad — the forecast flags it rather than pretending the past still applies.
A forecast only means something against a yardstick, so the record page scores Sirius against two. Football's long-run averages are the floor — the mark any forecaster must beat to claim skill. The market consensus, saved at least thirty minutes before kickoff with the margin removed, is the hardest benchmark there is. The market is never an input to Sirius; it is the examiner. Where we stand against both is computed from the data and published live — including whenever it says we're behind.
See every Sirius forecast, scoredarrow_forwardJanus — goals, cards & corners
Janus forecasts what happens inside the match. For every covered game it makes nine kinds of call: goals over or under at three lines — 1.5, 2.5 and 3.5 — both teams to score, each team to score, home and away, the first team to score, and the volume of cards and corners.
Every call starts from the league's own norm — how often matches in that competition actually go over 2.5 goals, see both teams score, and so on — and moves off it only when the match evidence says to. That starting point is also the yardstick: the frozen league norm is scored on exactly the same claims, so the record shows whether the moves the evidence makes actually help — and will say so if they ever stop helping.
Calls that sit near fifty-fifty are flagged as too close to call and kept in the record rather than quietly dropped, and a lane still short of three hundred claims reads “still accruing” instead of showing a headline.
See every Janus forecast, scoredarrow_forwardHow a forecast is scored
A forecast here is a claim about chance, so it can never simply be marked right or wrong. Instead, at full time we ask one question: how much chance did we give the result that actually happened? Give the eventual result a big chance and the forecast scores well; dismiss it and the score is poor. Every answer is kept, good and bad.
One match proves little either way — an underdog winning doesn't make a forecast wrong, and a favourite winning doesn't make it right. The real test is the long run: gather every claim made at a similar level of confidence and count how often those things actually happened. Claims made at around 60% should come true about 60% of the time. The record pages show that comparison band by band, so you can see where the forecasts earn trust and where they don't.
The distance, in probability points, between the chance we stated and the rate it actually happened — averaged over every claim we've published — is the average miss, the headline number on each record page. Lower is better, and because it is computed from every claim, a convenient miss can't be left out to flatter it.
A worked example
Say Sirius weighs the evidence for a Saturday fixture and publishes: home win 58%, draw 24%, away win 18% — three chances, frozen the moment the match kicks off.
The match finishes 1–1. The result we gave 24% is the one that happened, so this forecast scores poorly — and the miss stays on the record next to the final score. But one poor night proves little. The real question is whether the draws we call at around 24% happen about one time in four over the long run — and the record pages run that check in public, on every claim, this miss included.
The numbers here are invented; the process is exactly what happens to every real forecast on the site.
What we don't publish
No sure things, no picks, no promises of profit — and no advice about your money. A forecast here never tells you what will happen; it tells you how likely we think each outcome is, and the record shows how often we've been right at every level of confidence.
We also don't publish the recipe. The evidence that goes in is listed above; the exact weighting is the part we keep. What we refuse to keep private is the scoreboard — every claim, every miss, in public.
Model updates
Every forecast names the engine version that produced it — the small print at the foot of the card. When how forecasts are made changes — new evidence weighed, a rule tightened, a faulty claim removed — the version number changes and the update is listed here, newest first.
Day-to-day movement is not a model update: forecasts refresh as new results arrive, then freeze at kickoff. And a new version never rewrites the past — frozen forecasts stay exactly as published, so the record pages always show each claim scored by the version that made it.
Sirius v3.1.1 · 12 October 2026
The stronger side's rating comes first
When our strength rating has one side ahead, the strength note now gives that side's rating first. It used to give the home side's rating first, so when the stronger side was playing away, the first number looked like theirs but was their opponent's. Wording only: forecast calculations are unchanged.
Sirius v3.1.0 · 7 October 2026
Strength ratings take in more history; national teams start in 2022
The strength rating behind every forecast now counts about 3,900 older games it used to leave out: the 2022 World Cup and its qualifiers, the Africa Cup of Nations, the Asian Cup, the Gold Cup, earlier Nations Leagues, EURO 2024 qualifying, the Club World Cup and the 2022-23 FA Cup and Coupe de France ties of top-division clubs. National-team ratings now start in January 2022 instead of 2024, and a tournament's host nation is rated as playing at home. Club ratings move by a few points; national-team ratings move more, a handful by over a hundred. The forecast rules are unchanged. Past forecasts are unchanged.
Janus v2.10.2 · 7 October 2026
More tournaments treated as neutral ground
Notes that compare a team's home record with its away record do not apply on neutral ground. The Africa Cup of Nations, the Asian Cup, the Gold Cup, the Club World Cup, the Intercontinental Cup and the World Cup inter-confederation play-offs are now on that neutral list, alongside the World Cup, the EURO and the Copa América. The strength ratings these forecasts read were also rebuilt the same day (see the Sirius entry). League forecasts follow the same rules as before.
Sirius v3.0.2 · 3 October 2026
The form note says what it counts
When a team is unbeaten in six or more, the recent-form note names the run. Sirius reads results after ninety minutes — a cup tie won in extra time or on penalties counts as a draw to the model, the convention markets settle on — while the rest of the site counts extra time and calls a shoot-out a draw. The note used to say "in all competitions", which read like the site's rule; it now says "on 90-minute results, all competitions". Wording only: forecast calculations are unchanged.
Janus v2.10.1 · 27 September 2026
Both-teams-to-score mismatch rule re-set for the rebuilt ratings
Both-teams-to-score forecasts lean towards a blank when the hosts clearly outclass the visitors. "Clearly" was a gap in strength ratings, and when the ratings were rebuilt on 23 September the gaps between teams got smaller — so the rule was catching about a third fewer games than the ones it was tested on. The cut-off now sits where it picks out the same share of games as before. Other forecasts are unchanged. A note on first-team-to-score: the rebuild also re-set how it groups evenly matched teams, and that change should have been listed here with its own version at the time.
Sirius v3.0.1 · 27 September 2026
Two explanations re-checked on the rebuilt ratings
Two notes quoted studies run on the old strength ratings, so we re-ran both on the rebuilt ones. The note on teams new to our record keeps its finding — they still win less often early on than their rating expects — and now gives both win rates; it used to say "points" and "debuts" where it meant percentage points and games. The newly promoted note changes its message: promoted sides used to fall short of their rating, but the rebuilt ratings already account for most of that, so the note now says so and is tagged Note rather than Watch. Wording only: forecast calculations are unchanged.
Sirius v3.0.0 · 23 September 2026
Team strength ratings rebuilt
The strength rating behind every forecast has been rebuilt from scratch. Draws now count (before, a draw changed nothing), cup ties that went to extra time or penalties are rated on the score after ninety minutes, club friendlies no longer move ratings, and teams that enter our record through a cup or a continental competition start from a more cautious number. The forecast rules that compare two teams' ratings were re-tuned to the new scale. Past forecasts are unchanged.
Sirius v2.9.0 · 22 September 2026
Missing players now come from the match's own availability list
The missing-players note now names only players on the match's own Squad availability list — the same list the match page shows. It used to carry over anyone reported out in the previous two weeks, so a note could name a player the page did not list. The note appears when a listed player has a confirmed important or star rating, and then names every listed player rated rotation or above, with the same rating words the list shows; a first-choice goalkeeper with an important or star rating gets a note of his own. Neither moves the forecast yet: we are still measuring how much missing players cost a team, and will say here when that changes. The Squad availability section no longer marks a cut-off line or a "logged, not scored" tag. A match with no availability list yet shows no missing-players note. Forecast probabilities are unchanged.
Sirius v2.8.5 · 19 September 2026
Clearer possession context
The possession note now names the opponent and uses percentage points. For teams further apart in overall strength, it explains why having more of the ball does not change the forecast. Wording only: forecast calculations are unchanged.
Sirius v2.8.4 · 16 September 2026
League table notes appear only in the run-in
Notes about table positions now appear only when both teams have eight or fewer league games remaining. Premature notes are also hidden on older match pages. Forecast probabilities and the stored pre-match record are unchanged.
Sirius v2.8.3 · 15 September 2026
Cup favorites receive a more selective adjustment
Playing in a higher division no longer adds an automatic extra edge against an opponent with an established rating. The cup adjustment is limited to opponents whose strength estimate still has a short history, with enough recent evidence to use it. Its size is unchanged. Division records must also establish the direction of the gap without conflicting league assignments. Frozen forecasts stay exactly as published.
Sirius v2.8.2 · 15 September 2026
History and streak notes show the dated results
Seven history and streak explanations now show the results behind the record: dates, scores, competition scope and win/draw/loss counts. Where recorded, they identify the last win or defeat before a run and the latest meeting. A team can lead the recent record even when its opponent won the latest encounter; the explanation now makes that clear. Dates use UTC. These notes remain context only, with no change to forecast calculations. Frozen forecasts stay exactly as published.
Sirius v2.8.1 · 14 September 2026
Busy schedules say how many matches, and when
The congested-schedule note now names the exact number of competitive matches, their dates and the days they span, alongside the opponent's count in the same two-week window before kickoff. Dates use UTC and the span counts both the first and last day. The window is now exactly fourteen days: rounding down elapsed days had allowed a match almost fifteen days earlier to count. Some congestion notes therefore disappear. Schedule remains context only and does not change forecast probabilities. Frozen forecasts stay exactly as published.
Janus v2.10.0 · 8 September 2026
Cards forecasts read the league-wide climate
Each cards forecast starts from how often games in that competition have gone over 4.5 cards recently. That starting point is slow to move when the whole game changes at once — and since July, bookings have fallen across nearly every competition we cover, so cards forecasts had been running too warm. The forecast now also weighs the last 600 completed matches across every competition, so a shift like this one shows up within a week or two instead of half a season. The new term faces a pre-registered review after 750 scored forecasts; if it does not improve them it is switched off and that change is listed here. Frozen forecasts stay exactly as published.
Sirius v2.8.0 · 5 September 2026
Reworked squad counts first-team moves only
The Reworked squad note counted every row in our transfer feed, including the same move recorded twice under slightly different dates, academy players returning from loan, and youth loans out. It now counts each move once, ignores loan returns and players who arrived and left inside the same window, and only counts a departure when the player was in the squad regularly last season. The note still carries no points; its receipt now says the study behind it used the old counting and is due a re-run.
Sirius v2.7.1 · 5 September 2026
Fortress note catches up
The Home fortress note still described the season-long home record as the streak that counts, a day after that record stopped moving forecasts. The note now says neither run does once the rating is known. Wording only.
Sirius v2.7.0 · 5 September 2026
One streak stops counting, one starts talking
"Unbeaten at home this season" no longer moves a forecast. It was the one streak that earned points, and a re-check found the evidence behind it did not hold up: once the rating is known, the record adds nothing. It stays on the page as a note. A new note flags visitors on a long league run without an away win — and says plainly that such sides have not lost more often than their rating suggests, so it is context, not a warning.
Sirius v2.6.2 · 4 September 2026
Streaks say what they count
An unbeaten run now says which competitions it counts, how many of those games were wins and how many draws, and the month it started — so a run that reaches back into last season reads that way. The form note shows both sides' last five results instead of only the hotter side's. Wording only: forecast numbers are untouched.
Sirius v2.6.1 · 2 September 2026
Quarter-finals are not finals
A final played on neutral ground costs the listed home side its usual home advantage, and the forecast removes it. The check that spotted a final read the round name too loosely — any round with the word in it, quarter-finals included, could count — and the venue check could mistake a ground for a different one when its name was written in a different word order. Where both slipped at once, a genuine home cup tie lost its home edge. Both checks are now exact: only the final itself qualifies, and a ground matches its own name however the words are ordered. Frozen forecasts made under the old rule stay exactly as published.
Sirius v2.6.0 · 29 August 2026
Cup ties across divisions
A cup favorite from a higher division is usually even stronger than its rating says — ratings compress when divisions rarely meet. Measured across more than a thousand cup ties and validated the way every scored rule is, that boost now moves forecasts on cross-division cup games. Its mirror stays a warning only: heavy favorites against a side from their own division have underperformed, but the pattern drifts across eras, so it is flagged without moving numbers. Also checked and shown as context: sides defending a big first-leg lead press on rather than easing off, teams do not slump before or after European nights, and dead rubbers get played as hard as any other game.
Sirius v2.5.0 · 29 August 2026
End-of-season motivation, made mathematical
The end-of-season motivation rule used a rough bar — a side more than ten points from anything decisive counted as having nothing left to play for. It now uses arithmetic: a side is settled only when no decisive line is reachable even by winning every remaining game. The receipt behind it was re-measured on sixteen seasons of settled-versus-live run-in games and validated the same way every scored rule is, so forecasts move on those fixtures. One myth checked along the way: games with nothing riding on them for either side get decided slightly more often than average, not less — that now appears as context on such games.
Sirius v2.4.1 · 21 August 2026
No rest-day claims on partial calendars
Some teams play plenty of matches we track — European ties, cup runs — while their domestic league sits outside our week-to-week coverage. Our calendar for them is incomplete, so rest-day and fixture-congestion notes could state wrong facts. Those notes are no longer shown for such teams, and form notes now say when they cover only the games we track. Display only: no forecast numbers changed.
Sirius v2.4.0 · 30 July 2026
Neutral-ground competitions
Sirius now knows which competitions are played on neutral pitches — one-off super cups and final-four tournaments — and no longer credits the listed home side with home advantage there. A side genuinely playing at its own stadium keeps it.
Sirius v2.3.1 · 17 July 2026
Squad availability, shown in full
Every forecast now carries the complete list of absences the engine weighed — who is missing, how regularly they start, and what the forecast made of it. Display only: no forecast numbers changed.
Sirius v2.3.0 · 15 July 2026
A stricter sit-out rule
Sirius now sits out when either side's recent tracked history is too thin or too stale to trust — in practice mostly early qualifying rounds. Every sit-out stays on the record.
Sirius v2.2.0 · 12 July 2026
Early-season caution
When both sides are still inside the opening weeks of a new league season, home sides have historically fallen short of their rating, and forecasts now allow for it. Newly promoted sides and heavily rebuilt squads are flagged as context — measured, but not yet trusted to move a number.
Sirius v2.1.0 · 10 July 2026
Home unbeaten runs, weighted absences
A season-long unbeaten home record now moves the forecast — the one such pattern that survived testing across thousands of past matches. Absences weighted by how often each player actually starts are now tracked as a watch signal, and several popular head-to-head patterns that failed testing appear only as context, never in the numbers.
Sirius v2.0.2 · 7 July 2026
Removed a faulty venue note
A note flagging venue-name mismatches fired constantly on stadium renames and translations while predicting nothing, so it was removed. Forecast numbers untouched.
Sirius v2.0.1 · 7 July 2026
More context on the card
Forecasts now show the most recent meeting's score, name unbeaten runs that extend past the visible last five, and say when the market consensus has moved since it opened. Display only — the market is never an input.
Sirius v2.0.0 · 6 July 2026
First public version
The evidence-ledger scorer went live: team strength, venue, goals environment, possession control, finishing luck and end-of-season significance are scored, with form, history, rest and absences shown as context. Every forecast freezes at kickoff and is scored at full time.
This changelog was first published in August 2026; earlier entries are backfilled from the engine's internal version log and dated by when each version went live. Entries cover Sirius from its second version and Janus from v2.10.0; earlier Janus versions stay in its internal log.