If you’ve watched Bundesliga this season, then you have seen a stat where they show the expected goals (xG) for a given match. What are expected goals? Expected goals is a predictive model used to assess every goal-scoring chance, and the likelihood of scoring. A xG model computes for each chance the probability to score based on what we know about it (event-based variables). The higher the xG – with 1 being the maximum, as all probabilities range between 0 and 1 – the higher the probability of scoring.
In practice, that means if a chance has 0.2xG, it should be scored 20 per cent of the time. If it has 0.99xG, it should be converted 99 per cent of the time and so on.
Major League Soccer has included xG in their stats page for every match this season. I figured I would build upon that and also follow with Expected Goals Against (xGa) and Expected Result (xR). Expected goals against is simply the xG of your opponent. Expected Result will be comparing the xG of both teams and for the purposes of this experiment, if the margin is +/- 0.3 for a given match, we will expect that match to end in a draw. Otherwise, one team is expected to win, and one is expected to lose. Of course, in actual gameplay, it does not always follow that way.
There have been 246 goals in 196 games so far in MLS as we head into the first international break. Since MLS rounds xG to the nearest tenth (0.1), we will add up the xG for each team in all their games played so far. It looks something like this:
Team | Games Played | Sum of Expected Goals for | Sum of Actual Goals for | Sum of Difference For |
Columbus Crew SC | 7 | 4.4 | 7 | 2.6 |
Real Salt Lake | 6 | 6.4 | 9 | 2.6 |
Seattle Sounders FC | 8 | 11.5 | 14 | 2.5 |
Houston Dynamo | 8 | 9 | 11 | 2 |
Colorado Rapids | 7 | 10.1 | 12 | 1.9 |
New York Red Bulls | 7 | 8.1 | 10 | 1.9 |
New York City FC | 7 | 11.5 | 13 | 1.5 |
Orlando City SC | 7 | 7.4 | 8 | 0.6 |
CF Montreal | 8 | 9.8 | 10 | 0.2 |
LA Galaxy | 7 | 10.8 | 11 | 0.2 |
Atlanta United | 7 | 9 | 9 | 0 |
DC United | 8 | 8.6 | 8 | -0.6 |
FC Cincinnati | 6 | 6.8 | 6 | -0.8 |
Sporting Kansas City | 8 | 15.8 | 15 | -0.8 |
Inter Miami CF | 8 | 9.3 | 8 | -1.3 |
Los Angeles FC | 7 | 9.7 | 8 | -1.7 |
Toronto FC | 7 | 9.8 | 8 | -1.8 |
Vancouver Whitecaps FC | 7 | 8 | 6 | -2 |
New England Revolution | 8 | 14.2 | 12 | -2.2 |
Austin FC | 7 | 7.4 | 5 | -2.4 |
FC Dallas | 7 | 11.2 | 8 | -3.2 |
Philadephia Union | 8 | 12.5 | 9 | -3.5 |
Minnesota United | 7 | 10 | 6 | -4 |
Nashville SC | 7 | 13.3 | 9 | -4.3 |
San Jose Earthquakes | 8 | 15.4 | 11 | -4.4 |
Portland Timbers | 7 | 13.7 | 9 | -4.7 |
Chicago Fire FC | 7 | 9.1 | 4 | -5.1 |
Grand Total | 196 | 272.8 | 246 | -26.8 |
This table is sorted by the difference between actual goals for and xG. Here, Columbus Crew SC and Real Salt Lake have been more efficient with their chances by going 2.6 over their xG. Ten teams are overachieving their xG. Conversely, the team that has been the most wasteful (and have been for a while now) has been Chicago Fire FC under their xG at -5.1. It doesn’t help that they have the fewest actual goals for in the league with just four. Four other teams–Minnesota, Nashville, San Jose, and Portland–are at least four below their xG.
Sporting Kansas City have scored the most goals with 15 and are near their xG at 15.8. San Jose is second in total xG with 15.4, but have only scored 11 in actuality.
So what about expected goals against versus actual goals conceded?
Team | Games Played | Sum of Expected Goals against | Sum of Actual Goals against | Sum of Difference Against |
Austin FC | 7 | 14.1 | 8 | 6.1 |
Philadephia Union | 8 | 10.9 | 5 | 5.9 |
Seattle Sounders FC | 8 | 8.5 | 3 | 5.5 |
Vancouver Whitecaps FC | 7 | 13.8 | 9 | 4.8 |
Columbus Crew SC | 7 | 9.4 | 6 | 3.4 |
Orlando City SC | 7 | 7.3 | 4 | 3.3 |
New England Revolution | 8 | 9.9 | 7 | 2.9 |
LA Galaxy | 7 | 13.6 | 11 | 2.6 |
CF Montreal | 8 | 11.3 | 9 | 2.3 |
Portland Timbers | 7 | 13.1 | 11 | 2.1 |
Houston Dynamo | 8 | 13.5 | 12 | 1.5 |
Real Salt Lake | 6 | 7.9 | 7 | 0.9 |
Atlanta United | 7 | 8.8 | 8 | 0.8 |
Colorado Rapids | 7 | 8.4 | 8 | 0.4 |
San Jose Earthquakes | 8 | 12.3 | 12 | 0.3 |
Nashville SC | 7 | 6.1 | 6 | 0.1 |
FC Dallas | 7 | 10.3 | 11 | -0.7 |
FC Cincinnati | 6 | 14.3 | 15 | -0.7 |
Minnesota United | 7 | 10.3 | 11 | -0.7 |
Sporting Kansas City | 8 | 9.1 | 10 | -0.9 |
New York City FC | 7 | 5.9 | 7 | -1.1 |
Chicago Fire FC | 7 | 9.7 | 11 | -1.3 |
Los Angeles FC | 7 | 7.6 | 9 | -1.4 |
New York Red Bulls | 7 | 8.5 | 10 | -1.5 |
Inter Miami CF | 8 | 10.7 | 13 | -2.3 |
Toronto FC | 7 | 9.7 | 12 | -2.3 |
DC United | 8 | 7.6 | 11 | -3.4 |
Grand Total | 196 | 272.6 | 246 | 26.6 |
Austin FC was expected to concede 14.1 by this point, but have allowed just eight which means teams have not been scoring as much as they perhaps should against the Verde. Teams (except Chicago) are scoring more than expected on DC United have given up 11 goals against an xGA of 7.6. Seattle Sounders FC have given up just three goals on the year despite being expected to have conceded 8.5 by now. FC Cincinnati have given up the most with 15 and are about close to expected in doing so (xGA of 14.3).
So, who should have more points than they actually have? Again, keep in mind that if the margin of xG between the two teams is within +/- 0.3 (i.e Seattle’s xG of 0.6 vs. Austin FC’s 0.7) , then the expected result is a draw.
Team | Games Played | Sum of Expected Points | Sum of Actual Points | Difference |
LA Galaxy | 7 | 6 | 15 | 9 |
Columbus Crew SC | 7 | 4 | 11 | 7 |
Houston Dynamo | 8 | 5 | 11 | 6 |
Philadephia Union | 8 | 10 | 14 | 4 |
Vancouver Whitecaps FC | 7 | 3 | 7 | 4 |
FC Cincinnati | 6 | 0 | 4 | 4 |
Colorado Rapids | 7 | 10 | 13 | 3 |
Real Salt Lake | 6 | 6 | 9 | 3 |
Seattle Sounders FC | 8 | 16 | 18 | 2 |
New England Revolution | 8 | 15 | 17 | 2 |
Sporting Kansas City | 8 | 14 | 16 | 2 |
Orlando City SC | 7 | 10 | 12 | 2 |
Austin FC | 7 | 7 | 7 | 0 |
CF Montreal | 8 | 13 | 12 | -1 |
Atlanta United | 7 | 11 | 10 | -1 |
New York Red Bulls | 7 | 10 | 9 | -1 |
DC United | 8 | 10 | 9 | -1 |
Inter Miami CF | 8 | 10 | 8 | -2 |
Toronto FC | 7 | 9 | 7 | -2 |
Minnesota United | 7 | 9 | 7 | -2 |
Portland Timbers | 7 | 12 | 9 | -3 |
Los Angeles FC | 7 | 11 | 8 | -3 |
FC Dallas | 7 | 9 | 6 | -3 |
Nashville SC | 7 | 17 | 11 | -6 |
San Jose Earthquakes | 8 | 15 | 9 | -6 |
Chicago Fire FC | 7 | 10 | 4 | -6 |
New York City FC | 7 | 18 | 11 | -7 |
LA Galaxy should really have just six points based on their xG and xGA, but have amassed 15 so far. They are exceeding expectations the most. NYCFC have 11 points, but the xG vs. xGA per game suggest they should have 18. Ironically, the game they were expected to lose with an xG of 0.8, they won over LAFC who had a xG of 1.2. FC Cincinnati should not have any points right now based on xG, they have managed four.
Feel free to come up with your own experiments with this. The 0.3 margin was my idea. Of course, everyone measures xG differently. This post uses the xG for each game based off the MLS website.