xG Timelines

Great article, nice one Matt, exactly how xG should be used and probably is being used by football clubs. As I mentioned in another thread, it's a baseline exactly the same as Strokes Gained in golf and up to people to interpret their performance against other players using it which you've done.
 
Have to be honest, I used to be very sceptical of XG and it without doubt does have its limitations. However, having read into it a bit and trying to educate myself I feel as though it is certainly a useful statistical tool. There are certain examples where I cannot fathom how an individual chance is not rated as higher or lower but when you take into account the margin of error that is allowed for then this goes some way to explaining this. I understand to an extent what people are saying when they argue that it cannot account for the quality of the player taking the shot, however from what I understand of XG is that the figure is calculated using a kind of ‘average conversion rate’ figure. As in it will be taking into account how both the Kane’s and the Rantie’s of this world would perform in that position. (Correct me if I have misunderstood.) Bottom line is that I don’t think I’ve seen a single expected goal result from one of our games this season that goes against what I believe I’ve been watching.
 
On a related note, I thought this was interesting:

https://dataviz.theanalyst.com/season-reviews/2021/?competition_id=10&season_id=2021

It shows us top of the table to xG from open play. It also shows our defence is pushing towards midtable for xG conceded. The perception on here has sometimes been that the defence has been mostly solid but we haven't been creative enough.

Also lots of work to be done in both attacking and defending set pieces.

Thanks for the link. I've only had a quick look, but did you understand why Goals scored (32 from open play and 6 from set pieces) don't equal the 41 we have scored? It is discrepant for Goals conceded too (9 and 6 not equalling 20). It says it was updated yesterday, so wondering if there is a glitch: from open play the Goals conceded 9 from an xG of 18.1 looks a real outlier.

It was noticeable against Cardiff that we went short with a lot of corners, almost as if we had decided that Cardiff were a bigger team and we wouldn't have much luck with a direct cross.

Other things that I thought were noteworthy.

1) AFCB were top for high turnovers resulting in shots and third for total high turnovers behind two Valerian Ismael teams (WBA and Barnsley)

2) That Ryan Christie wasn't in the top ten for expected assists per 90 minutes, although I guess that this could be skewed by not taking set pieces. He always looks dangerous when he gets the ball.

3) And the best news, than in their Goal prevented stat, Mark Travers looks to be second best keeper (having prevented 3.9 goals) compared with 1.6 for Johnstone, and 1.2 for Kaminski (Blackburn). Fulham have changed their keeper, perhaps understandably, with Gazzaniga (52% of minutes) preventing 0.4 goals but Rodak (48% of minutes) preventing 2.4 goals. These stats are potentially biased by being compared to shots on target, and it is conceivable that if you are a better keeper, strikers might try and find the corner and shot wide more often. It also has Travers down as only conceding 15 goals.
 
Great article, nice one Matt, exactly how xG should be used and probably is being used by football clubs. As I mentioned in another thread, it's a baseline exactly the same as Strokes Gained in golf and up to people to interpret their performance against other players using it which you've done.

Thanks. I was surprised how little variation there was between players though, almost as though they were largely interchangable. It might be that the quality of the goalkeeper is far more important than the quality of the striker as these, based on the link Kirsikka sent, look much more variable ranging from 4 goals prevented (Ingram at Hull) to an extra 6.3 conceded (Sluga at Luton). Keep up the good work Travers! (3.9 and in second place)
 
Thanks for the link. I've only had a quick look, but did you understand why Goals scored (32 from open play and 6 from set pieces) don't equal the 41 we have scored? It is discrepant for Goals conceded too (9 and 6 not equalling 20). It says it was updated yesterday, so wondering if there is a glitch: from open play the Goals conceded 9 from an xG of 18.1 looks a real outlier.

It was noticeable against Cardiff that we went short with a lot of corners, almost as if we had decided that Cardiff were a bigger team and we wouldn't have much luck with a direct cross.

Other things that I thought were noteworthy.

1) AFCB were top for high turnovers resulting in shots and third for total high turnovers behind two Valerian Ismael teams (WBA and Barnsley)

2) That Ryan Christie wasn't in the top ten for expected assists per 90 minutes, although I guess that this could be skewed by not taking set pieces. He always looks dangerous when he gets the ball.

