Gamalytic

How to accurately estimate Steam game sales

May 13, 2023

In this article, we'll explore several methods of estimating game sales on Steam. Mainly, we will look at the following estimation methods:

  1. Review multiples (Boxleiter method)
  2. Using the Steam's top seller rank to estimate revenue and sales.
  3. Polling public steam profiles to estimate game ownership. Similar to how SteamSpy used to work before the Steam profile privacy change.
  4. Using the number of concurrent players to estimate game's sales

At the end, we will come to an algorithm that estimates sales and revenue much more accurately than the review based approach.

To test the estimates, I collected this sample of around 120 games with public sales data and made a script that compares game sales to estimates on a given date. This is an unbiased sample that contains games of various sizes, genres and years of release. Due to high error margins, we will ignore games that sold less than 1000 copies in our tests.

Review multiples (Boxleiter method)

Let's start with the simplest method. Taking the number of reviews and multiplying it by a constant number. The median sales/review ratio is around 35. Here are the results after running a test:

Aggregate accuracy100.61%
Average accuracy63.74%
% of games within 10% error margin12.82%
% of games within 30% error margin42.74%
% of games within 50% error margin70.94%
% of games within 70% error margin88.89%

That's relatively inaccurate. Less than half of games are within 30% error margin and 30% of games are off by more than 50%

Now, let's try to improve our method by using different multiples for different release dates, price, review scores, and the like. Something similar to what is described here and here.

Aggregate accuracy103.58%
Average accuracy67.34%
% of games within 10% error margin12.82%
% of games within 30% error margin50.43%
% of games within 50% error margin80.34%
% of games within 70% error margin94.87%

This looks a little better, but is still pretty imprecise.

Estimating game sales using concurrent player count and average playtime estimates

Now let's try another method. We can add up the number of concurrent players for every hour and divide that by the average playtime estimate to estimate game's playerbase. Since number of concurrent players is reported as an exact number via steam API, accuracy of this method depends completely on the average playtime estimate. We can estimate average playtime from all public indicators like public profiles and game reviews. The more data points we can gather, the more accurate the estimate will be. Here are the results after running a test:

Aggregate accuracy100.31%
Average accuracy76.02%
% of games within 10% error margin21.11%
% of games within 30% error margin64.44%
% of games within 50% error margin93.33%
% of games within 70% error margin100%

This is better than the review based approach, but is still not accurate enough. Also, for some games we do not have accurate historical concurrent player data, so this method cannot be applied to all games.

Using Steam's top seller rank to estimate sales

Let's try one more thing. Using the steam top seller rank to estimate game revenue and sales.

Top seller rank is a good indicator of how a game is doing. Steam's top seller lists are generated automatically based on all revenue sources for a game, including DLCs and in-game-transactions.

This is a double-edged sword, as it allows us to estimate revenue for free-to-play games but can disrupt unit sales estimations for paid games with in-app-purchases, so we have to be careful with that.

Here are the results of the test.

Aggregate accuracy108%
Average accuracy71.74%
% of games within 10% error margin21.05%
% of games within 30% error margin61.4%
% of games within 50% error margin85.96%
% of games within 70% error margin96.49%

Polling public profiles

Finally, let's try polling public Steam profiles to estimate game ownership. This is the method used by SteamSpy prior to Steam's privacy policy change. Since the number of public profiles has been significantly reduced since Steam's policy change, instead of the 3-day rollback used by steamSpy, we will use a much larger rollback of 30 days to collect a sufficient sample. And then, we will use the number of reviews and the top seller rank to fine-tune the estimate.

Aggregate accuracy97.57%
Average accuracy80.82%
% of games within 10% error margin31.4%
% of games within 30% error margin77.91%
% of games within 50% error margin97.67%
% of games within 70% error margin100%

This method seems to be the most accurate for now, however, the problem with this approach is that it doesn't really work for smaller games, the margin of error is simply too large. So for anything under 20,000 players, we'll have to rely on other estimation methods.

Aggregating estimates

Now let's aggregate all of the above methods and see what we will get.

We will use different weights for different estimation methods depending on the game (eg for smaller games, profile polls are given less weight)

Additionaly, I will use this 2018 leaked dataset to further adjust the estimates for older games.

Here are the results:

Aggregate accuracy99.73%
Average accuracy80.46%
% of games within 10% error margin30.77%
% of games within 30% error margin76.92%
% of games within 50% error margin99.15%
% of games within 70% error margin100%

Now, this looks much better (than the review based approach we started with)!

Here is a detailed overview of the test results:

