You Don’t Need a Satellite
There are often articles written about hedge funds using satellites to count cars in parking lots to predict a retailer’s revenue. It’s unclear if this is a widespread practice but there are easier and more accurate ways to predict revenue ahead of earnings.
A quick disclaimer before we start: I have only used this technique to build models to better understand companies and markets. I do not use this for trading stocks.
The majority of companies leak data through sequential IDs. These ID will show up on invoices, order receipts, shipment tracking and as user identifiers.
Many of these IDs (especially ones related to orders/invoices) have a direct correlation to revenue.
Here’s a quick example from a publicly traded meal delivery service I’ve been tracking. Their order IDs are sequential and they print them on the label of every shipment.
The number in the red box is the order ID. Every time they ship an order to a customer, this number goes up by one.
This ID is just one in a sea of numbers on that label. There are multiple ways to confirm a number is sequential and represents the metric you wish to track. For low value items, you can place multiple orders quickly to ensure the ID is sequential. For public companies, you should track these numbers every quarter and compare them against the 10-Q or any public filings/disclosures.
If the company isn’t public, look for revenue disclosures in press releases, blog posts and podcasts. You can pick up a lot of metrics from listening to founders and execs being interviewed on podcasts.
Back to the meal prep example. My favorite source of stats is from S-1 filings. In the first few pages of this S-1 they claim to have shipped almost 25 million paid orders.
If I go to my order history page and open the network tab in Chrome’s Inspector window, I can see a shipment ID close to 25 million around the same date.
(They offer free meals if you refer a friend. 25m is the number of paid shipments, the 26.3m is likely the raw number of shipments.)
If this ID increased at a predictable rate, it’s possible to assume the ID reflects the number of shipments.
To turn this number into a revenue indicator you would need to place an order at the start and end of every quarter, calculate how many orders were shipped during that quarter and compare it to the revenue reported by the company. Publicly traded companies have 60 days after the close of the quarter to file their numbers.
You will need to track this for several quarters before you can be confident in your estimates.
You may need to adjust for changes in the average order value due to seasonality. However, for this example. If we go back to the S-1, we’ll notice a fairly stable average order value.
A steady AOV increases the accuracy of our revenue model.
While this is a neat and tidy example (it’s rarely as simple as reading the number on a shipping label), I’ve found that it’s relatively simple to find these IDs for lots of companies. You can look for IDs in URLs, hidden values in forms, email receipts or in JSON responses (GraphQL is making this much more common!).
These techniques can be used on a huge number of e-commerce companies. With the flood of startups rushing to IPO, and the move towards microservices architecture and frontend frameworks, it’s common to see multiple revenue indicators.
If you want to explore more and build your own models, here are a few tips:
Keep Looking #
Some companies make efforts to obfuscate their IDs. Here’s an example from a popular coworking provider who uses random invoice numbers.
However, if you look under the network tab in Chrome’s Inspector window, you’ll see the real invoice IDs being sent to your browser.
Calculating Average Order Value #
If the company is private and you want to track revenue, you’ll need to calculate the average order value. You can get this from most affiliate networks, here’s an example for Loft.com.
The AOV from an affiliate network is skewed to a single acquisition channel. As many affiliate programs get a lot of traffic from coupon or discount sites, affiliate customers tend to have a lower AOV. You can adjust for this.
Limited Visibility #
The coworking company from the example earlier puts the member ID in the URL. If you wanted to track the raw number of users every month, you could conduct a random search, note the IDs and read up on the German Tank Problem.
You shouldn’t crawl the site. That’s bad form and usually goes against the terms of service.
Without IDs #
If you can’t get a sequential ID or you want to add more data to your model, site traffic is a great performance indicator too. SimilarWeb is a good third party source for unique visitors. I don’t trust the raw numbers but I have found it to be directionally accurate for high traffic sites.
Just like counting cars on satellite images, these techniques will only help with revenue forecasts.
I’ll follow up with a post about data that can be used as a predictor for overall performance.