3) And the best news, than in their Goal prevented stat, Mark Travers looks to be second best keeper (having prevented 3.9 goals) compared with 1.6 for Johnstone, and 1.2 for Kaminski (Blackburn). Fulham have changed their keeper, perhaps understandably, with Gazzaniga (52% of minutes) preventing 0.4 goals but Rodak (48% of minutes) preventing 2.4 goals. These stats are potentially biased by being compared to shots on target, and it is conceivable that if you are a better keeper, strikers might try and find the corner and shot wide more often. It also has Travers down as only conceding 15 goals.

Matt thanks for your input into this thread. Is there any chance you have a summary of the xG for and against for each game this season? Bit of a cheeky request as it's probably lots of work but it would be really interesting if you have it to hand.
 
Matt thanks for your input into this thread. Is there any chance you have a summary of the xG for and against for each game this season? Bit of a cheeky request as it's probably lots of work but it would be really interesting if you have it to hand.

I've got the data saved, so it is easy - are you just wanting a basic summary such as AFCB X, opponents Y?
 
I've got the data saved, so it is easy - are you just wanting a basic summary such as AFCB X, opponents Y?

Yeah pretty much. My view is that we've pretty much got what we deserved in all of the games this season give or take. Obviously Waz and others think we've been lucky in a lot of games so it would be interesting to see the game-by-game stats compared to results.

I know that this is what some of the xG league tables show but there seems to be some variation in terms of methodology in those. Presumably some are simply the team with the higher xG gets three points whereas others are wighted somehow. I quite like xG as a tool to help analyse games but the league table prediction stuff always seems a bit more subjective and dubious.
 
Yeah pretty much. My view is that we've pretty much got what we deserved in all of the games this season give or take. Obviously Waz and others think we've been lucky in a lot of games so it would be interesting to see the game-by-game stats compared to results.

I know that this is what some of the xG league tables show but there seems to be some variation in terms of methodology in those. Presumably some are simply the team with the higher xG gets three points whereas others are wighted somehow. I quite like xG as a tool to help analyse games but the league table prediction stuff always seems a bit more subjective and dubious.

Here you go - this is arranged as

Actual Result (xG scores home team then away team).

Sometimes it is skewed if a team leads itself wide open at the back chasing an equaliser, also keepers seem to be important on how xG translates to actual scores, which seems intuitive, but strikers less so. But hopefully it is still informative. Happy interpreting - I've kept my interpretation hidden to not bias one way or another.

AFCB 2 - WBA 2 (0.91 vs 1.84)
Forest 1 - AFCB 2 (0.77 vs 0.55)
Birmingham 0 - AFCB 1 (0.44 vs 0.84)
AFCB 2 - Blackpool 2 (1.14 vs 2.01)
Hull 0 - AFCB 0 (0.43 vs 2.16)
AFCB 3 - Barnsley 0 (2.96 vs 0.04)
Cardiff 0 - AFCB 1 (0.62 vs 1.39)
AFCB 2 - Luton 1 (0.82 vs 1.98)
Peterborough 0 - AFCB 0 (0.14 vs 1.69)
AFCB 2 - Shef U 1 (1.68 vs 1.54)
B City 0 - AFCB 2 (1.09 vs 2.28)
Stoke 0 - AFCB 1 (1.45 vs 1.42)
AFCB 3 - Huddersfield 0 (2.04 vs 0.20)
Reading 0 - AFCB 2 (1.08 vs 0.65)
AFCB 1 - Preston 2 (1.49 vs 0.98)
AFCB 4 - Swansea 0 (4.05 vs 0.26)
Derby 3 - AFCB 2 (1.86 vs 1.80)
Millwall 1 - AFCB 1 (0.71 vs 1.10)
AFCB 2 - Coventry 2 (2.09 vs 0.77)
Fulham 1 - AFCB 1 (3.56 vs 1.02)
AFCB 0 - Blackburn 2 (1.57 vs 2.23)
Boro 1 - AFCB 0 (3.56 vs 1.76)
QPR 0 - AFCB 1 (0.45 vs 1.71)
AFCB 3 - Cardiff 0 (2.70 vs 1.07)

There are many different ways to put together a league table based on xG, all of which have limitations. It's not uncommon for teams with a higher xG not to win. I've pulled a screenshot from a random week where there were lots of games that shows this.

Capture.JPG
 
