GXD – A clearer way to communicate player diff stats

Some time ago, I introduced the concept of “slash lines” as a way to measure players’ early game performances. The idea was to move away from creep score difference (CSD) stats, especially for junglers, and begin looking more at gold and experience differences.

Gold and experience diffs have several advantage over CS diffs. They capture the actual value of each CS, instead of treating a siege minion as having the same value as a caster minion. They also handle the rewards from jungle camps in a more consistent way, compared to the challenges that existed with the past approach of counting every jungle monster as 1 CS, or the current approach of counting every camp as 4 CS.  Gold and experience also do a better job of normalizing measurement of oddball lanes like the current Spellthief’s Sona, or last year’s Spellthief’s/Klepto Zilean.

There are some problems with the slash lines approach, though, and I’d like to move forward with another step that should help.

What problem are we trying to solve?

First, let’s understand the challenges with using slash lines. The biggest issue is that slash lines are messy to read and write. When I say that Lira has +132/-68 GD10/XPD10, that’s a whole lot of characters on the screen. It can definitely feel pretty cryptic.

In baseball, slash lines are baked into fan consciousness in a far more widespread way, so seeing that a player “hit .288/.354/.344” isn’t especially jarring. One of the main advantages, of course, is that there’s no need (or less need?) to list the acronyms for each stat afterwards. It would be far worse if the baseball writer had to say “he hit .288/.354/.344 BA/OBP/SLG”.

Even with those advantages, though, baseball analytics looked for ways to move past slash lines, and that led to the “OPS” stat, or On-base Plus Slugging. The concept is dead simple: take a player’s on-base percentage and add it to his slugging percentage. Now you have a combined metric that requires only a single number, and a single acronym, making communication and interpretation much simpler.

There is some loss of nuance in combining the metrics, and the purist in me isn’t sure whether it’s appropriate to add two numbers together unless their scales (and therefore their implied individual weighting) are nearly identical. But I can get past those concerns because the goal of the combined metric is readability and simplicity, and any in-depth exploration is naturally going to pull the stats apart again and look at them “properly.”

Creating GXD

Taking a cue from OPS, I propose to do something similar for League of Legends’ early-game player diff stats, combining gold difference and experience difference into a single metric called GXD. When using 10-minute stats, the metric should be written as GXD10, or GXD15 for 15-minute stats, etc. (I’m not a fan of the @ symbols in the acronyms since they not only add an extra character, but they’re very eye-catching and disruptive, and the “at” in, for example, CSD10, is very much implied without having to be explicitly specified.)

To satisfy my own potential criticisms, I looked into the scaling on gold diffs and experience diffs. If gold diffs were usually in the hundreds (e.g. +250), while experience diffs were usually in the tens (e.g. +25), then it wouldn’t make sense to combine the two, because we would be over-reporting the influence of gold and under-reporting experience.

The data backed up my anecdotal observations from the past few years: while gold and experience diffs are not a perfect match, they are very much on the same scale, as you can see in the table below.

Position Avg Abs. GD10 GD10 Std. Deviation Avg Abs. XPD10 XPD10 Std. Deviation
Top 375.0 506.0 334.6 448.9
Jungle 383.9 499.8 432.4 550.7
Mid 315.3 426.2 327.4 462.7
Bot 377.9 523.5 288.7 408.7

Based on pro matches since January 2018.

Averages (means) are reported as the average absolute value of the difference, since a simple average includes both sides of every matchup, and therefore would always return zero. The standard deviations show how wide of a range we typically see, with 68% of cases falling within one standard deviation below or above the average value. In other words, in about two-thirds of games, the size of gold difference at 10 minutes in a top lane matchup will be 506 gold or less (or 426.2 for mid lane…).

Bot lane has the highest difference between GDs and XPDs: gold differences there tend to be somewhat larger than experience differences, due to the way duo lanes receive experience points from minions, getting a bonus amount but dividing it between them. So bot lane GXDs will slightly over-weight gold, but that is thematically appropriate for the role.


To help get a feel for the new stat, here’s a quick overview of GXDs for LCK top laners, with CSDs included for the sake of comparison and context.

Player GXD10 GD10 XPD10 CSD10
Nuguri 430 302 128 6.2
Kiin 298 157 141 6.7
Summit 301 155 146 7.6
Sword 292 121 171 1.4
Lindarang -58 -2 -56 -2.8
SoHwan -70 -7 -63 0.1
Khan -122 -43 -79 0.1
Rascal -162 -95 -67 -5.4
Smeb -184 -123 -61 -4.2
CuVee -363 -237 -126 -2.8
Kingen -530 -311 -219 -11.4
Thal -811 -505 -306 -11.7

2019 Summer Split as of July 2, 2019

Using GXDs, we can see that CSD stats might overrate Summit (highest CSD but only third in GXD) and CuVee (tied for sixth-worst CSD but has the third-worst GXD).

From a wider lens, it’s also worth noting that GDs and XPDs are highly collinear (there are no players in this table with a high GD but low XPD, for example). We know that the relationship between gold and experience doesn’t follow the exact same pattern in each lane, but overall the collinearity makes sense because gold and experience come from the same sources. This is a further point in favour of combining the two stats into one metric, since they give us a wider range of values for analysis, making it easier to identify and discuss differences.

Notes on Usage

GXD will be best used in written content, infographics, social media, on-screen applications, and so on. It should be used whenever the goal is to succinctly describe a player’s individual performance. It’s an end-user metric, not a deep-dive stat; it is intended to be communicated and discussed.

Some good stats to place alongside GXD include the more common overall player performance stats, like KDA. I see GXD fitting best into packages of three or four stats per player, as a performance overview. Anything deeper than that, say with six or eight metrics, will likely be a deeper dive into a specific aspect of performance, so in that case it may be better to bring in something more nuanced than GXD.

I will not be adding a GXD column to the Oracle’s Elixir stats tables for now, because the individual components (GD and XPD) are already reported there, and they can be easily added together.

If you have any questions, comments, or suggestions about GXDs, or would like to build on this line of thinking with your own innovation and want to bounce some ideas off me, feel free to get in touch at tsevenhuysen@oracleselixir.com.

Header image courtesy of leagueoflegends.com.

2 thoughts on “GXD – A clearer way to communicate player diff stats”

  1. Interesting idea. I was a bit surprised that gold and XP tracked alongside each other as closely in pro games as they do – thought they’d be be correlated but mistmatched. Wonder if over time changes to the game brought them closer together?

    Small typo about halfway in:
    “one standard deviation below or average the average value”

    1. Yeah I was pretty sure going in that the scales were going to be quite similar, based on looking at a look of side-by-side GD and XPD values when I would review player stats at various times. I didn’t expect that the relative “weighting” would differ between roles, with some roles seeing wider gold ranges and others seeing wider XP ranges. There’s room to explore all of that more deeply, and it could be interesting, but I don’t think it’s necessary because at the moment I can’t think of any important ways that it would change the storytelling that those stats produce.

      Thanks for catching the typo!

Join the Discussion

This site uses Akismet to reduce spam. Learn how your comment data is processed.