Gaming: the Roblox Economy
Roblox is an online gaming platform where anyone can play, create, and share their own virtual worlds and character customizations. From humble beginnings in 2009, Roblox has grown into a vast virtual economy. According to company data, Roblox has 66.1 million daily active users as of Q1 23. They made $2.2 billion in revenue in 2022 alone, making their virtual economy on the scale of some small nations. Although much of this revenue comes from the sale of Robux (R$), their virtual currency, and from the sale of games on their platform, there is also a huge market for collectible items and character customizations. This market, being targeted largely at children, is not without some serious flaws. But with new, advanced development tools and the possibility of cashing out, Roblox has started to appeal to adult developers as well. Today, I’m going to take a look at the Roblox asset trading economy. Let’s see what the data says!
Getting the Data
In order to analyze the Roblox trade economy, I needed data on the current market prices and trade histories of items in the Roblox catalog. Although there are millions of items in the catalog, there are several categories. We’re interested in understanding limiteds. Limiteds are assets with a limited number of copies. In this way, they’re essentially NFTs backed by the Robux. They carry real-world value through the developer exchange program (DevEx). Limiteds can be created by users (UGC - user generated content), or they can be official Roblox assets. Unfortunately, I was unable to find any endpoints which let me distinguish between official content and UGC. This is a shame, it would be interesting to see how they compare in value and popularity.
But that is not to say that Roblox has a restrictive API. Quite the opposite - you can access their Swagger API’s documentation directly. There is a very handy Github page with links to each endpoint’s docs. However, most of these require cookies or other content restriction, making them impossible to use programmatically outside of the official Roblox ecosystem. If you’re interested in creating a Roblox game which does something similar to this blog post, there is a catalog scraper script you can use.
The Roblox economy is way too big for this surface-level hiccup to stop traders from participating in the platform though! There are many trading websites and games out there which do exactly what I am trying to do. One of these is rblx.trade, a site which interacts directly with Trade Hangout, which is by far the largest trading game in Roblox. They also helpfully have their API freely available. The rest of this blog follows the trail that rblx.trade sets out, and I’m very thankful for their data!
I created a Jupyter notebook with a script to scrape their API and download their catalog and trade history data. I ensured this script didn’t DOS their servers by adding plenty of caching and timeouts. In total, their catalog has just under 3000 assets, a total of 84M of trade history. This is a far cry from the total number of items available, but it is more than enough to do some analysis, and I will not get to cover even a fraction of it in this post. You can check out the code I wrote for this post on the Prospective GitHub if you want to play around with it yourself.
Playing with the Data
I began by populating a Perspective viewer with the catalog data and playing with it. The first thing that I was curious about was the difference between roblox_rap and roblox_value. The value denotes the asset’s listed price. The RAP - recent average price - is an average of the most recent trades. I’m not sure exactly how it is calculated, but its presence on the official catalog means it’s legit.
The first thing to do is of course to see just how much these assets are worth! And at the very right, we see Dominus Frigidus (”Frig”) with a RAP of 28 million R$. This translates to $98k USD by the set DevEx rates ($0.0035 per R$). That is a hugely impressive amount of money for a single item - but this value is quite different from its listed price of 19m R$ ($66k USD). That’s a gigantic margin. Let’s take a look at those.
In these charts I used our ExprTK scripting support to create some custom columns. One interesting thing to note here is that the more popular an asset is, the more wildly its RAP varies from its listed price. This makes sense - popularity likely tracks trade requests, meaning that the more demand there is for an item the more volatile its price becomes. There are also a lot more undervalued than overvalued assets, and a huge collection of assets whose RAP exactly matches their value - so many I excluded them from the chart.
I noticed I had historical data, so I decided to do some analysis on that. We have a data point which accumulates sales for the past 30 days of trade. It looks like there were a lot of big sales for items released before 2020. There seems to be a maximum towards 2013, and it turns out that most of these are fedoras! Specifically, “Sparkle Time Fedoras.” Go figure.
You might also notice on this chart that there is a huge gap between 2019 and 2021. I’m not sure if this correlates to a specific event in Roblox history, or if this is just a quirk of the dataset. Either way, there’s more investigation to be done there.
Since I have the data for individual asset’s trade histories, I decided to take a look at the some of them. It looks like the Purple Sparkle Time Fedora (”PSTF”) is increasing in price pretty rapidly! That would explain its position in the historical chart. I also wanted to look at Dominus Frigidus since it holds the position as the most overvalued Roblox item out there right now. Unsurprisingly, it has very few trades. Notably, there were no trades between 2016 and 2021. Perhaps some of that trade data is missing from the gap we noticed earlier, but the value hadn’t changed much between those periods anyways, so I imagine it just fell out of favor. But whoever bought Frig in 2021 turned a huge profit, selling it for the devex USD equivalent of $700k and earning a cool $690k. The price quickly corrected itself though, and Frig was most recently sold for $192k USD.
Total trade value is nice, but I wanted to see which values are traded the most - the beating heart of the Roblox economy. I tried looking at the items with the largest popularity_ranking, but this likely tracks trade requests, not trades themselves. By manually looking, I found the Perfectly Legitimate Business Hat (”Legit”) and the Super Super Happy Face (”SSHF”) with an impressive 3067 and 1677 lifetime trades respectively. Interestingly, there was a period of time where the SSHF was rapidly given away for free, but it seems to have pulled itself back out from the dirt.
Tip of the Iceberg
I’ve barely scratched the surface of the data I’ve collected, yet alone all that’s out there. Most of the analysis in the post is done on the catalog itself, with some scant analysis of the trade history of various individual items. There are many more API endpoints for tracking who traded what and when. rblx.trade even has a websocket API, which I suspect powers their Discord bots. Perspective is built for live data, so it would be awesome to get access to that. However, I hope I’ve demonstrated the power of the Perspective workflow to play with the data. Combined with the Prospective dashboard it’s easy to see that the possibilities for visualization, quantitative analysis, and observability have no ceiling.
Thanks for reading!