The obvious limitation is that xG doesn’t take in to account the periods of play that naturally form during a game of football.
For example, AFCB away from home against the league leaders winning 1-0 are obviously going to take fewer risks going into the final period of the game than the home side with nothing to lose (because they’re already losing). So they will naturally create more chances skewing the xG.
Same for Luton away from home chasing the game at AFCB.

So it’s excellent up until a point, but I don’t think you can drill down enough to create a legitimate league table.
 
The obvious limitation is that xG doesn’t take in to account the periods of play that naturally form during a game of football.
For example, AFCB away from home against the league leaders winning 1-0 are obviously going to take fewer risks going into the final period of the game than the home side with nothing to lose (because they’re already losing). So they will naturally create more chances skewing the xG.
Same for Luton away from home chasing the game at AFCB.

So it’s excellent up until a point, but I don’t think you can drill down enough to create a legitimate league table.

If you nick a goal towards the end of the match you're unlikely to attempt to increase your xG as you hold on but surely if the opposition increase their xG by over 1 in that period it's fair to say you would be lucky to hold on.

I suspect however attacking teams would routinely underperform against their xG in this scenario due to a combination of rushed play and tiredness.

Any "legitimate" league would be a model and in words of George Box “All models are wrong, but some are useful”.

We outperform on both our xG and xGA which means we're either lucky or we're good. Pretty much the same conclusion can be drawn from the regular league table. I don't know if I'd be happier at the top of the league underperforming, overperforming or bang on to be honest.
 
Last edited:
The obvious limitation is that xG doesn’t take in to account the periods of play that naturally form during a game of football.
For example, AFCB away from home against the league leaders winning 1-0 are obviously going to take fewer risks going into the final period of the game than the home side with nothing to lose (because they’re already losing). So they will naturally create more chances skewing the xG.
Same for Luton away from home chasing the game at AFCB.

So it’s excellent up until a point, but I don’t think you can drill down enough to create a legitimate league table.

Agreed, hopefully the stars when goals are scored I added to the Cardiff game, and will add to future timelines, will allow patterns after goals to be seen more clearly.

Although we did have a period where the opponents were pushing us when they were losing but we weren't managing to do the same (the Middlesbrough game for instance). Fingers crossed, that was just a blip, or we have tweaked our tactics to rectify this.

In thinking of these games, I've realised I missed QPR at home from this list

AFCB 2 - QPR 1 (1.51 vs 1.18)
 
The biggest weakness of xG IMO is that too much depends on what the opposition do. Man U played Burnley last week and had xG = 1.83. But 0.58 of that was Ronaldo tapping in a rebound after a fantastic save by Hennessey, who tipped a long range shot onto the post and it rebounded to Ronaldo in the middle of goal.

If Hennessey had let it in, United's xG would have been 1.25 with 3 goals, instead of 1.83 with 3 goals. Hennessey's save increased their expected goals by almost half, which is clearly a nonsense.
 
Here's the xG timeline from todays game.

There were actually very few good chances (rated 25% or better) in the game. In fact there was only 1. If we lower the threshold down to 1 in 10 or better, there was still only 5 in the entire game.

The first was on 13 minutes when Christie met Anthony's cross field pass and Shea saved towards his bottom right corner (rated about 1 in 5). That was it for us in the first half. Luton's first real chance was on 18 mins when Travers saved a Reece Burke header at close range, their next was when the ball ricocheted into Kelly after the Adebayo shot and which gave Luton the lead after 30 minutes. The Hatters' second goal was a long-range shot that wouldn't normally go in, rated only 3% and left us 2-0 down at the break. You got the feeling that Campbell only chanced his arm as he had no pass on. It didn't go in, but on 45 minutes Lerma almost scored a screamer (another 3% chance) which on the tv looked like it was heading in.

We started better in the second half (Lowe replaced Anthony) and Luton didn't have a shot until the 74th minute at which point it was 2-1. For our goal, Stacey did very well, running back to get the ball then driving down the wing, cutting inside two players and crossing for Marcondes who bravely put his head in to score (47%). Rogers replaced Cook in the 76th minute, and 2 minutes later made it 2-2. It was good play from Lowe, who used Stacey as a decoy and then squared it to Rogers, who smacked it goal bound, and whilst the keeper got a hand to it, he couldn't stop it (rated 1 in 10). Whilst many AFCB fans were willing us to push on for the winner, that was our last shot of the game, and then with the last kick of the match Naismith chopped inside Lerma, who had dived in to block a possibly powerful shot, before he placed one expertly in Travers' bottom right corner. Normally with that many defenders in the box it would have been blocked, so I'm not blaming Lerma. It was rated only 1 in 25.