GameDateReported units soldEstimate% difference
Tile CitiesJul 10, 202214K14K0%
DinkumAug 17, 2022350K348.3K0%
RustDec 7, 202112.4M12.5M1%
Sea of Thieves 2023 EditionDec 22, 20215M4.9M-1%
Stardew ValleyMay 15, 202213M12.8M-1%
Garry's ModSep 20, 202120M20.3M2%
AragamiOct 4, 2019320K312.4K-2%
HandshakesFeb 21, 202360K58.5K-2%
Inspector WafflesMar 23, 20223.5K3.4K-4%
Yerba Mate TycoonJun 15, 20222K2.1K4%
Placid Plastic Duck SimulatorDec 7, 202276.3K73.4K-4%
Buddy Simulator 1984Oct 17, 202275K78.2K4%
The Planet CrafterMar 24, 2023500K479.3K-4%
HydroneerJul 27, 2022500K478.7K-4%
The Wandering VillageMar 25, 2023224K214K-4%
Sons Of The ForestFeb 24, 20232M1.9M-4%
The Witcher® 3: Wild HuntApr 8, 202012M11.3M-6%
Production Line : Car factory simulationAug 17, 2019100K106.1K6%
Dwarf FortressJan 4, 2023500K470.9K-6%
WartalesApr 27, 2023600K562.6K-6%
StacklandsJul 10, 2022450K480.2K6%
Darkest Dungeon®Nov 3, 20161M1.1M7%
Bonding AmbivalenceApr 1, 20233.4K3.2K-7%
Persona 4 GoldenJun 30, 20211M928.8K-7%
Train FeverNov 25, 201581K87.4K7%
Watch Your Plastic DuckJan 30, 20231.4K1.5K7%
Dungeons of EderaJun 16, 202238.6K41.7K7%
My Jigsaw Adventures - Roads of LifeJan 25, 20221K1.1K8%
Core KeeperJun 10, 20221M913.9K-9%
ShippedJan 20, 20239.5K10.4K9%
AvorionJun 13, 2022450K409K-9%
GROSSMar 9, 20233.1K2.8K-9%
Freedom Planet 2Nov 9, 202216K14.5K-10%
Punch A BunchFeb 24, 202310K11.1K10%
EVERSPACE™ 2Apr 20, 2023276K248.5K-10%
StationeersJan 20, 2023173K192.2K10%
ValheimApr 25, 202210M9M-10%
Lost PotatoOct 1, 20211.3K1.2K-10%
RollApr 20, 202222.4K20.1K-10%
Eggcelerate!Nov 20, 20211K893-11%
The Dungeon BeneathMar 30, 20213.6K4.1K11%
Dread HungerApr 13, 20221M891.4K-11%
Elong PlugMar 2, 20235K4.5K-11%
Big AmbitionsMar 25, 2023150K133.6K-11%
Out of AmmoJan 20, 202357K50.7K-11%
Deep Rock GalacticDec 31, 2018500K444.4K-11%
The Pale BeyondFeb 25, 20236.1K5.4K-11%
Octodad: Dadliest CatchJan 30, 2019660K585.6K-11%
Mortal GloryFeb 9, 202223.9K21.2K-11%
Please Fix The RoadJun 28, 202210K8.8K-12%
BarotraumaJun 4, 2021800K704.9K-12%
Noobs Want to LiveFeb 21, 2023100K114.7K13%
SpeedRunnersApr 5, 20161M866K-13%
Sands of SalzaarJul 27, 20221M860.8K-14%
Escape SimulatorMay 4, 20221M860.1K-14%
Golfing Over It with Alva MajoJan 20, 2023100K85.9K-14%
Cygnus EnterprisesApr 15, 20235K5.9K15%
Warsim: The Realm of AslonaDec 12, 202130K35.7K16%
Contraband PoliceApr 4, 2023250K209.9K-16%
Yi Xian: The Cultivation Card GameJan 21, 2023100K83.8K-16%
PawnbarianDec 8, 20218.4K7K-17%
InscryptionJan 5, 20221M1.2M17%
SupralandJun 28, 2020250K207.4K-17%
Loop HeroDec 9, 20211M1.2M18%
The RiftbreakerOct 13, 2022500K410.5K-18%
Battle Royale TycoonNov 4, 201915K18.3K18%
TownscaperMay 19, 2021380K468K19%
ICARUSJan 20, 20231M818.9K-20%
pureyaJan 20, 202317K21.3K20%
Among the Sleep - Enhanced EditionFeb 14, 2017186.1K147.9K-21%
West HuntFeb 3, 2023110K87.4K-21%
Crusader Kings IIIMar 17, 20222M1.6M-21%
PostCollapseApr 7, 20204K5.1K21%
Ravenous DevilsMay 15, 2022100K78.8K-21%
MixolumiaJun 22, 20211.4K1.8K22%
EVERSPACE™Apr 20, 2023879K684.1K-22%
MajotoriJan 20, 202335K45.5K23%
Cthulhu Saves the WorldMar 17, 2022671K514.5K-23%
Osiris: New DawnJan 17, 2023600K456K-24%
Salome's KissOct 2, 20221K1.3K25%
ProtolifeJun 25, 202017K12.7K-25%
FuriOct 11, 2020280K375.1K25%
City ClimberMay 17, 202120K14.8K-26%
Highway BlossomsJun 17, 202150K67.8K26%
Son of a WitchMay 9, 202223K16.9K-26%
SifuMar 31, 202350K68.1K27%
Hot Heat Reset: Chapter 1Mar 9, 20232.7K1.9K-28%
LOST EMBERJan 13, 2022134K96.3K-28%
A Little Golf JourneyFeb 24, 20231.5K1.1K-29%
NebulaFeb 24, 20232.4K3.4K29%
Project HeartbeatJan 5, 20223K4.3K30%
Guns of Icarus OnlineJun 26, 2014450K646K30%
PeglinApr 3, 201880.2K55.3K-31%
InductionMar 20, 20181.3K1.8K32%
Cultist SimulatorFeb 18, 201985K127.2K33%
Winter Falling: Battle TacticsNov 30, 20223.2K2.1K-33%
Gibbous - A Cthulhu AdventureJan 16, 202140K26.5K-34%
Out of Ammo: Death DriveJan 20, 202311.2K7.2K-35%
Missing HikerMar 14, 2023100K64K-36%
EastshadeOct 1, 2020127K81.1K-36%
Cauldrons of War - BarbarossaApr 8, 20238K5K-38%
Cosmic Star HeroineMar 17, 202258K35.9K-38%
PrimordiaMay 1, 2022200K121K-40%
Mortal Online 2Feb 2, 2022110K65.8K-40%
Knock-knockFeb 14, 201794K55.3K-41%
TinyfolksJun 9, 202210K17.3K42%
Slime RancherJan 13, 20225M2.9M-42%
TilecraftNov 30, 20221.2K2.1K44%
Bloody Rally ShowFeb 23, 20212.5K4.4K44%
The WreckApr 17, 20231K564-44%
Hats and Hand GrenadesDec 7, 202224.1K13.3K-45%
Larcin LazerFeb 23, 20231.2K2.2K45%
Missing HikerFeb 16, 202310K18.4K46%
The CompanionNov 21, 20223K1.6K-46%
Cthulhu Saves ChristmasMar 17, 202213K6.9K-47%
Will You Snail?Mar 18, 20227.5K14.1K47%
Cat HerderFeb 2, 20231.5K750-50%
Nightmare ReaperMar 26, 202220K53.2K62%

