Expected goal chains are back! / by Matthias Kullowatz

By Matthias Kullowatz (@mattyanselmo)

Expected Goal Chains are not a new thing to the site, but we have now streamlined the process of generating their metrics so that you can enjoy weekly updates on our web app! Go to the new Possession chains dropdown, select Players, and then choose between totals and per-96-minutes metrics. For the benefit of the reader and people everywhere, I just want to re-introduce possession chains and the xGoals therein. Kevin Shank (@Kev_Shank) familiarized us with the concept last year, and because the general concept hasn’t changed, I will steal some of his and StatsBomb’s explanation:

For those who are not familiar with Expected Goal Chains (xGC), the metric looks at all passing sequences that lead to a shot and credits each player involved with the xG. Instead of just looking at expected goals and expected assists, which primarily benefits strikers and attacking midfielders, xG Chains is beneficial to every player involved in a sequence…. StatsBomb defines it very succinctly, so the below steps are stolen directly from them: 

  1. Find all the possessions each player is involved in.
  2. Find all the shots within those possessions.
  3. Sum their expected goals.
  4. Assign that sum to each player, however involved they were.

We have made a few tweaks in this edition of xGChains, detailed below for the especially curious readers.

Defining a possession

We define a team’s possession as a sequence of pass attempts, dribble attempts, shot attempts, and/or fouls earned, uninterrupted by the opposing team attempting any of those same actions. This definition is very robust to suspiciously ordered sequences of actions, and requires that the defensive team earn enough of the ball to attempt to start its own possession (note that pass attempts do not include clearances).

Avid ASA readers have, no doubt, consumed Expected Possession Goals (xPG) by Eliot, Cheuk, and Jamon. This is not as cool as that, but note that we are working to make sure our definitions of a possession match.

Assigning xGoals to possessions

Once a sequence of actions has been grouped into a possession, we focus on quantifying any shots earned in that possession. Based on our definition of a possession, teams may take more than one shot within a single possession chain. Shots that are blocked or saved back into the field of play can be claimed by the shooting team as part of the same possession. Because no more than one goal can be scored in a possession, we adjust all xG earned within a possession to be equal to the probability that at least one of the shots would have scored. This process is very similar to how we adjust our xGTeam metric, explained here.

Assigning xBuildup (xB) and xGChain to players

xBuildup is designed to reward players who are integral parts of their team’s buildup play, but who don’t often get recognized with xGoals (xG) or xAssists (xA). To calculate this metric for a given player, we identify all the possession chains in which that player made a successful pass or dribble, or earned a foul, but didn’t take a shot or complete a key pass (i.e. a pass that led directly to a shot attempt). Players already earn credit for those actions in our xG and xA metrics.

xGChain starts with xGBuildup, and then adds back in the adjusted xG values from when the player took a shot or completed a key pass. This is essentially the expected value of all the team’s possessions in which the player in question “participated,” meaning he completed a pass or dribble, took a shot, or earned a foul.   

Player metrics

These are the metrics you'll see on the player pages of the app, as well as their corresponding per-96 metrics.

NumChains: Number of team's possessions in which the player was involved with a successful pass attempt or dribble, a shot, and/or a foul earned (i.e. in which he "participated")
TeamChain%: Percentage of team's total possessions in which the player was involved with a successful pass attempt or dribble, a shot, and/or a foul earned (i.e. in which he participated)
ChainShot%: Percentage of chains in which the player participated where the team earned a shot
PlayerShot%: Percentage of chains in which the player participated where he took a shot
PlayerKP%: Percentage of chains in which the player participated where he completed a key pass (i.e a pass that leads directly to a shot)
xB (xBuildup): Total team-adjusted xG earned by the team on possessions in which the player participated but did not make the final pass or shot
xGChain: Total team-adjusted xGoals earned by the team on possessions in which the player participated, including when he took a shot or completed a key pass
xB% (xBuildup%): Ratio of xB/xGChain

Key differences in the new version

We redefined a possession chain in a such a way that we are now crediting players with xBuildup and xGChain for the following actions, for which they may not have received credit in the past:

  • Players that earned a foul in a chain where a shot is earned
  • Players that are part of a chain that ends in a penalty, which is assigned 0.2 adjusted xG
  • Players that are part of a chain that ends in a shot off of a set piece (direct or indirect), which is assigned the adjusted xG value of the attempt
  • Players that completed a successful dribble just before making the final pass or taking a shot

Possessions are also longer and include more actions and more players. This wider definition of a possession chain leads to more overall xGChain. In 2017, the old method handed out about 2,800 xGChain, while the new method credited nearly twice that (about 5,400). More to go around!

In the old version, xBuildup = xGChain – xG – xA. In other words, xB was not calculated explicitly, and the league total xG + xA was far more than xGChain in aggregate. This led to lower xB% values. In the new version, xB is calculated from a proper subset of the possession chains used to calculate a player’s xGChain. This results in greater and, I believe, more representative xB% values. In 2017, the old method credited just 42% of xGChain as xBuildup. The new method assigned 72% of xGChain as xGBuildup during the 2017 season.

For reference, here are the players from 2017 with at least 20.0 xGChain (new version) whose ranking in xB% changed the most in the new format:

First Last Team Minutes xGChain (old) xGChain (new) xB (old) xB (new) xB% (old) xB% (new) xB% Rank (old) xB% Rank (new) RankDiff
Carlos Gruezo DAL 2760 9.9 20.3 8.2 17.4 82.4% 85.5% 216 84 132
Alexander Ring NYC 2749 9.8 22.8 7.9 19.8 80.0% 87.0% 196 96 100
Maximiliano Urruti DAL 2885 17.4 24.1 5.1 10.9 29.1% 45.3% 495 396 99
Jack Harrison NYC 2872 15.9 25.4 5.3 13.1 33.7% 51.5% 466 376 90
Darlington Nagbe POR 2472 11.3 21.2 8.1 17.8 71.8% 84.1% 231 154.5 76.5
Albert Rusnak RSL 2723 18.6 31.6 7.4 19.5 39.7% 61.8% 417 343 74
Alex Alex HOU 2412 13.4 24.3 6.5 17.4 48.9% 71.6% 366 297 69
Hector Villalba ATL 2827 16.7 26.8 4.1 12.8 24.6% 47.9% 481 414 67
Haris Medunjanin PHI 3231 15.6 30.5 7.1 25.3 45.4% 82.8% 247 312.5 65.5
Jahmir Hyka SJ 1950 14.2 20.3 5.0 11.9 35.2% 58.7% 434 372.5 61.5

I leave it to you to determine what makes these players unique, because, you know, I don’t actually watch the games.