Which Team Will Win?

How it works

The short version

For each match we build both teams out of the eleven players likely to be on the pitch, work out how many goals each side should expect to score, and turn that into the chance of a home win, a draw or an away win. Then we show our working.

  1. Free, public dataSquads and availability, every player's match-by-match record, results and odds going back a decade.
  2. The elevenWho is actually likely to start – and what each of those eleven has been doing on the pitch lately.
  3. Two sides, weighedAttack against the defence it faces, keeper against the shots he will see, form, rest, congestion.
  4. Goals expectedHow many each side should score, against this opponent, on this day.
  5. Every scorelineThe chance of 1–0, 2–1, 3–3 and the rest, added up into a home win, a draw, an away win.

Eleven players, not two badges

This is the part that makes the site different, so it is worth being clear about. Most public models rate the club: a single number that moves slowly, season to season. We rate the team sheet. Every player carries his own record – what he creates, what gets conceded while he is on, what a keeper saves – weighted towards recent matches, and a thin record is pulled towards what is normal for that position so that one lively cameo cannot turn a substitute into a superstar.

Before team news is out we predict the eleven ourselves: from availability, from how much of the club's own recent sides each player has been part of – his record in another shirt does not count, which is what keeps a returning loanee out of an eleven he is no longer picked for – from the last published team sheet, and from where a new arrival sits in his club's price order until he has played enough to be judged on the pitch instead. The weights were set by replaying five seasons of confirmed team sheets, where this method names about eight of the eleven. Every predicted starter carries a percentage. When the real line-up lands in the hour before kick-off it replaces the prediction, and the card tells you which one you are looking at.

Most models rate the club 1552 One number, moving slowly We rate the team sheet Eleven records, and they change with the team news
The bar under each player stands for his own record – what he creates, what is conceded while he is on the pitch. Three of them missing makes a different side, and the numbers move that day rather than weeks later.

Reading a match card

The chart down the middle compares the two sides stat by stat. A bar grows from the centre towards whichever side is ahead, and a full-length bar means the gap is about as big as that stat ever gets – measured from the real spread across nearly two thousand past matches, not a number picked by eye.

Roughly half the rows are the stats you would expect to see: recent form, goal difference, the same split home and away, expected possession, expected goals. The rest change from match to match. Those are the measures that most separate these two sides, and the one at the top is the single stat most likely to decide it – flagged when it points away from our own call, which is the most interesting thing a card can tell you.

◀ Home side win Away side win ▶ 28% draw chance bookmakers
The gauge from a match card, on an invented match the home side won 2–1. Three bars on one scale, built like a wing decal – the outer two a shade shorter than ours, and every reading measured on their length, so the tips of our bar are the shape and nothing more: the further left, the more likely a home win. The big bar in the middle is our call. The shaded middle is the draw zone – as wide as a draw is likely in that match, its dashed edges carried through all three bars, the chance of a draw written over it – and a reading inside it is a Knife-edge: the model cannot separate the sides, so the bar wears the club's colour faded, and its small point shows only which way it tips. Beyond the zone the colour comes in full, and the chevron's length is the confidence, from Slight out to Very strong, and its point is the reading. The bar tucked beneath is the bookmakers' average, a single pale chevron on the same scale, so before kick-off you can see where our call sits against the market's – here the same winner, with less conviction. It reads “odds TBC” until the bookmakers have priced the match. The bar tucked above is the score, which is printed over the gauge: it swings towards the winner by the margin, green when the winner is the side we picked and red when not. A draw is a violet mark pointed at both ends, exactly as wide as our draw zone. Until the match starts the bar is empty.

Where the numbers come from

Everything is free and public: the official Fantasy Premier League feed for squads, availability and per-player match stats; football-data.co.uk for results and bookmakers' odds back to 2015-16; BBC Sport for confirmed line-ups, per-match possession, passing and expected goals, and the live score while a match is on. Nothing is bought, and no single source is load-bearing – if one breaks, the rest still produce a prediction.

From players to probabilities

The two sides' figures go into a scoreline model: rather than guessing at a result, it works out how many goals each side should expect, then the likelihood of every plausible score – 1–0, 2–1, 3–3 and the rest. Add up the scorelines where the home side finishes ahead and that is the home win probability. It carries a correction for something the raw arithmetic gets wrong: real football produces rather more tight, low-scoring draws than chance alone would suggest.

Each side's expected goals are a weighted sum of its measures, so the gap between the two sides splits exactly into one share per measure. Every match page shows that split under What separates them, in goals: the reasons pulling each way and the margin they add up to, which is the margin the call rests on. One flaw to own. A few of the model's weights are corrections for measures that overlap – two ways of counting the same goals – and read on their own they would credit a side with the weaker attack for its attack. Those never get a line of their own. They go into Everything else, with the smallest measures, so the total still adds up.

The model also knows each side's full calendar. Cup and European matches count towards rest and congestion, playing midweek before a league game is a signal in its own right, and so is how many of the eleven have changed since the last match.

There is also a version of the model that knows what every squad costs and who is waiting on the bench. Replayed over the same five seasons it could not beat the one above, so it is tracked in the table below rather than published – the bar every layer has to clear before it touches a number we put our name to.

The probabilities are published exactly as the model produces them, with no cosmetic layer on top. We tested one and found the raw output already honest – when we say 60% it happens about 60% of the time – so the extra layer only added noise. If that ever stops being true, the calibration chart further down this page will show it before we do.

The key stat

