Every week I’ll provide updates on the latest trends in cloud software companies. Follow along to stay up to date!
Hyperscalers Report - With a Massive Headfake!
What. A. Week! AWS (Amazon), Azure (Microsoft), and Google Cloud (Google) all reported this week. Quick recap below:
AWS (Amazon): $85B run rate growing 16% YoY (last Q grew 20%)
Azure (Microsoft): ~$60's billion run rate (estimate) growing 31% YoY (last Q grew 38%)
Google Cloud (includes GSuite): $30B run rate growing 28% YoY (last Q grew 32%, neither are cc)
Coming into the week, all eyes were on these 3 quarterly reports. As I’ve mentioned before, everyone is searching for the “bottom.” How would I define the bottom? When the tailwinds of new business start to overcome the headwinds of optimization (or when headwind of optimization becomes a tailwind of net expansion). It’s pretty well understood that consumption trends will bottom and reverse prior to seat based purchasing. Everyone is hoping to find a glimmer of data to suggest that the headwinds are abating and easing. This week was a roller coaster. Azure reported on Tuesday and gave us that glimmer of hope. Then AWS appeared to add fuel to that hope before giving us a huge rug pull. Let’s talk about each.
Azure: Coming into the quarter, a growth rate that would have satisfied the market would have been ~29%. Azure came in at 31% (constant currency). At first blush - a nice positive. A better-than-expected, or better-than-feared result. Was this potentially the first data point to suggest the headwinds were starting to simmer down? Then came the earnings call. On last quarters earning call Microsoft really emphasized the weakening demand environment for Azure / Cloud as optimizations picked up. This quarter, their tone was noticeably more neutral. Their CFO said “we're continuing to set optimization. But at some point, workloads just can't be optimized much further.” Their CEO called out new workloads starting to ramp (to be fair he also called out “intense optimizations”). They then guided to 26-27% Azure growth in Q2. Buyside expectations were closer to 24%, and fears of low 20’s were entirely possible. Overall - the tone on the call (lack of focus on optimizations + comments like I mentioned above) gave us a glimmer of hope that maybe the data was starting to turn positive. To be clear - this was never data to suggest acceleration was starting. But it COULD have been data to suggest a bottom was forming. As I mentioned on Twitter - could we be in he rounded curve of a Nike Swoosh shaped recovery?
The big question - was this relative strength from Azure idiosyncratic? After all, they had a lot of AI tailwinds, and benefited tremendously from consolidation (without a headwind of a larger base of smaller startups, like AWS). All eyes shifted to the AWS report on Thursday. Their report would either confirm that the market was starting to shift (in a good way), or instead confirm that the Azure strength was idiosyncratic.
AWS had a FASCINATING report. First some context - Last quarter they grew 20%, but called out January growth (the first quarter of their Q1) was trending in the “mid teens.” I interpreted this to imply January growth was in the 14-16% range. The main point being - January growth was trending a lot lower than Q4.
The expectations for AWS Q1 growth (given the data points above) was for 12-13% AWS growth. Then came the press release. They grew 16%!! This was a HOME RUN! To grow 16% after calling out “mid teens” growth in January potentially suggested at worst growth was flat in Jan, Feb and March (ie didn’t decelerate), and at best it accelerated in the quarter (14% in Jan to 16% for the quarter would imply an exit growth rate in March closer to 17-18%). Amazing! AWS appeared to be a data point suggesting consumption trends were starting to turn around! Amazon was up >10%. Datadog up 10%. Snowflake, Confluent and Mongo up >5%…not so fast…
Then came the biggest record scratch moment in a hypserscaler report I can remember in a while… The quote that killed the rally: “Customers continue to evaluate ways to optimize their cloud spending in response to these tough economic conditions in Q1 and we are seeing these optimizations continue into Q2 with April revenue growth rates about 500bps lower than what we saw in Q1.”
What?! After growing 16% in Q1, AWS was growing 11% in April (first month of Q2). What happened?? All of a sudden those trends that appeared to be shifting positive took a sharp negative turn. Growth clearly got A LOT WORSE in April. What’s my best guess about how AWS could go from Jan growth in mid teens, to Q1 growth of 16%, to April growth of 11%? Probably mid-teens in January meant more like 17%. And then Feb growth was 15-16%, and then March growth was more like 14-15%. What a rug pull! Amazon went from up >10% to down 3%. Datadog, Snowflake, Confluent, Mongo all saw their stocks fall 10-15% from after-hours highs.
Unfortunately, the takeaway may be the Microsoft relative strength was unique to Microsoft (gaining share, ahead in AI, etc). And AWS just gave us a big warning signal that Q1’s (and especially companies with April quarter end dates) will be rocky for everyone else (either because Microsoft is eating their lunch, or it’s just a tough environment, or both). Before we see re-acceleration in consumption (and software more broadly), we first need to see growth trends stabilizing (ie not getting worse). AWS shared with us that we’re still in the “getting worse” phase. The back half acceleration story for software is seeming less and less likely. At best, maybe an end of year re-acceleration, but more likely might not come until 2024. I talked a bit about this last week, but it will be hard to look through tough Q1s if the re-acceleration timing keeps getting pushed out.
In addition, Cloudflare reported a total disaster of a quarter. Missed Q1 consensus estimates, guided Q2 5% below consensus, and cut their full year guide from 37% annual growth to 31% annual growth
Below was the longer quote from the AWS earnings call:
Quarterly Reports Summary
Top 10 EV / NTM Revenue Multiples
*this is as of market close Thursday, so does not include the move in Cloudflare after hours
Top 10 Weekly Share Price Movement
Update on Multiples
SaaS businesses are generally valued on a multiple of their revenue - in most cases the projected revenue for the next 12 months. Revenue multiples are a shorthand valuation framework. Given most software companies are not profitable, or not generating meaningful FCF, it’s the only metric to compare the entire industry against. Even a DCF is riddled with long term assumptions. The promise of SaaS is that growth in the early years leads to profits in the mature years. Multiples shown below are calculated by taking the Enterprise Value (market cap + debt - cash) / NTM revenue.
Overall Stats:
Overall Median: 5.1x
Top 5 Median: 11.2x
10Y: 3.5%
Bucketed by Growth. In the buckets below I consider high growth >30% projected NTM growth, mid growth 15%-30% and low growth <15%
High Growth Median: 7.8x
Mid Growth Median: 5.9x
Low Growth Median: 3.2x
Scatter Plot of EV / NTM Rev Multiple vs NTM Rev Growth
How correlated is growth to valuation multiple?
Growth Adjusted EV / NTM Rev
The below chart shows the EV / NTM revenue multiple divided by NTM consensus growth expectations. The goal of this graph is to show how relatively cheap / expensive each stock is relative to their growth expectations
Operating Metrics
Median NTM growth rate: 16%
Median LTM growth rate: 26%
Median Gross Margin: 75%
Median Operating Margin (21%)
Median FCF Margin: 2%
Median Net Retention: 116%
Median CAC Payback: 30 months
Median S&M % Revenue: 47%
Median R&D % Revenue: 28%
Median G&A % Revenue: 18%
Comps Output
Rule of 40 shows rev growth + FCF margin (both LTM and NTM for growth + margins). FCF calculated as Cash Flow from Operations - Capital Expenditures
GM Adjusted Payback is calculated as: (Previous Q S&M) / (Net New ARR in Q x Gross Margin) x 12 . It shows the number of months it takes for a SaaS business to payback their fully burdened CAC on a gross profit basis. Most public companies don’t report net new ARR, so I’m taking an implied ARR metric (quarterly subscription revenue x 4). Net new ARR is simply the ARR of the current quarter, minus the ARR of the previous quarter. Companies that do not disclose subscription rev have been left out of the analysis and are listed as NA.
This post and the information presented are intended for informational purposes only. The views expressed herein are the author’s alone and do not constitute an offer to sell, or a recommendation to purchase, or a solicitation of an offer to buy, any security, nor a recommendation for any investment product or service. While certain information contained herein has been obtained from sources believed to be reliable, neither the author nor any of his employers or their affiliates have independently verified this information, and its accuracy and completeness cannot be guaranteed. Accordingly, no representation or warranty, express or implied, is made as to, and no reliance should be placed on, the fairness, accuracy, timeliness or completeness of this information. The author and all employers and their affiliated persons assume no liability for this information and no obligation to update the information or analysis contained herein in the future.
Brilliant insight as always, Jamin. Thank you.
This is an excellent summary Jamin! Thank you for taking the time and effort to put these out. Always an insightful read.