Estimating revenue

However, this does not tells us the whole story. We also want to know the revenue of the game, and sales and revenue do not have to be linearly correlated. Luckily, I made a small algorithm that factors in discounts when calculating revenue based on games price history profile. This should give us the right ball-park for the vast majority of games.

Unfortunately, for some games, the situation is not that simple. It can be hard to differentiate copies sold vs given away for free, and even harder to differentiate copies sold regularly and copies sold in bundles. Further more, it's pretty much impossible to know how the game has sold on 3rd-party sites.

We can use the ratio of reviews marked as purchased on Steam / Activated with a key, look for discrepancies in review ratios and playtime data, look for patterns in public Steam libraries that may indicate a game was purchased in a bundle, and use top seller rankings to help us deduce how many copies were sold directly through steam. However, there is currently no way to know exactly how much the game has made selling on third-party sites or in bundles. We can only confirm how many copies have been sold directly on Steam.

After all, nothing can be as accurate as the numbers provided by the developers themselves. You should always sanity check all estimates before making any decisions

Some things to watch out for:

  • Smaller games have less accurate estimates than the larger ones due to smaller sample size
  • Free-to-play games generally have less accurate estimations
  • Revenue estimates do not take into account revenue from any external sources and may not properly estimate revenue from steam bundles
  • There may be bugs in our scraping or estimation algorithm, causing the estimates to be wildly off. Always sanity check any estimates

Conclusion

Overall, using all of these methods together is far more accurate than using review-based estimations only. It is important to note, however, that when conducting market research, these estimates should only be used as a supplementary information and should not be followed blindly. Obviously, there is still room for improvement here, and I will continue to work on the algorithm to improve it even more.

If you found this article helpful, check out our tool at gamalytic.com