Spectral Stats Hub December 2020 Update

Lea Spectral
6 min readDec 10, 2020


The title doesn’t really sound that impressive, but I have A LOT OF STUFF to tell you about.

Stats Hub: https://stats.spectral.gg/lrg2/

First of all, version number was bumped up from 2.11.0 to 2.14.0. I was working on some stuff in the background, and you may notice this three major versions gap in the version numbers. There are a lot of changes, starting with small visual improvements and ending with the Items section.

So let me start with some small stuff I already introduced during November.

  • Locale selector is no longer using GET parameters. It wasn’t that big of a change, but I was to lazy to implement it for a long time. It’s going to save your preferred language now.
  • Added patches information to the reports list/overview.
  • Added support for localized names and descriptions.
  • Added support for sponsors info, tournament links and tournament org link.
  • Added hero counters section (aka Hero vs Hero overview)
  • Added full hero combos to analyzer (disabled by default). If a report is using full hero combos, it’s going to generate hero combos overview dynamically.
  • Minor improvements to graphs, minor improvements to missing matches.
  • Improved limiters calculation formula for hero pairs/trios. It should improve readability of meta graphs for high-match reports.

I also launched Courier node back in August to handle all the resources and have them all in one place. And because of this I can use some of these newer icons and other stuff in the stats hub.

All the technical stuff about every of the changes is described in my discord.

NOW, let’s move to the newer stuff.

  • Improvements to time values display (nothing serious here)
  • Teams got average pings per game value (nothing serious here either)
  • Teams profiles also got a new component, showing icons of all the unique heroes a player played during an event
  • …and teams also now have logos
  • Players are also now sorted by positions (1 to 3, then supports) in team cards and team profiles (thanks to Tsunami for this suggestion)
  • Team’s hero positions section now also shows the list of players and their most played positions… (thanks to Tsunami as well)
  • …and for a specific position it also shows the number of matches of every player who played this role
  • Team’s hero/player positions got a slight overhaul: they now support positions matches lists (if the report as a whole supports it; thanks to Tsunami again)
  • Oh, yeah, right. Did you notice? Tournaments now also have a new format to display matches: aside from match ID you will also see teams names now AND the number of the match. It’s not limited by a specific series though.
  • Another thing tournaments reports got: they now also have the league’s ticket and banner.
  • Data wrapper for JSON objects got slightly updated — and reports now have even less filesize while having bigger amounts of data!


I already had some experiments with the items data for a couple of years at this point. Now some of these ideas were implemented in the reports.

Items data is kind of separate from the report as a whole. It’s not tied to any team or region, and it doesn’t take positions into account.

AND items data is also based on every purchase event. What it means is it’s way more accurate than items data represented by inventory. However, there are some limitations to keep in mind:

  • neutral items aren’t purchased, so there’s no data about neutral items (yet)
  • early game items, item components and ESPECIALLY consumables take too much space, so I filter them out

Again, if you have any questions, you may want to check my discord server. I’ve explained (well, more like wrote down) my thought process here, and you may be able to ask something else, too.

Items stats are enabled for meta reports and will also be available in the EPIC League combined report.

So, what kind of items data is here?

“Stats” and “Heroes”

These sections have some basic items stats:

  • Purchase rate
  • Winrate shifts when the item was bought, got picked up early or late
  • All sorts of item timings

In the Stats section you’re also able to filter items by category: early, medium (~1–2.5k gold) and major items. And you are also able to select a specific hero to see its items stats.

Items Heroes section is reversed: you may select an item and see stats of every hero with this item.

Boxplots and heroboxplots

It’s the same kind of data you see in Stats/Heroes sections, but represented visually.

Boxplots represent item timings (min, max, early and late timings, median timing), as well as winrate (white line inside of the box).

Inspired by STRATZ Item Timings article: https://medium.com/stratz/dota-2-item-timings-22d2dbd76bc4


…represent pairs of items bought together. That’s about it.


But items pairs are not as interesing as item progression combos. These are items that were bought one after the other. It may be represented as a table, but the most interesting part is Progression Tree — a graph representing “average” item build.

Records and Overview

These are the most boring components. Records has the earliest item timings on the event (in the report), items overview shows some of the most impactful items with the highest positive/negative effect on winrate, as well as records for items with the highest winrate gradient per minute.


  • Report descriptors are not included in the response anymore
  • New flag: desc, allows you to get report descriptor with the response
  • New flag: teamcard, allows you to get team card along with the response
  • Response now also includes report tag
  • Teams positions and teams positions matches were fixed
  • Teams profiles are now working as intended (instead of returning whole data dump)
  • New variable: itemid
  • Items related endpoints were added
  • Added support for match strings descriptions (these new team names and game numbers). There’s also a new “min match card” type of objects. It’s used in a response for positions matches. Records are also adding min match cards, but only if the report supports it (it will be unset otherwise)

And that’s about it!

I’m going to write about some observations in the items data soon enough, and I also have a big announcement to make, so stay tuned.