2023 Results:
March Portfolio and Results:
2023 Monthly Allocations:
Key:
darker green: started during month
lighter green: added during month
yellow: trimmed during month
blue: bought and sold during month
red: position exits
positions >10% in bold
Past recaps:
December 2018 (the one that got things started)
December 2019 (contains links to all 2019 monthly reports)
December 2020 (contains links to all 2020 monthly reports)
December 2021 (contains links to all 2021 monthly reports)
December 2022 (contains links to all 2022 monthly reports)
Stock Comments:
March saw our portfolio’s final earnings reports. No follow list name forced its way in, but a disappointing report squeezed Snowflake out.
And then there were eight…
BILL 0.00%↑ – It was an interesting March for Bill. The scheduled action to start the month was three investor presentations between March 6 and March 14. The middle of that stretch included positive news as Bill partnered with BMO bank on a new service. BMO Bill Connect is “a bill pay and invoicing platform that helps customers pay and get paid in a simpler, faster and more secure way.” While I’ve recently written about the riskier quality of smaller customers from banking partners, I can’t fault Bill for continuing to build its customer pipeline. It’s not as if these aren’t legitimate banking partners, and it's not as if many of these smaller clients won’t eventually become excellent customers as they grow.
Unfortunately, that positive news was overwhelmed by Bill getting caught up in the Silicon Valley Bank failure. Bill issued an almost immediate statement acknowledging it had roughly $300M of its $2.6B in corporate cash and ~$370M of its current $3.3B in customer float with SVB. Despite acting quickly and ultimately seeing little to no disruption from the incident, a spooked market dinged the stock.
Bill subsequently underscored its stability by expanding services to any existing customers affected by the SVB collapse. These “New Offerings to Enable Business Continuity” included a secure place for customers to store funds, pre-approval for Divvy credit lines to help with expenses, and reimbursing all pay-by-card fees for the next 30 days on any SVB debit cards transactions connected through a Bill Pay By Card account. This seems like a strong move and very much the right thing to do by its customers.
The Silicon Valley Bank failure was a terrible event. Luckily, it appears Bill has come through with limited impact. While there’s no telling where the broad banking market settles, we can at least turn our attention back to underlying business performance when examining Bill’s future.
CRWD 0.00%↑ – CrowdStrike’s report was a nice way for our holdings to end earnings season. I viewed the quarter as a strong bounce back from Q3’s disappointment and an optimistic springboard for the upcoming fiscal year. The 34.5% FY24 revenue guide was pleasantly above analysts’ consensus. After warning of a possible 10% decline in net new Annual Recurring Revenue (ARR) this quarter, the $221.7M added was not only a new record but +2.2% YoY and +11.9% QoQ. Phew! That number was backed by an acceleration in Remaining Performance Obligation (RPO), which grew 48.7% YoY this quarter versus 44.0% in Q3. In addition, 20.4% sequential RPO growth was the first time >20% in eight quarters. I view this as a strong sign of stability into the new year.
Customer growth was another strong phew. After last quarter’s 1,460 new customers was the smallest in eight reports, Q4’s 1,873 was a new record. That means the disappointing Q3 result is now bracketed by CRWD’s two biggest customer adds ever. That certainly smooths things out.
Additionally, current customers continue to embrace CrowdStrike’s products. As usual, the number using 5+, 6+, and 7+ modules ticked up. Net retention rate (NRR) also remains strong. This year’s final NRR’s from Q1 to Q4 were 125.5%, 127.6%, 127.6%, and 125.3%. Each of those figures is above last year’s single-quarter high of 123.9%. I’d call this a strong endorsement of CRWD’s value to customers, especially considering the current spending environment.
The unexpected secondary performance produced another strong bottom line. Cash flow margins came in at 42.9% operating and 32.9% free cash. Likewise, operating and net profit margins were 15.0% and 17.5%, respectively. Absolutely nothing to complain about there.
Unsurprisingly, this led to one of the more comfortable conference calls I heard this season. A bounce back quarter will do that for you, I guess. Even while acknowledging potential continued macro headwinds, management expressed confidence it can produce “thoughtful and balanced growth” during the upcoming year. Sounds good to me.
After raising plenty of questions in Q3, I believe CRWD provided plenty of answers in Q4. The positive surprises in net new ARR, customer growth, and RPO all have me feeling considerably better about its prospects for the upcoming year. I’m happy to stick around to see if it can keep executing, and CRWD remains our biggest position.
DDOG 0.00%↑ – Like Bill, Datadog had a little damage control to manage this month. Things started harmlessly enough with a March 7 appearance at the Morgan Stanley Technology, Media and Telecom Conference. On March 8, users awoke to an extended service outage that took almost 48 hours to resolve. While the risk of service outages is basically part of the gig with infrastructure firms, the timing couldn’t have been much worse coming so soon after Q4’s comments of increased user scrutiny and surprisingly weak FY24 guide. While I still believe DDOG has upside once usage returns, I find myself relieved I trimmed it to more of a something-to-prove allocation after earnings.
ENPH 0.00%↑ – Enphase delivered both domestic and international news this month. On the US side, it expanded deployments in Illinois, Utah, and Virginia. On the international side, Enphase announced the launch of its IQ8 Microinverters in France and the Netherlands. It followed up with news of the first shipments from its new European production facility in Romania.
While these releases never give sales specifics, ENPH has certainly established a steady cadence of news worth telling us about in recent months. Given some of our other portfolio news, it’s nice to have at least one name that feels like business as usual.
NET 0.00%↑ – We entered March in an unusually long stretch without formal news from Cloudflare. The only significant non-techie update during that time was an expansion of its network in Indonesia. However, its more regular cadence picked up mid-month with the start of Security Week 2023. In the kickoff NET promised “[over] the next six days you’ll read more than 30 announcements” geared toward making it as easy as possible for customers to keep systems more secure. The main business update was a deeper Zero Trust integration with Atlassian, Microsoft, and Sumo Logic. Next was Cloudflare's entry into the fraud detection market “to help businesses quickly identify and stop online fraud…before it impacts their brand or their bottom line.” If interested, an extremely thorough recap with about a gazillion links can be found here.
One notable secondary announcement (at least for me) was directly aimed at competitor and portfolio mate Zscaler. NET’s Descaler Program (well played, NET, well played) is a “frictionless path to migrate existing Zscaler customers to Cloudflare One.” At this point, I’m comfortable with the numbers both firms are putting up, and it’s not as if this is NET’s first attempt at presenting itself as superior to ZS. However, I certainly don’t like Zscaler CEO Jay Chaudhry’s chances in a marketing and messaging battle with Cloudflare’s Matthew Prince. We’ll see how this plays out as the year progresses.
SNOW 0.00%↑ – 🤮
I know a single emoji isn’t much of a recap, but that’s the TL;DR version of my take on Snowflake’s March 1 report. While the quarter itself was passable, the outlook for the upcoming year left me feeling a bit queasy.
It all starts with management’s unforced error of floating last quarter’s unnecessary FY24 pre-guide of 47% only to eat crow by lowering it all the way to 40% when making it official. I know normally rock-solid CEO Frank Slootman’s not stupid, so that means SNOW's business in some way, shape or form cratered since he floated the initial figure. I can’t color this flag anything but red.
In my opinion, that disappointing guide tips the scales against a set of mixed secondary numbers. While margins and customer growth were OK, increased expenses and a declining net retention rate become even more concerning in the face of the reduced guide. In addition, RPO growth plummeted from 67% YoY in Q3 to 38% this quarter. The sequential $658M add was also down from $842M last Q4. Honestly, the raw dollar decline bothers me more than the growth rate as far as future business is concerned. Is Snowflake’s business going to zero? No, but that’s a heck of a drop off in future commitments.
While management certainly can’t be blamed for the “change in existing customer purchasing behavior, lower-than-expected new logo bookings, and slower expected ramp from our youngest cohorts,” it’s their responsibility to figure it out. The tone I heard on the call suggests that job just got a lot harder.
Snowflake has seemingly hit the triple whammy of being a usage-based business reaching law-of-large-numbers scale in the teeth of a tightening economy. SNOW has always gotten a premium for its impressive numbers, unassailable management team, and what seemed to be an avalanche of data migrating to the cloud. I leave this report thinking every single one of these advantages has basically evaporated. Will they ever return? Darned if I know. I only know much if not all that premium might be on the verge of evaporating as well. My gut says there’s more sideways or downside risk than upside at these levels. I sold immediately after the report and plan on staying on the sidelines until we gain more clarity (or see the Buffett-approved $120-ish level again).
TMDX 0.00%↑ – TransMedics’ initial March news was a March 6 appearance at a Cowen healthcare conference. Though I didn’t see much new presented, there’s a thorough recap here if interested.
In secondary news the US Department of Health and Human Services announced an upcoming revamp to the nation’s organ transplant system. The article specifically mentions “seeking more contracts to operate the Organ Procurement and Transplantation Network.” While there’s no committed timeline in the statement, it certainly reads like something which could benefit TransMedics in the long run. Fingers crossed.
TTD 0.00%↑ – Slow news month for The Trade Desk. Apparently there are a lot of people moving to the open internet for streaming, news, and entertainment in India. Since 1.38 billion citizens means pretty much anything is India is being done by a lot of people, I’m pretty ambivalent about the impact of this “news” even after learning another 190 million Indonesians dig the internet as well. The main benefit of these updates seems to be I don’t have to leave my TTD section blank, which I guess shouldn’t be underestimated.
ZS 0.00%↑ – Zscaler posted what I thought was a solid quarter March 1. Growth remained above 50%+ (51.7%) with a raise of the full year guide to 43.3%. Billings came in a tick lighter than I wanted (especially the miniscule $5M FY raise), but I’m ultimately OK with it given the explanation management has extended payments for some customers putting less billings in the first year of a contract and more in the second. This change will create some pressure now but hopefully produce a small buffer later assuming these customers meet their payment schedule.
Digger deeper, I found customer growth acceptable and was pleased ZS met its internal 125%+ net retention benchmark for the ninth consecutive quarter. On the bottom line, $48.8M in operating income was a new record with the 13.5% margin 2nd all-time, so plenty good. Expenses were just 68% of revenue versus 70% last quarter and 72% last year, which also helped the bottom line. If nothing else, this is a seasoned management team which knows which levers to pull.
CEO Jay Chaudhry immediately addressed the billings issue on the call stating it was “impacted by new customers being more deliberate about their large purchasing decisions at the start of the calendar year. These deals have not gone away, and we have closed a few already in February…In select instances, where timing of budgets was a hurdle for new customers, we enabled them to ramp into larger subscription commitments. These strategic deals lowered our first-year billings but will go into of higher annual run rate level in the second year.” Along those same lines, the CFO said to expect a 9% decline in sequential billings for Q3 “with a little more conservatism related to our billings guidance than the past.” Working off that updated guide puts billings growth at ~27% YoY in Q4 with room to stabilize or even creep up a tick next year. I can live with that given the extended payments arrangement. It’s tough to close deals for all businesses right now, so I can’t penalize ZS for leveraging its cash flow and profits to give customers a temporary break while still landing the deal.
As for the rest of the call, the Q&A was one of those moments I wished Chaudhry could simply let Cloudflare’s Matthew Prince or TTD’s Jeff Green finish the call. I saw plenty of wins, no outright losses, and enough breadcrumbs this quarter to feel optimistic about the future. While other CEO’s might use that as a clear opening to sell the vision and potential, Chaudhry immediately reverted to his technobabble comfort zone of ZIA’s, ZPA’s, ZDX’s and CISO’s. Oh well.
Zscaler followed earnings by hiring Karl Soderlund as Senior VP, Worldwide Partners and Alliances. Interestingly, Soderlund joins Zscaler from competitor Palo Alto Networks after senior roles at Aruba Networks, Avaya, HP, Cisco Systems, and Fortinet. Sounds like an interesting add.
After typing it out, I find myself oddly comforted by Zscaler’s boring steadiness. Sign of the times, I guess. We’re comfortable holding on to our shares.
My current watch list…
…in rough order includes Samsara (IOT), Aehr Systems (AEHR), monday.com (MNDY), SentinelOne (S), and MongoDB (MDB).
Gitlab (GTLB) falls off after too big a slowdown at too small a scale to give it a pass.
And there you have it.
March was another palatable month for the market and our portfolio. While the overall mood remains decidedly guarded, we seem to have reached the point where even the staunchest doom-and-gloomers are begrudgingly acknowledging some rays of hope. Another quarter of reports in the books means another set of data points for separating firms with relative strength from those with relative uncertainty. Though I’d argue it’s always a stock picker’s market, that seems particularly relevant as this cycle grinds on. The best we can do is take it one step at a time. Next step: April.
Thanks for reading, and I hope everyone has a great month.
Who is "we"?
Why do you compare yourself with SPY instead of QQQ?