Even though we didn't play well, losing to an own goal, and two shots that rarely go in was harsh to take. The one crumb of comfort is that I think we got away with it in the home game, and maybe 2 points from the games was fairest, and we did get 3. It's little consolation though.

Luton.JPG
 
2 - 3.....going by the positions in the table prior to the game...that effectively is 2 expected goals...and 3 unexpected goals...
...but then you could further pare that down and say Luton were the home team so maybe they would expect to score at least 1...and maybe another..so that's now 2-2..
...add another 5 minutes on to the 90...and Travis dives to the left and mateybollux places one to the right and we are back to 2-3 !.
Funny ol' 'expected' game !
 
Here's the xG timeline from todays game.

There were actually very few good chances (rated 25% or better) in the game. In fact there was only 1. If we lower the threshold down to 1 in 10 or better, there was still only 5 in the entire game.

The first was on 13 minutes when Christie met Anthony's cross field pass and Shea saved towards his bottom right corner (rated about 1 in 5). That was it for us in the first half. Luton's first real chance was on 18 mins when Travers saved a Reece Burke header at close range, their next was when the ball ricocheted into Kelly after the Adebayo shot and which gave Luton the lead after 30 minutes. The Hatters' second goal was a long-range shot that wouldn't normally go in, rated only 3% and left us 2-0 down at the break. You got the feeling that Campbell only chanced his arm as he had no pass on. It didn't go in, but on 45 minutes Lerma almost scored a screamer (another 3% chance) which on the tv looked like it was heading in.

We started better in the second half (Lowe replaced Anthony) and Luton didn't have a shot until the 74th minute at which point it was 2-1. For our goal, Stacey did very well, running back to get the ball then driving down the wing, cutting inside two players and crossing for Marcondes who bravely put his head in to score (47%). Rogers replaced Cook in the 76th minute, and 2 minutes later made it 2-2. It was good play from Lowe, who used Stacey as a decoy and then squared it to Rogers, who smacked it goal bound, and whilst the keeper got a hand to it, he couldn't stop it (rated 1 in 10). Whilst many AFCB fans were willing us to push on for the winner, that was our last shot of the game, and then with the last kick of the match Naismith chopped inside Lerma, who had dived in to block a possibly powerful shot, before he placed one expertly in Travers' bottom right corner. Normally with that many defenders in the box it would have been blocked, so I'm not blaming Lerma. It was rated only 1 in 25.

Even though we didn't play well, losing to an own goal, and two shots that rarely go in was harsh to take. The one crumb of comfort is that I think we got away with it in the home game, and maybe 2 points from the games was fairest, and we did get 3. It's little consolation though.

View attachment 7080
In a game of five goals only two should of gone in? This xg thing absolutely baffles me.
 
Here's the timeline, I doubt it will tell you much that you didn't already know. I was listening to Solent's commentary where it seemed obvious that it was a game of two halves.

Hull.JPG

In the first half we created lots of chances, Solanke having a shot blocked in the 4th minute (about 1 in 8) then Dom had the clearest chance of the match with a header put wide of the left post (just over 2 in 5). Marcondes, (15th, 17th and 31st mins), Solanke (17th and 43rd mins) also had attempts rated around 1 in 10 as we had total control of the game. Hull's first shots were in the 44th min, when both Longman and Smallman had low percentage chances.

At the interval, Hull came out firing for 5 mins, before they reverted to hoping for a smash and grab. There was some pressure in that time but no real chances. Meanwhile AFCB had lost our mojo with the game petering out, the first danger for Hull was a Solanke header rated as 1 in 33. As we've seen historically, not taking your early chances can lead you open to a sucker-punch, which is exactly what happened with Longman firing in from a tough position (rated 1 in 16). Getting robbed in this way wasn't the worst thing for me, we all know it happens, but the lack of response was very concerning. We created only one chance in over 20 minutes after we went behind, and only 2 in the second half. There was no siege, no pressure, no last-ditch Hull defending, the game just limped to a dull conclusion.
 

;