This is the oldest idea in the project. Take every stat and set it against its opposite number, then weigh those measures in combination as well as on their own. That gives a large field of candidate comparisons. Score each one on how well it has actually told winners from losers – never on the match we are about to predict, only on matches already played – and keep the strongest for the two sides in question.

The score you see is the plain reading: of the matches where one side was ahead on that measure, how often that side went on to win. Which measures get combined, and how, is the part we keep to ourselves.

One honest note about what this layer does. We tested whether it should move the probability itself, and over five seasons it made no measurable difference – so it does not. The published number comes from the model above. This layer chooses which stats are worth your attention for each match, and the gold row on every card is its pick – which is why the key stat can point the other way from the call, and the card says so when it does. What the call itself is made of is the model's arithmetic, on each match page.

The match notes

No AI writes the match notes. They are built straight from the numbers behind the chart by a piece of code that fills in templates: the call and its probabilities, the biggest gaps each way, the form with a note on where that form was actually played, who is missing. Each line is one fact with its figures attached, so nothing is asserted that you cannot check against the chart above it. A language model could not put a number in one of those lines if it wanted to, because it never sees them.

The pages around them are a different matter, and the honest version is worth stating plainly. This site was built with an AI coding assistant, and the explanatory writing on pages like this one was drafted with one too, then edited. That is not the same thing as a machine writing the football: the notes on a card, the probabilities, the tables and the charts are all produced by code from data, and no model has a hand in any figure the site publishes. But the sentence you are reading now had one, and a site that makes this much of showing its working should say so rather than claim a purity it does not have.

They are deliberately plain. An earlier version wrote them as paragraphs, and prose assembled by machine either repeats itself across a round of fixtures or reaches for phrasing it cannot quite control. The line for the side we have not tipped is always printed, even when the honest answer is that nothing in the measured stats favours them.

How we grade ourselves

Picking the winner is the easy half. The harder half is being right about how sure to be, and that is what our headline score measures: the distance between the probabilities we published and what actually happened, turned round so that a hundred per cent is perfect. A pure guess – 33% on each of the three outcomes – scores 66.7%, so anything above that is doing some work.

0.01We said 90%Bold and right0.20We said 55%Cautious and right0.30We said 55%Cautious and wrong0.81We said 90%Bold and wrong
The cost of one call, four ways. Being bold and right is nearly free; being bold and wrong costs eighty times as much as being bold and right, and nearly three times as much as being wrong after hedging. That is why a model can call more winners than ours and still finish below it.

Replayed match by match across five seasons, our model scores 71.06%, against 71.51% for the bookmakers – who have money, market forces and far more information than we do. Beating them is not the goal. Being close to them while showing every step of the working is.

The same scores are calculated the same way for us, for the bookmakers, and for the stripped-down versions of our own model, so the comparison is fair. The full table is below; this season's live scores are on the results page.

How it did on four seasons of matches already played

Before anything went out live, we replayed 1,900 matches from 2021-22 to 2025-26 – predicting each one using only what was known the day before it kicked off. It is a rehearsal rather than a record, which is why it sits here with the method rather than on the results page: it is evidence about how this works, not something that happened this season.

Our model against the alternatives

Each row is a different amount of knowledge. The bookmakers are the standard to beat; the rest are versions of our own model with pieces taken away, so you can see what each piece is worth.

# What it knew Forecast accuracyHigher is better Confidence penaltyLower is better Winner called rightHigher is better
1 The bookmakers the standard to beat 71.51% 0.9594 55.3%
2 Expected goals, line-ups, schedule and squad value 71.08% 0.9720 53.7%
3 Our published model ours 71.06% 0.9727 54.3%
4 Expected goals, line-ups and key stats 71.05% 0.9733 53.6%
5 Expected goals 71.04% 0.9732 53.8%
6 Expected goals, with line-ups 71.04% 0.9734 53.5%
7 Team strength alone 70.94% 0.9758 54.2%

The order is set by the accuracy score, which judges the whole forecast – not just whether the right team was picked, but whether the confidence attached to it was deserved. Being right while sounding far more certain than the evidence allowed scores badly, and so does hedging on a match that was never in doubt. Team strength alone is the case worth noticing: it is third for winners called, and still finishes seventh overall, because it is confident in the wrong places.

Our percentages mean what they say

Not, as the man said, sixty per cent of the time it works every time. When we say 60%, it happens about 60% of the time – and when we say 25%, about a quarter. That is the whole test, and it is the difference between a forecast and a hunch with a number attached.

We said 7%It happened 6%234 calls We said 16%It happened 17%871 calls We said 25%It happened 25%2,168 calls We said 35%It happened 35%789 calls We said 45%It happened 44%605 calls We said 55%It happened 54%470 calls We said 65%It happened 63%290 calls We said 74%It happened 74%186 calls We said 84%It happened 82%71 calls We said 93%It happened 88%16 calls 0% 0% 25% 25% 50% 50% 75% 75% 100% 100% What we said would happen What actually happened

Every prediction we have ever made, sorted into buckets by how likely we said it was, then checked against how often it actually happened. A dot on the dashed line means that group of calls came in exactly as often as claimed. Across 5,700 calls the average distance from the line is 0.6 of a percentage point. Point at any dot to read it out.

What has been separating winners

  1. Team strength & shots on target 76%
  2. Team strength & keeper faced 76%
  3. Team strength 76%
  4. Team strength & attack from this XI 76%
  5. Team strength & attacking threat 76%
  6. Team strength & defence from this XI 76%
  7. Team strength & defence faced 76%

Read as: across recent matches, how often the side ahead on that measure went on to win. We weigh these in combination as well as singly; which stats go together, and how, is the part we keep to ourselves.

What this can't do