How Swingmeter predicts Dota 2 matches
Swingmeter shows the probability that each team wins a Dota 2 match, at three moments: before the game, after the draft and during the game. This page explains where those numbers come from and how much you can trust them.
Three machine-learning models
Before the game, the first model rates both teams and their players from more than 90,000 past professional and amateur matches: ratings that rise and fall with every result, recent form, experience in this tier of competition, head-to-head history and roster changes.
When all ten heroes are picked, the second model adds the draft: the heroes themselves, how they fare against each other and how comfortable each player is on the hero they chose.
During the game, the live model reads the official live feed every few seconds: gold and experience lead, kills, towers, barracks and game time, and weighs them together with what was known before the game.
How we test the models
A model that is checked on the same matches it learned from always looks better than it is. So we train on older matches and test on the most recent months, which the model has never seen, exactly like predicting the future. The table below shows how often the favourite of each model actually won in that test period.
| Moment | Pro leagues | Other leagues |
|---|---|---|
| Before the game | 67% 1,200 matches | 58% 21,050 matches |
| After the draft | 69% 1,200 matches | 60% 21,050 matches |
| At minute 10 | 73% 1,204 matches | 69% 19,338 matches |
| At minute 20 | 78% 1,180 matches | 75% 17,908 matches |
For comparison, a coin flip is right 50% of the time.
Live results
Since launch, every finished match is added to a live track record. The main figures on the home page combine the test results with the live ones; as live results accumulate, they carry more and more weight.
Limits worth knowing
A probability is not a promise: a team at 70% still loses three games out of ten. Amateur leagues are harder to predict than professional ones, because players change teams more often and many play few recorded matches. New teams and stand-ins have little history, so their first estimates are closer to 50%. Live data follows the broadcast delay, so the numbers move together with the stream, not ahead of it.
Data and responsible use
Match history comes from OpenDota and the live feed from the Steam Web API. Swingmeter is not affiliated with or endorsed by Valve Corporation. Everything here is analytics for information and entertainment, not betting advice.