Contact us for a free demo Contact us
for a free demo
StatsBombIQ StatsBomb Data

Introducing xGChain and xGBuildup

By Thom Lawrence | August 30, 2018 | Main

(Editor's Note: This article was originally published on the StatsBomb Services blog, but the URL disappeared during a server move, so we've moved it over here to the main site for perpetuity.)

I intend in this article to squeeze one last drop of juice from the desiccated lemon that is expected goals. xG has always served strikers well. xA takes a step back and helps credit creative players that make key passes. But what of the humble pre-assist? And indeed the pre-pre-pre-assist? Do they not deserve a slice of the xG pie? By looking at possession chains, and the xG of shots that result from them, we can begin to credit players for the attacking contributions they make outside of shots and assists. It’s my hope that it can sit alongside xG and xA as a basic, straightforward metric to reveal the contributions of of players involved in the earlier stages of attacking moves, such as deep lying playmakers, or creative centre-backs. We originally created this metric as a placeholder for our expected possession value model, giving us a simple way to highlight attacking contributions in our pass maps. But in the end we liked the numbers and thought it was straightforward enough that it was worth making public in and of itself.

Calculating xGC

Ted has already dubbed this xGChain, because it’s got xG and possession chains in it. I originally called in ‘xG involvement’ or ‘xG contribution’ because I’m boring. From hereon in I will refer to it as ‘xGC’, perhaps you can come up with a better name. Whatever you call it, it’s dead simple:

  1. Find all the possessions each player is involved in.
  2. Find all the shots within those possessions.
  3. Sum their xG (you might take the highest xG per possession, or you might treat the shots as dependent events, whatever floats your boat).
  4. Assign that sum to each player, however involved they were.

Any on the ball action will do, we’re not fussed, whether you make the first pass in a 30-pass buildup, or take the final shot yourself, you’re getting just as much credit as anyone else in that move.

Top 20 by xGC/90

Taking a player’s xGC for a season and per-ninetifying it yields their xGC/90. Usually the players that will stand out in xGC/90 are going to be strikers, or those assisting them - they’re more likely to be involved in moves that lead to shots, after all. But it still gives you a slightly more holistic view of attacking contribution than arbitrarily cutting off at shots and assists. Here’s the top 20 in 16/17 with 600+ minutes:

Region Competition Team Player OP xGC/90
Spain La Liga Barcelona Lionel Messi 1.73
Italy Serie A Roma Mohamed Salah 1.50
Germany Bundesliga Bayern Arjen Robben 1.47
Spain La Liga Real Madrid Álvaro Morata 1.41
Germany Bundesliga Bayern Thiago Alcántara 1.39
Spain La Liga Barcelona Luis Suárez 1.38
Germany Bundesliga Bayern Philipp Lahm 1.38
Germany Bundesliga Bayern Robert Lewandowski 1.35
Spain La Liga Real Madrid Cristiano Ronaldo 1.34
Italy Serie A Napoli Dries Mertens 1.31
Spain La Liga Barcelona Arda Turan 1.31
Germany Bundesliga Bayern Arturo Vidal 1.28
Germany Bundesliga Bayern Douglas Costa 1.26
Germany Bundesliga Bayern Franck Ribéry 1.25
Germany Bundesliga Bayern Joshua Kimmich 1.25
Germany Bundesliga Bayern Thomas Müller 1.24
England Premier League Man City Nolito 1.24
Italy Serie A Roma Edin Dzeko 1.22
Spain La Liga Real Madrid Gareth Bale 1.21
England Premier League Liverpool Philippe Coutinho 1.21

These are pretty much the usual suspects, but you’ll note that we’re picking up players like Philipp Lahm, heavily involved in buildup play but not necessarily known for goals and assists.

Top 20 by xGBuildup/90

