Cloud-based cybersecurity player and former Sarge-fave Zscaler (ZS) released the firm's fiscal fourth quarter results on Tuesday evening.
For the three month period ending July 31st, Zscaler posted an adjusted EPS of $0.64 (GAAP EPS: $-0.21) on revenue of $455.006M. The adjusted earnings and revenue prints both beat Wall Street quite decisively, as those revenues were good enough for year over year growth of 43.1%. Calculated billings were up 38% year over year to $719.3M, as deferred revenue - which will matter when we get to the balance sheet - grew 41% to $1.44B. The adjustments made were nearly due in their entirety to stock based compensation expense of $126.275M or $0.80 per share.
Operations
As revenue was growing 43.1%, the cost of that revenue came to $102.682M (+50.3%). This left a GAAP gross profit of $352.324M (+41.1%) as gross margin dropped from 78.5% to 77.4%. Once adjusted, gross profit of $367.105M was good enough for an adjusted gross margin of 81%, down from 82% for the year ago comp.
GAAP Operating expenses grew 19.4% to $396.876M, leaving operating income/loss of $-44.552M, up from $-82.529M a year ago. After interest and taxes, the firm was left with a GAAP net income/loss of $-30.674M. Once adjusted. operating income became $86.004M for an adjusted operating margin of 19%. After interest and taxes, adjusted net income posted at $100.857M, up from last year's comparable $36.394M.
Guidance
Guidance was not provided in the press release. Interested parties had to wait until CFO Remo Canessa's address during the conference call. For the firm's first fiscal (current) quarter of 2024, Zscaler sees revenue of $472M to $474M, which is above the $465M that Wall Street had in mind. The firm sees adjusted operating income of $70M to $72M and adjusted EPS of $0.48 to $0.49. Wall Street was looking for $0.45, so this too, is a beat.
For the coming full fiscal year, Zscaler sees revenue of roughly $2.05B to $2.065B, which is better than Wall Street's consensus view of $2.04B. The firm also sees calculated billings of $2.52B to $2.56B and adjusted operating income of $330M to $340M. Finally, for the full year, Zscaler projects adjusted EPS of $2.20 to $2.25. This is well above the $2.10 or so that Wall Street was looking for.
Fundamentals
For the quarter, Zscaler generated operating cash flow of $135.936M, bringing full year operating cash flow to $462.343M. Out of that came CapEx of $34.635M form the quarter and $128.724M for the year. That left the firm with free cash flow of $101.301M for the fourth quarter and $333.619M for the fiscal year. The firm does not return capital to shareholders, leaving that cash truly free.
Zscaler ended the period with a cash position of $2.1B and current assets of $2.89B. Current liabilities add up to $1.536B, including $1.281B in deferred revenue. On the surface, this leaves a very healthy current ratio of 1.88. Once omitting the deferred revenues as these are not true financial liabilities, the current ratio rises to an incredible 11.33.
Total assets amount to $3.608B, of which only $115.051M is in goodwill or other intangibles. Total liabilities less equity comes to $2.883B. This includes $1.134B in convertible senior notes. While that number sticks out on an otherwise nearly perfect balance sheet, it does nothing to diminish the underlying strength of these fundamentals. Zscaler is in great shape.
Wall Street
Since these earnings were released last night, I have come across 14 sell-side analysts that have both opined on ZS and are rated at a minimum of four stars (out of five) by TipRanks. Across these 14 analysts, we have 10 "buy" or buy-equivalent ratings and four "hold" or hold-equivalent ratings. After allowing for changes, the average target price of the 14 comes to $183.36 with a high of $220 (Jackson Ader of MoffettNathanson) and a low of $165 twice (Yun Kim of Loop Capital and Connor Murphy of Capital One Financial).
After omitting the high and one of the lows as potential outliers, the average target price across the other 12 drops to $181.83. For those with an interest, the average target across the 10 "buys" is $189.10 and the average target across the four holds is an even $169.
My Thoughts
I really do like Zscaler. I have been long the name in the past and it has done very well for me. I am currently holding three cybersecurity names... Palo Alto Networks (PANW) , CrowdStrike (CRWD) and SentinelOne (S) . If I did not fear being overweight a potentially overvalued industry within the cloud/software space, it would be four and I would add ZS.
I consider Palo Alto and SentinelOne different in terms of breadth of business. I consider all four names here to be at the very top of their field as far as quality in technology is concerned. CrowdStrike and Zscaler are sort of similar. In fact, the products actually compliment each other well and several clients subscribe to both.
For me, CrowdStrike is just a little bit ahead, due partially to their GAAP profitability. Gross margins are similar, but moving slightly higher for CRWD and slightly lower for ZS. It's really a close call. You are not wrong if you are in ZS and not CRWD. Even the charts are similar.
Readers will see that the stock troughed in early may to rebound sharply into mid-June. The stock then went into a basing period of consolidation ranging from that now three times-tested June top down to a 38.2% Fibonacci retracement level of the May into June pop.
The stock is now trading north of all three key moving averages, as its 21 day EMA (exponential moving average) has crossed above its 50 day SMA (simple moving average), which is short-term bullish. Relative strength is strong but not too strong. The daily MACD (moving average convergence divergence) is set up for success, with the 12 day EMA having crossed above the 26 day EMA, and the histogram of the nine day EMA above zero.
It's all up to the stock right now. ZS ticked at its $165 pivot this morning. Take and hold the pivot, and a target price of $198 is realistic. I don't think a current long would want to hold on for a test of the bottom of the above range. I would think that a panic point of $146, which would be a break of that 50 day SMA, would be appropriate.