There’s xG (expected goals), xP (expected passing) and now I’d like to introduce another football data concept that uses those two models to develop something I’m calling “PassScore”.


The aim of this model is to score passes in terms of their contribution to creating goalscoring chances. At a high level, passing data and statistics made widely available are simply binary values. A successful pass, goal or shot assist can only be given one of two possible values — 0 or 1, but that only tells you a limited amount of information.

For example, passes made across the defensive line (and played back to the goalkeeper) tend to be the easiest passes to play and they will contribute to a team and player’s passing accuracy. As a team moves further up the pitch, passing accuracy gets worse as they look to play more difficult balls through an opposition’s defence.

That is where the xP model adds extra value to passing accuracy %. A player may have a 90% pass success rate which may immediately sound impressive but xP might argue otherwise, particularly if the expected outcome of those passes were greater than 90%.

An expected passing model works by using a large amount of passing data and determining the expected pass accuracy of passes made from one particular zone on the pitch to another. In the xP model that I use, the pitch is split into 50 zones (10×5) and for each zone to zone pass combination, an expected pass outcome is provided (a value from 0 to 1). xP and successful passes (0 or 1) can then be compared to assess a player and team’s actual passing accuracy compared to the expected passing accuracy.

A goal assist can be the simplest of passes. A centre-back can make a straightforward pass to a winger, like Swansea City’s Dan James, who goes on a superb solo run before scoring. James might have created that goal all by himself but his team-mate, who played the 5-yard pass to him, also gets credited with an assist.

It can also work the opposite way where players are denied goal assists if their team-mate fails to convert the chance into a goal. To get around that limitation, “expected assists” (xA) can be used, but again, for shot-based xG models, which many are, this also requires the player to get a shot on goal in order to register an expected assist value. So if a player plays a through ball for a striker and he’s one on one with the goalkeeper but takes the ball too wide and doesn’t get a shot on goal, this won’t register as anything but a successful pass. “PassScore”, however, will credit the pass with a high score for creating an excellent goalscoring opportunity.

An example of this can be seen in Swansea’s home win against Sheffield United. Nathan Dyer plays an inside pass to striker Oli McBurnie but United’s Jack O’Connell makes a last minute tackle to deny a shooting opportunity. In shot-based xG models, Dyer doesn’t get any expected assist credit.

In Swansea’s recent 4–3 home win against Rotherham United, the visitors created an excellent goalscoring chance after a cross was aimed at the far post. The cross was headed back across goal with another header from 6 yards being brilliantly saved by Kristoffer Nordfeldt. Had the shot gone in, only the player heading the ball across the penalty area is awarded with an assist and expected assist value to his name, the crosser misses out.

You can watch the example of this goalscoring chance and how the PassScore model scored the two passes via Twitter below:

Not only does the “PassScore” credit passes for creating goalscoring chances, it also negatively scores passes if they help the opposition to potentially create opportunities.

Unsuccessful passes made into dangerous areas will also score low negative values. Here’s another example in Swansea’s game away at Norwich City. Goalkeeper Tim Krul, under pressure from Daniel James, makes a poor attempted back pass and due to the position of where the pass is unsuccessful (near the 6-yard area) the pass has a score of -4.36.

Again, this simply registers as an unsuccessful pass (rather than as an error leading to a shot/goal) as Dan James can’t quite take advantage but PassScore helps to identify moments like this.

You can watch the clip below:

Pass maps can then be created with each pass colour-coded as a temperature guage with blue passes being lowest scoring (unsuccessful and in dangerous areas) with the darker red passes being the most helpful when creating goalscoring chances.

You can also break this down further by looking at the PassScore numbers by pass type — pass or cross, free-kick or open play, by player, by team, match etc.

The main contributor to the PassScore calculation is the xG value of the pitch zone where the pass was played. The score is then boosted by the difficulty of the pass according to the xP model. Unsuccessful passes made into dangerous areas are also scored slightly but will be significantly lower than if they were successful. The thinking here is to reward players for attempting to play passes into good areas.