You’ll note, however, that for a lot of players, the values are still dominated by xG from shots and xA from assists. You get a little extra credit for your buildup play, and some unexpected players are still able to shine through. But the fun starts when exclude shots and assists from the possession chains, so we can concentrate just on buildup play. It’s okay if you ultimately make the assist or shot yourself, but you also have to be involved in the earlier parts of the move to get credit. I originally called this pre-xGC (pre as in pre-assist, you see), but the world knows it now as xGBuildup and it yields quite a fun list this season:

Region Competition Team Player OP xGB/90
Germany Bundesliga Bayern Thiago Alcántara 1.36
Spain La Liga Barcelona Lionel Messi 1.29
Germany Bundesliga Bayern Philipp Lahm 1.24
Germany Bundesliga Bayern Arturo Vidal 1.19
Spain La Liga Real Madrid Pepe 1.10
Germany Bundesliga Bayern Xabi Alonso 1.05
Germany Bundesliga Bayern Franck Ribéry 1.02
Spain La Liga Real Madrid Toni Kroos 1.01
Spain La Liga Barcelona Samuel Umtiti 1.01
Germany Bundesliga Bayern David Alaba 1.01
Germany Bundesliga Bayern Arjen Robben 1.00
Spain La Liga Barcelona Ivan Rakitic 1.00
Italy Serie A Napoli Jorginho 0.99
Italy Serie A Juventus Paulo Dybala 0.99
Germany Bundesliga Bayern Mats Hummels 0.98
England Premier League Arsenal Alex Iwobi 0.98
Spain La Liga Barcelona Sergio Busquets 0.96
France Ligue 1 PSG Marco Verratti 0.95
Germany Bundesliga Bayern Douglas Costa 0.95
Germany Bundesliga Borussia Dortmund Julian Weigl 0.94

Messi still appears because he’s a freak, but we’ve also got a motley crew of midfielders and defenders, many of whose contributions to attacking play are easily lost when looking at mere xG and xA (or indeed raw goals and assists).

EPL Team Highlights

To get a feel for the metric, here’s the top players by xGC and xGBuildup for each EPL team this season (16-17):

Team Open Play xGC/90 Open Play xGBuildup/90
Player xGC Player xGB
Arsenal Alexis Sánchez 1.17 Alex Iwobi 0.98
Bournemouth Jordon Ibe 0.69 Jack Wilshere 0.57
Burnley Sam Vokes 0.47 Steven Defour 0.30
Chelsea Eden Hazard 0.93 Eden Hazard 0.69
Crystal Palace Christian Benteke 0.64 Jason Puncheon 0.42
Everton Romelu Lukaku 0.77 Ross Barkley 0.55
Hull Dieumerci Mbokani 0.51 Robert Snodgrass 0.32
Leicester Riyad Mahrez 0.60 Riyad Mahrez 0.43
Liverpool Philippe Coutinho 1.21 Sadio Mané 0.87
Man City Nolito 1.24 Ilkay Gündogan 0.94
Man Utd Jesse Lingard 1.08 Jesse Lingard 0.85
Middlesbrough Gastón Ramírez 0.65 Gastón Ramírez 0.38
Southampton Charlie Austin 0.89 Pierre-Emile Højbjerg 0.56
Stoke Wilfried Bony 0.70 Wilfried Bony 0.40
Sunderland Adnan Januzaj 0.57 Adnan Januzaj 0.46
Swansea Leroy Fer 0.74 Leroy Fer 0.48
Tottenham Dele Alli 0.91 Mousa Dembélé 0.71
Watford Roberto Pereyra 0.56 Roberto Pereyra 0.48
West Brom Salomón Rondón 0.58 James Morrison 0.39
West Ham Dimitri Payet 0.77 Mark Noble 0.64

Again we’re surfacing players like Dembélé who are often integral to buildup play, but don’t get much credit in the public attacking metrics beyond passing completion stats.

Team Balance

Now that we have a rough metric for attacking contribution, one thing we can do is look at teams that are more or less balanced. There is some indication that teams that are more balanced are more successful than those overly-reliant on a few players.

