One in a million Premier Leagues

What is xG

If you’ve clicked on this there’s a pretty good chance you’ll be familiar with the concept of xG anyway, so I’ll keep this bit short.

Every time a shot is taken in a football game, a probability is calculated that is associated with it. This represents the probability that that shot would result in a goal. A tap-in from a yard out would have a very high xG, close to 1, and a speculative hit from 35 yards out would have a low xG, close to 0.

Naturally, there are times when the outcome doesn’t go the way the xG would suggest. A team may score from a rare, low quality effort on goal, while their opponents fail to convert any of their more numerous, better chances. You’d expect this sort of thing to even over the course of a season, but have you ever wondered, “What if…?”.

What if a relegation candidate kept scoring from half-chances all season? Could they win the league?

How many goals could be scored in a game in an alternate reality where everyone had their shooting boots on?

Data information
  • Data is taken from Understat.
  • Shots are treated as independent of each other. In real life game-management would come into play, but for a bit of fun such as this we will suspend disbelief.
  • Own goals are modelled in Understat, sparing the blushes of millions of players in this article.
  • League position tie-breaks are done on goal difference, goals for, then a random coin toss.

What could have been in the first game?

The first game of the season saw Bournemouth take on Liverpool at Anfield. There were shots aplenty, but how could it have played out differently? Here are all the shots, what happened in the actual game, and what happened in simulation xxx.

Real 0–0
Simulated 0–0
Real
Real 0–0
Simulated
Simulated 0–0
Shot goal goal
MinPlayerxGRealSim

Simulating the season

Let's go a step further and replay every shot from every game for the entire season. We can see our Liverpool vs. Bournemouth result in gameweek 1, as well as nine other replayed games.

Kick-off
#TeamPtsGDWDL

...and after a battle with Manchester City, win the league on the last day of the season, despite losing 4-1 away to Sunderland.

A million alternate Premier League realities

Imagine if we played the season again. Every shot recreated as if were played again, with the same likelihood it would be scored. Some that were drilled past the keeper would be smashed wide. Others that were skied into row Z would nestle into the top corner. And some would play out exactly the same. How could the league have looked? What if we repeated it again, and again? Maybe our team would fluke an unlikely title! In a million simulations what might happen?

I took the 2025/26 season and did just that. Here is how the league ended up all 1,000,000 times.

Let’s explore the highlights.

#TeamPtsGDvs. real

From this replay

    That was last year, but let’s take a moment to appreciate Leicester’s year of triumph. In 10,000 simulations of that season they triumphed 9.8% of the time. Yes, you could say they were fortunate to win some games (insert examples here), but they genuinely did create better chances than they were expected to before the season started.

    Leicester City crest