Expected Goals in Rocket League
Return of the Winners

TL;DR at bottom


Part I was the origin story for the expected goals (xG) model, while Part II covered the stats in detail.

Makings of a Winner 

Here, we will take a look at what characterises a winning team and draw some conclusions about where Rocket League. This article will make references to stats which can be found here.

Looking at Dignitas

Having a team named Dignitas means you have a 66.6% chance of winning RLCS. Being Turbopolsa means you win 50% of all RLCS’s1.

What separates Dignitas from the pack is their great individual shooting and goalkeeping ability. Dignitas went on a 7-0 streak, dropping very few games. Their striking was on point, although led by Kaydop, both Turbopolsa and ViolentPanda can count themselves among the top shooters in the world. Not wanting for any offensive or defensive skill, Dignitas managed to do with a bang-average xGa per game.

However, simply going off (goals per xG − goals conceded per xGa) does not provide a good measure of a team’s abilities. Whether you do that based on the exact numbers (which puts PSG, compLexity, NRG, and WDG on the bottom while Ghost is 3rd), or based on the normalised numbers where standard deviations of the two stats are both set to 1 (which puts EG second-last and Rogue 6th, above NRG and G2), neither of these combinations look great.

Continue reading “Expected Goals in Rocket League
Return of the Winners”

Expected Goals in Rocket League
The Data Strikes Back

TL;DR at bottom


The first article of the series (basically the origin story for the model) can be found here. To summarise, I’ve trained an expected goals (xG) model and applied it to RLCS Season 6 League Play.

The calculated stats and visualisations are here:
    2D shot charts: https://imgur.com/a/iegdnoi
    3D interactive shot chart: http://blog.calculated.gg/files/xG.html
    Spreadsheet: https://docs.google.com/spreadsheets/d/e/2PACX-1vTKx7TQRj67P6tSb21lIAMx3x7qAxQzZUdV3UZld6aIsvhynbY8jIzUj7e5dTfZpoMKXxeR4jFXXxm3/pubhtml#

Diving into the Data

The previous article covered the generation of expected goals (xG). In this article, I will be going over highlights from the data, and what conclusions can be drawn from them. I’ll compare regions, teams, and individual players. Now, let’s have a look at the data!


Players’ and teams’ xG stats are roughly equal between regions, usually with a difference of <2 standard errors. There is a trend, however, of EU having fewer chances (xG per game and xGa per game) compared to NA. This reflects the way EU plays more defensively than NA, and with a less-direct approach.


Chance conversion: goals per xG. Dignitas were the kings of converting their chances while preventing opponents from converting theirs, having both the highest goals per xG average (1.7)  and the lowest goals conceded per xGa average (0.7). On the other side of the spectrum, compLexity struggled to score, averaging 0.9 goals per xG, while PSG faced problems preventing shots from entering their net, with an average of 1.3 goals conceded per xGa.

Continue reading “Expected Goals in Rocket League
The Data Strikes Back”

Expected Goals in Rocket League
A New Stat

TL;DR at bottom

Expected goals: An introduction

What is an expected goal?

Expected goals (xG) is a stat (commonly used in football and hockey) that quantifies the quality of a scoring opportunity (a chance). For every shot in every game, the probability of that shot becoming a goal is predicted. In the simplest of models, this is usually based on the distance to the goal. Intuitively, the further you are from the goal, the less likely your shot will be a goal.

Quantifying the quality of scoring opportunities is a pathway to many analyses I consider to be crucial. Consider a situation where you and your solo standard teammates all take 5 shots, scoring no goals. You point out that your shots were flip reset double touches musty flicks where you just failed to beat the last defender, whereas theirs were open-goal misses. The end-game scoreboard stats sadly misrepresent the situation and fail to reflect that it was your teammates’ failed shooting that cost you the game1. Here’s where expected goal (xG) stats come into play! You can point at your low xG, which reflects the quality of the chances you had – it was to be expected that you would not manage to convert them. Their xG, on the other hand, will show that they were on the receiving end of significantly more/better chances and should have scored more.

Over a large number of games, players’ goals per xG will represent their ability to convert chances, and their average xG per shot will indicate the difficulty of shots they’re taking. Also, players’ average xG per game represents the scoring chances they get (and when comparing between teammates, this number can show their respective usage percentages on the offensive end of the field).

Continue reading “Expected Goals in Rocket League
A New Stat”

If RLCS Season 1 players were transported to 2019, what rank would they be?

This is a very interesting problem, since the skill level at the professional level has clearly gone up. We’ve had similar ideas floating around the calculated.gg developer Discord for a while.

Then, recently, there was a reddit post on this topic on /r/RocketLeagueEsports:

 The general consensus in the post was that they would be around Champ 1 or Champ 2. Is this correct?

No one in Season 1 was hitting ceiling shots or flip resets, and its even quite easy to see that the speed of play has increased dramatically. Since we have data all the way from Bronze 1 to 2000 MMR Grand Champion, we should be able to figure out where on that scale a given Season 1 replay sits. That’s what we’re going to talk about today. But first, lets step back and talk about how we would even quantify skill level in the first place.


If you’ve used calculated.gg before, you know that we offer a range of stats relating to positioning, ball possession, boost, and team play for every game submitted. In the database, we have access to the skill level (rank/MMR) and the stats of each player in each replay. Therefore there’s an easy way to relate skill level to each stat. We can simply place rank on the X axis, and the mean stat for that rank on the Y axis. This gives us easy-to-read graphs such as this one:

Mean aerials per game (5 minutes) compared to rank, pulled from the calculated.gg database.

We even tweeted about it back in October 2018, with a link to an album of all the stats at that time compared to ranks. At the time, we were lacking in bronze-gold, and that is still somewhat true today. Luckily, that most likely won’t be an issue when ranking Season 1 games. Surprising, right?

Continue reading “If RLCS Season 1 players were transported to 2019, what rank would they be?”