To look into this, I’ve calculated Gini coefficients for teams over their open play xGC/90 values, for players with 600+ mins. The higher the value, the more imbalanced their attacking contributions - a value of 1.0 would mean a team generates all its xG through one player, acting completely alone, a value of 0.0 would mean a team involving all of its players in every attack (for the exact same number of minutes).

Premier League La Liga Bundesliga Serie A Ligue 1
Bournemouth 0.17 Barcelona 0.17 Bayern 0.12 Fiorentina 0.16 Nice 0.18
Tottenham 0.17 Real Madrid 0.18 Borussia Dortmund 0.13 Genoa 0.17 Lyon 0.19
Southampton 0.17 Las Palmas 0.19 FC Cologne 0.18 Juventus 0.17 Saint-Etienne 0.19
Chelsea 0.18 Villarreal 0.20 Augsburg 0.19 Inter 0.19 PSG 0.19
Everton 0.18 Valencia 0.21 Hoffenheim 0.19 Lazio 0.19 Caen 0.20
Arsenal 0.19 Sporting Gijon 0.21 Mainz 0.20 Chievo 0.20 Marseille 0.20
Middlesbrough 0.19 Real Sociedad 0.21 Schalke 0.20 Napoli 0.21 Angers 0.20
Swansea 0.19 Sevilla 0.24 Werder Bremen 0.21 Cagliari 0.21 Lorient 0.21
Man Utd 0.19 Real Betis 0.24 Eintracht Frankfurt 0.21 AC Milan 0.21 Nancy 0.21
Liverpool 0.20 Alaves 0.24 Hertha Berlin 0.21 Bologna 0.23 Dijon 0.22
Burnley 0.20 Malaga 0.25 Borussia M.Gladbach 0.22 Roma 0.23 Lille 0.23
Man City 0.21 Leganes 0.26 Wolfsburg 0.23 Udinese 0.23 Guingamp 0.23
Crystal Palace 0.22 Eibar 0.26 RasenBallsport Leipzig 0.23 Sassuolo 0.23 Monaco 0.24
Watford 0.22 Osasuna 0.26 Ingolstadt 0.23 Pescara 0.23 Rennes 0.25
Hull 0.23 Athletic Club 0.27 Freiburg 0.24 Sampdoria 0.24 SC Bastia 0.25
Stoke 0.23 Atletico 0.27 Darmstadt 0.24 Torino 0.24 Nantes 0.26
West Brom 0.23 Deportivo 0.31 Leverkusen 0.25 Palermo 0.24 Metz 0.27
Sunderland 0.24 Espanyol 0.32 Hamburg 0.35 Atalanta 0.27 Bordeaux 0.27
Leicester 0.25 Celta Vigo 0.32 Empoli 0.27 Toulouse 0.28
West Ham 0.29 Granada 0.33 Crotone 0.28 Montpellier 0.28

West Ham’s 3-0 win over Crystal Palace may have eased fears they’re a one man team, with Dmitri Payet trying to force a move away. But they are still more reliant on a few key players than any other team in the EPL. Mark Noble and Michael Antonio are the other two players taking up the bulk of attacking responsibility, and time will tell if the rest of the squad can step up. Leverkusen are another unbalanced team facing some risks with Julian Brandt and Chicarito likely to move on soon.

These numbers don’t necessarily tell us a lot about underlying performance - Leicester won the league with a coefficient of 0.28, and RB Leipzig are having a huge impact in the Bundesliga despite being bottom half for their offensive balance. But for squad planning purposes, this can act as an early warning system if your team is overly-reliant on a few players in attack.


xGChain is a simple, flexible metric that exposes aspects of attacking play omitted by existing metrics. It’s not a replacement for a proper non-shots model, and it shouldn’t be read as a composite rating for a player’s attacking skill - it’s an evolutionary step that builds on existing models. In the coming days we’ll show some of the useful stuff we’ve built on top of it, including our new xGC-based pass maps, as well as highlighting some of the more interesting players and games we’ve found in the numbers.

Article by Thom Lawrence