How prices are calculated
CSGOTrader mostly relies on Steam Community Market historical sales data to calculate it's prices.
It uses data gathered by CS:GO BACKPACK
If there is no market data it uses other providers, the whole algorithm is described in plain english below.
If you prefer to read the Python code itself you can scroll through this.
For popular items with stable market sales it's pretty simple.
A, If there is more than 5 sold in the past 24 hours and the average price does not differ more than 10% from the past week's average this is what the extension takes as the price of the item.
This is the case for most popular items.
B, If the difference from the last week's average is over 10%, it checks if the median of the past 24 hours of sales differs less than 10% compared to the last week's average.
If that is the case that median is taken as the price of the item. It usually happens when there are outlying sales the skew the average.
C, If that is not the case the extension takes the last week's average and adjusts it with the general market trend of the last week.
If the item is not that popular (in this case defined as sold less than 5 times in the past 24 hours) then the next best thing that can be checked is the average of the last week.
D, If there were more than 5 sales during the last week and the difference between that and the last month's average is less than 10%
this average is taken and used as the price after it gets adjusted by general market trends.
E, When there is less than 5 sold in the past week or there is no weekly data at all the monthly average is taken after adjusted with market trends.
If there is no monthly market sales data the algorithm proceeds to other providers
F, If there is no monthly market data it takes CS.MONEY's price and adjusts with the average difference between CS.MONEY and market prices.
G, If there is no CS.MONEY price it tries takes the Bitskins price and adjusts with the average difference between Bitskins and market prices.
H, If all of the above doesn't happen then the extension does not set any price to the item.
I, Doppler and Gamma doppler knives have special pricing,
if there is price info for the given phase for the knife on CS.MONEY, it takes that price and adjusts with the average difference between CS.MONEY and market prices.
If there isn't it falls back to the price calculated by the algorithm above.
Architecture - How the prices are scrapped, processed, stored and served
It all happens on AWS. There is a python script that is responsible for price scraping and another one that updates exchange rates.
The price scrapper script runs daily at 3AM UTC.
The exchange rates update every 3 hours.
Both of these Lambda functions are triggered by CloudWatch events and are executed in a Python 3.7 environment.
The pricing script scrapes prices from CSGOBACKPACK.NET, CS.MONEY, BITSKINS.COM, LOOT.FARM and CSGO.TM then the extension calculates it's own pricing with the algorithm described above.
The pricing data is stored in an S3 Bucket and made available and distributed around the world under the prices.csgotrader.app domain by Cloudfront.
The latest prices are always available at:
and each days pricing is archived in a path like:
For example: prices.csgotrader.app/2019/08/11/prices.json.