It´s been almost to the day 18 months since I last posted on this blog. I barely remembered how to login. This, however, is not due to me falling out of love with analytics. On the contrary, I´ve been busy getting a degree in statistics (almost), learning how to program properly and co-starting an analytics consultancy business that just finished of our first season working with HV71 in the Swedish Hockey League with winning the gold (pretty damn excited about that!), so there has been little time to write blogs.
Now that hockey season is over and my thesis is almost done, there´s finally room for writing a blog every once in a while. I´ve been doing some work on possession chains and expected goals recently, and found myself realising that I was about 5 lines of code away from replicating Statsbomb services xgChain, so I just decided to do that and apply it on the 2016 season of Allsvenskan.
What is xGChain?
The xGChain was (to my knowledge) first introduced by the guys over at Statsbomb Services. It´s built on an Expected Goals model.
Expected Goals is a statistical model that assigns every shot attempt a probability of being converted into a goal. It is basically a model that tells you how good the quality of a shot is, based on it´s location and a bunch of other information regarding how the shot was assisted, etc. You can read my explanation (in Swedish) following this link. My model uses data from OPTA to calculate these probabilities.
The xGChain takes this modelled value and assigns it (once) to each player participating in the possession chain that led up to that shot attempt. It goes beyond looking at only the player who took or assisted the shots, and credits all players (equally) involved in the sequence leading up to the shot, including the player shooting and assisting. I recommend you read the full explanation by Thom Lawrence if you want more details than that.
Running the code for the 2016 season of Allsvenskan and summing the xGChain values on a player basis, then adjusting for minutes played, we get the following top 20 in xGChain per 90 minutes played. (only players with more than 450 minutes played are considered)
I like this list of players a lot. First, we should note that there might be a team effect as the list has tons of players from Malmö FF. Second, I really like the fact that it throws up a bunch of well established top players in Allsvenskan, but also mixes in players like Kadewere and Aiesh (who both show up great in a lot of the stuff I look at) that might not be on everybody´s radar, or at least wasn´t during the 2016 season when this data was collected. This is a good sign that the model picks up on player skill, and might be able to pick up when players are doing good things on the pitch without it necessarily being evident in the goals column.
If we remove shots and shot assists we get what Ted Knutson refers to as xGBuildup. This only credits the players participating in the possession chain up until the shot assist and so focuses less on attacking players and more on players participating in the build up of attacks. The top 20 for Allsvenskan 2016 according to my model looks like this:
NOTE: This table has been updated as the intial code had a little bug in it that is now fixed.
Tobias Sana who admittadbly has few minutes played and a lot of them coming of the bench which might skew things in his favour, leads the way. Overall it´s an interesting lists that I once again feel captures players that we ”know” are good by the eye test but also some interesting names like fullbacks Dennis Widgren & Stefan Karlsson as well as young Christos Gravius (who also has few minutes played though). I also find Darijan Bojanic an interesting inclusion. He looks very interesting in several passing measures and should be a good fit at ÖFK if he can get on the pitch.
xGChain is not the end all be all measure of football analytics, but it´s an interesting addition to only looking at team and attacking player expected goal values to try and give some credit to players contributing to a teams attack in ways that might not be apparent from looking only at shot contribution measures.
This was fun! Hopefully it won´t be 18 months until next time.