Swingmeter

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.

Share of matches where the model's favourite won, tested on matches the model never saw
MomentPro leaguesOther leagues
Before the game67% 1,200 matches58% 21,050 matches
After the draft69% 1,200 matches60% 21,050 matches
At minute 1073% 1,204 matches69% 19,338 matches
At minute 2078% 1,180 matches75% 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.