top of page
  • Writer's pictureAmrit

A Good, Hard Look at Expected Goals

Updated: Oct 11, 2018

Season 4 of the Indian Super League concluded just over a week ago and for those that don’t know, I’ve been maintaining an Expected Goals (xG) model for the season (here). Nobody else (at least publicly) reports xG for Indian games and from my interactions on Twitter, the average Indian football fan doesn’t really know what Expected Goals is. Let’s try to fix that.

Firstly, let’s look at the Expected Goals scored and conceded tables. Goa & Pune score more than they should because of their lethal attacks. BFC aren’t as good finishers as them – Chettri and Miku have been guilty of wasting opportunities. Chennaiyin are the average team. They don’t waste many chances. Immediately, you can see the value of xG. A single stat does very well in explaining a team’s entire season.

What is Expected Goals

Ever watched a match and gone, “Oh he should have scored from there!”? Expected Goals is a stat that basically tells you how likely a player was to score from a given chance (you can also call it chance quality). A player can get many chances in a game or series of games. When you add up the xG for each chance that a player received, you get the total number of goals he should have scored. The beauty of xG is how contextual it is- A player’s xG is a result of the specific chances that came that specific player’s way.

You can use this in many ways like comparing a player’s xG to his goals scored to see how well he’s performing. Or you can use xG to identify trends in a team’s play or form– stay tuned to this website if you’d like to see examples.

My Model

To calculate xG, you need to look at the specific characteristics of each chance. In my specific model (RMSE = 0.30218), which is not too different from the standard model on the internet, I look at the following parameters,

  • Distance from goal – Since I have a home-made model, I break up the pitch into zones and I use the name of the zone as an input. This is the weakest part of my model. When I move on to tracking/event data my model accuracy should shoot up considerably

  • Head/Foot – Whether the shot was taken with the head or foot

  • Throughball/Cross – Whether the shot came from a throughball or cross

  • Counter Attack – Whether the chance was part of a counter attack

  • One-on-one – Whether it was one-on-one or open goal

  • Whether it was Open – play or set play

  • Whether it was a freekick

  • Whether there was an immediate defensive pressure on the player

  • Whether it was a corner or not

The idea behind xG is to quantify how easy or difficult a particular chance is. Let’s look at some examples and the output from my model. As you can see, one of the principles of xG is that chances that are central and close to goal are better than chances that are further away. I will give you three examples and you can see how xG adds value and helps identify how good or bad a chance was. I am going to choose goals rather than individual shots because it’s easier to find highlights for them.

Ian Hume Goal (Mumbai City FC vs Kerala Blasters)

In match 48, the Blasters beat Mumbai by a controversial goal scored by Hume and according to my model this was the best goalscoring chance of the entire season. Kezito Keziron played a quick free-kick before the defenders were ready and created a one on one chance for Hume. Let’s look at the characteristics of the chance,

  • Distance from goal – Inside box, central, outside 6-yard box

  • Head/Foot – Foot

  • Throughball/Cross – Through-ball

  • Counter Attack – Yes (technically it was a fast break but I consider them the same)

  • One-on-one – Yes

  • Open Play - No

  • Freekick - Yes

  • Defensive pressure – No

  • Corner – No

xG = 0.7696 (~76% chance of scoring)

What this means is that given the characteristics of the shot, there was a 76% chance that Ian Hume would have scored a goal. Big implications, considering the freekick was taken from the wrong location and it was the winning goal of the game. You can watch the goal here.

Gregory Nelson goal (Chennaiyin FC vs FC Pune City)

In match 46, the Chennaiyin FC won 3 vital points against Pune City courtesy an excellent goal from Gregory Nelson. Raphael Augusto wins the ball in midfield and swiftly starts a counter by releasing Nelson into the box. Nelson then cuts inside the defender and fires in from just outside the size yard box.

  • Distance from goal – Inside right of the box, outside 6-yard box

  • Head/Foot – Foot

  • Throughball/Cross – Through-ball

  • Counter Attack – Yes

  • One-on-one – Yes

  • Open Play - Yes

  • Freekick - No

  • Defensive pressure – No

  • Corner – No

xG = 0.4301 (~43% chance of scoring). Watch the goal here.

Dimitar Berbatov goal (ATK vs Kerala Blasters)

In match 67, Dimitar Berbatov scored his only goal of his debut season in India. Quite a good finish, if I may say. From a data point of view this was a very interesting goal. Jackichand floats the freekick in, the initial chance is defended, and the ball then comes out to Berbatov on the edge of the box who volleys into the goal. I considered this a shot from open play, but let me know if you think the game was still in the set play phase.

  • Distance from goal – edge of the box

  • Head/Foot – Foot

  • Throughball/Cross – Neither

  • Counter Attack – No

  • One-on-one – No

  • Open Play - Yes

  • Freekick - No

  • Defensive pressure – No

  • Corner – No

xG = 0.12547 (~12% chance of socring). Watch the goal here.

As you can see from the three examples, xG somewhat matches up with our mental picture of how easy or hard a chance is. Arsene Wenger has admitted to using xG and broadcasters have included it in their basic stats pack in England. It’s only a matter of time before terms like xG and over/under-performance, hot streaks and regressing to the mean become a part of the common football vocabulary.


441 views0 comments

Recent Posts

See All


bottom of page