No.
I usually create reports for all DPC and Premiere tournaments, leagues and qualifiers. I also try to make reports for tier 1/2 tournaments (based on liquipedia). I add every report that seems to be important enough to look at, regardless of who is hosting it. And there are also immortal ranked stats for every patch (starting from 5900 MMR), as well as meta reports.
Sure! Just let me know about the details about the event and I'll make one. Most important tournaments get their reports anyway, and I would also like help out smaller events and make a report for them. The only exception would be events without any data available (either events without a ticket or without any replays provided).
Hit me up on Discord and send me your Steam ID and the photo, I'll add it.
Usually there are two reasons for that:
Meta reports are based on aggregated data from other reports. There are three kinds of meta reports: ranked meta (last week and previous week), competitive meta (last two weeks and previous two weeks) and competitive season (DPC tournaments or data for all major tournaments/leagues during the competitive year.
Ranked meta reports have the same data as Ranked patch reports - they aggregate immortal rank level matches. Competitive season and meta reports are using data based on all DPC competitions, as well as premiere/tier 1/tier 2 competitions (based on liquipedia tier). Qualifiers are not included in meta reports (at least not right now)
Reports for tournaments and leagues are updated as soon as new match finishes. Ranked reports, as well as meta and competitive season reports, are updated daily.
Short for Median Picks and Median Bans. It's a sort of metric used to show how popular a hero was to a median hero in a report. It's useful when comparing two different reports, and it's also easier to read and get some context out of it.
It depends. I actually have a bit more data that you can see in reports (e.g. items or wards data, players data for ranked matches), but I don't really have time to implement it for public use. I'm working on a completely new version of stats hub / platform with all this data and better navigation throughout reports. Some data is excluded from reports for privacy reasons.
I add links to official social media and sponsors of each event to every report. This is done to make it easier for people to find information about the TOs and sponsors.
It’s a rank from 0 to 100 (higher is better) that’s assigned based on Wilson score rating calculation result, taking into account the total number of matches played, the hero’s contest rate, the hero’s win rate. Effectively it’s a “smart winrate” that takes into account both number of wins and the hero’s total number of matches relatively to total number of matches played.
R-Rank, or Rev-Rank, or Reverse Rank is a rank that is reversed. Heroes who have a lot of matches, but are less effective (have low winrates) will get high R-Rank values.
Positions rank works similarly to overall heroes’ rank except it ranks specific positions and the formula has some slight tweaks to it. The idea behind it is pretty much the same.
It’s winrate of a team that banned the hero.
It's the difference between expected pair's matches and real match number. Usually this difference is higher for better hero combos.
Positions are based on role (core/support) and lane. Naturally, it's not positions 1 to 5 that you would expect.
Lane swaps (position 1 going from safelane to offlane and vice versa) may cause some heroes to have more matches on the same role, but another lane. Aside from that, support positions are divided into Support Safelane (which is usually position 5) and Support Offlane (which is usually position 4), the latter being every other lane, except safelane to count in roaming heroes.
Keep in mind, that heroes who switched their lane to jungle early on in the game are considered “roamers”, and roamers automatically count as supports. Because of that you may see slightly more games and heroes in offlane support categories - it also includes heroes who jungled since the first minutes. But usually it's correct.
Median is basically a value in the middle. Average values (aka arithmetical mean) are usually pretty close to median values, but while they represent a mean value and get affected by standout values (e.g. if you have a set of 10 elements equal to 20 and one equal to 100, mean value will be higher than 20), median values represent a value in the middle of a set. Practically median value represents a value that you will see the most (or you will be rather close to it). Median XPM, GPM, Picks and Bans values are important to provide context to other numbers — for example, looking at a hero's picks number and at median picks you can easily understand how much popular the hero is in relation to every other hero.
Depends on what are you looking for. First of all, every team has its profile and data in the profile is usually identical to what the report has in general. So if you’re looking for something that’s on the general report, but not in the team’s profile, it should be there. Every link with a burger icon on it means there are other modules inside of it, Try looking into these as well.
It doesn’t use the rank formula, so it may shift a bit for lower match sample. In general it’s just a record of a hero’s performance against a selected hero. For example, if you choose Sven, there will be Meepo on the list with its Win and Loss numbers, as well as overall win rate and win rate advantage over Sven. Higher advantage means the hero is better, lower advantage means the hero is worse.
It’s a visual representation of the most popular hero pairs as well as the most popular heroes in general.
Every hero combos component (pairs, trios or lane combos) works the same. Winrate difference is calculated based on average expected win rate of the heroes together. Expected matches is calculated number of matches the heroes would be picked together randomly based on their pick rates. Deviation is difference between expected number of matches and the actual number (higher number is better and means the heroes are usually picked together intentionally, negative values mean otherwise). A lot of pairs are considered insignificant and are filtered out with a limiter value.
It’s a calculated number of matches that’s required for a hero or a pair to be significant. It’s required to avoid filling reports with completely useless data, having only the most important data left.
Tell me about it.
You can contact me on Discord, Telegram, Twitter or VK (links are on the sidebar). Most minor issues fix naturally when you reload the page (and I'm aware about the issues, it's related to stuff I described on Support page).
Yes, there is, but I don't recommend using it. I made it mostly for myself, its documentation is basically non-existant and I don't really have much time to support it. Although, you can get all the data you can find in a report.
I use OpenDota and official Dota 2 WebAPI for official matches and Stratz for ranked matches.
It’s common for higher ranks to queue on closest popular region. I.e. EUW for RU players, USE for USW.
I've got match IDs manually extracted from leaderboards players' recent matches using STRATZ API. Then I fetch match data using OpenDota API.
Almost. I'm not checking all the matches by myself (it would take too much time, requesting every single match and checking it's average rank). I'm using STRATZ API filters for that, minimum match rank is set to 80 (immortal). In some cases uncalibrated players or those who got to play with nine immortal players in game may get through.
Every night there is a match collection routine running. Data collection and processing take a couple of hours. You can find more specific times on the reports updates schedule page.
I don't. To collect the stats I'm using match histories of Immortal players using the list of known players and public data. Bad actors who tend to exploit matchmaking in this way usually play in a lobby with 10 anonymous players. Because of that, there is not even a single player who would have these matches in a public match history, and because of that these matches are naturally ignored.
In addition to that, I have various filters for match duration, abandons, low score and other suspicious activity. While this is not a solution for every case (and it's not intended to be one), it's good enough for what I'm trying to achieve.
I'm using item purchase events to calculate items stats (this data is acquired from the detailed analysis). This kind of approach allowes me to get more accurate data (compared to using endgame inventory), and allows to calculate item timings and winrates on different stages of the game.
Mostly of price: early items are cheap and can be bought on themselves only early on, middle are 1-2.5k gold items without upgrades, major items are everything else. Neutral items are divided by tiers. Categories are moderated by me.
I'm using Stratz data for that and in some cases assembled items may be recorded incorrectly (and may be missing from data, like Boots of Travel and Orb of Corrosion on 7.28 release). In case of neutral items, I'm using per-minute inventory data to record neutral items pickups (there are no purchase events since these items aren't purchased), and consumable neutral items (like Royal Jelly and Mango Tree) will have much less matches because of that.
“When picked” is by how much the winrate of a hero changes when the item is acquired vs when it is not. Early and late timings are differences in winrate when the item was picked up early (Q1 timing and earlier) and late (Q3 and later) vs average item timing. Gradient represents by how much the winrate changes with every minute, starting with Early timing/winrate.
It's a tree (graph), that represents items' purchase order (by arrows) in time (every layer vertically is equal to ~6 minutes of the game) and success of an items purchase order pair (by color). You can also see the same data as a table.
Due to Laning stats being such a complex topic, I decided to make a section dedicated to explaining limitations of the current implementation, as well as to answer most common questions
I used Dota2ProTracker as the source of data for skill builds for some time, but at the moment of writing it’s broken. I have my own dataset, but didn’t implement the feature yet.