1) TL;DR
ServiceTitan’s first post-IPO Q3 as a public company landed as a textbook double beat: non-GAAP EPS printed $0.24 vs about $0.15 expected, and revenue came in at roughly $249M vs ~$238M consensus, with mid-20s percent growth and sharply better operating margins. Guidance stepped higher for both Q4 and the full year, reinforcing the growth-and-leverage story.
On the tape, the stock only opened about 1.7% above the pre-earnings close but then trended all day to finish up roughly 10.5%. That pattern delivered the upside session the preview framed—high-single to low-double-digit gains on a solid quarter with firmer guidance—while the actual opening gap was smaller than the envisioned 8–10% jump.
Directional odds in the preview were framed in the low 60s for an upside reaction if guidance held or improved. In practice, that probabilistic lean proved appropriate for the full session, but not for the narrow gap move at the bell.
2) What the company actually reported
Top line:
- Revenue: about $249M, up roughly 25% year over year, ahead of the ~$238M Street bar.
- Platform revenue (subscription + usage) remained the engine, growing mid-20s percent, with payments and usage-based components still amplifying growth.
Profitability and cash:
- Non-GAAP operating income jumped to the low-20s millions with an operating margin in the high single digits, a massive step up from around breakeven a year ago.
- GAAP results are still loss-making, but operating cash flow and free cash flow were both solidly positive, showing that underlying unit economics continue to improve.
Balance sheet and KPIs:
- Net dollar retention stayed above 110%, indicating healthy expansion from existing customers.
- Cash and liquidity remain ample, and leverage is modest for a growth software name.
Against the preview framing—mid-20s revenue growth, continued margin progress, and a likely beat on both EPS and revenue—the fundamentals came in exactly on the “beat and leverage” script, just with even more operating improvement than the base case contemplated.
3) Guidance and narrative vs the setup
Management used the print to edge expectations higher rather than simply reaffirm:
- Q4 revenue guide: mid-$240M range, a bit above where consensus had settled.
- Full-year revenue guide: low-$950M range, several points above the prior year’s level and ahead of Street models that were sitting in the high-$930Ms.
- Non-GAAP operating income outlook was also raised, keeping the trajectory of improving margins intact.
Qualitatively, commentary stayed confident around:
- Durable demand from core trades customers (HVAC, plumbing, electrical, etc.).
- Continued upsell into payments and other usage-based products.
- Early but encouraging traction with larger, more complex enterprise deployments.
In the preview, the base case called for guidance to be at least reaffirmed near the then-current range, with a “mild beat-and-raise” as the bullish variant. The actual outcome landed squarely in that bull case: a real raise, not just a reiteration, which justifies tagging the guidance tone as strong rather than merely in-line.
4) Price action: gap vs full-session move
Using the earnings-timing rules (after-close report):
- Pre-earnings reference close (Dec 4): $95.59
- Next-day open (Dec 5): $97.24
- Next-day close (Dec 5): $105.60
That translates to:
- Gap move: +1.7% from the Dec 4 close to the Dec 5 open.
- Full-session move: +10.5% from the Dec 4 close to the Dec 5 close.
Given the project’s flat window, the opening print is best described as a “tight positive gap” rather than a clear directional break, while the full session was a decisive trend-day higher.
Relative to the preview:
- The pre-earnings note expected an upside jump on the order of 8–10% from the low-90s reference level if the company delivered another quarter of mid-20s growth with solid margins and at least steady guidance.
- The options market, via the December monthly at-the-money straddle, was pricing roughly a ±12% move into the post-earnings expiry.
The realized pattern was:
- Gap: meaningfully smaller than the forecast and certainly smaller than what the straddle was prepared to cover.
- Intraday follow-through: very much in line with the “double-digit upside if they beat and raise” scenario, but manifesting as a trend-day squeeze rather than a straight-up gap.
On the scoreboard:
- For the gap, the model’s explicit up-move call doesn’t clear the flat threshold, so it counts as incorrect under the rules.
- For the session, the direction and approximate size of the move were on target, aligning with the “high-single-digit to low-double-digit upside” framework.
5) Crowd vs move
The crowd on the preview page was tiny but unanimous:
- 1 vote total: 100% bullish, 0% bearish.
Under the same flat-window logic:
- On the gap, the crowd’s “up” call is also treated as wrong, because the open was only modestly above the prior close.
- Over the session, the crowd’s directional view was correct, with the stock finishing more than 10% higher.
In other words, both the model and the crowd got the story and the day-end direction right, but overstated how much of that move would be visible immediately at the bell.
6) How the original trade ideas would have fared
The preview laid out three archetypal structures around this event. Without exact post-earnings options marks, we can still reason through how each would likely have behaved given the realized path.
a) Short-dated call spread (e.g., Dec 19 ~100/110)
- With spot closing the reaction day around $105.60, a 100/110 call spread in the December monthly expiry would have moved into “working well” territory almost immediately: roughly half of the width now intrinsic and time value still embedded.
- The smaller-than-expected gap but strong intraday trend is actually fine for this structure: as long as price migrates into the spread body by or shortly after the event, the risk/reward logic holds.
- Main risk from here is over-squeezing into or through the short strike before expiry, but for a defined-risk spread that’s a “good problem” to have.
Net: This idea tracks as directionally and structurally sound, benefiting from the upside follow-through even though the gap itself was modest.
b) Put spread as a hedge for holders
- Any protective put spread layered on in the low-90s region would have quickly decayed in value as the stock jumped into the mid-100s.
- That’s exactly the intended behavior: cheap insurance that ideally expires unused when the fundamental thesis plays out.
- The main “miss” here is simply that the quarter was strong enough that protection proved unnecessary—which is a good problem for long-only investors.
Net: The hedge would have lost premium, but in a way that’s consistent with its role and the upside outcome.
c) Post-earnings premium fade (short vol after the event)
- Heading into the print, the event contract was implying roughly a ±12% move by the post-earnings expiry.
- The immediate one-day move of ~10.5% is large but still inside that envelope, and the big information shock has now cleared, so implied volatility almost certainly compressed on the first full session after results.
- Traders who waited for the announcement and then sold volatility (e.g., via short strangles or iron condors centered around the new spot) would likely have benefitted from both the IV crush and the fact that realized volatility after the initial squeeze will struggle to keep pace with pre-earnings expectations.
Net: As framed, this idea still looks reasonable, with the caveat that a strong trend up toward the 110–120 region into expiry could pressure the short-call side if strikes weren’t set carefully.
7) Lessons for future setups like this
A few takeaways from how this event played out relative to the preview:
-
Gap vs trend day matters for the scoreboard.
The quarter delivered exactly the kind of fundamental and guidance combination that tends to produce double-digit upside moves, but the market chose to express that through a modest gap and a trend-day grind higher. For models and traders focused on the opening print, that distinction is crucial. -
Strong guidance can matter more than the magnitude of the EPS beat.
The non-GAAP EPS beat was large in percentage terms, but what likely unlocked the squeeze was the reaffirmed-and-raised full-year outlook. For similar high-growth software names, anchoring the directional bias on guidance tone—rather than just EPS surprise—looks validated here. -
Rich front-month volatility doesn’t mean the straddle is “wrong.”
The pre-earnings straddle pricing roughly a ±12% move into expiry now looks reasonable: a 10.5% day-one pop leaves some room for further post-event drift or secondary moves. The realized path leans positive for anyone who sold that premium carefully after the announcement but doesn’t scream “massively overpriced IV” in hindsight. -
Low-60s directional odds were appropriate.
The preview framed the upside as more likely than not, but not a lay-up. With the model getting the fundamental story and the session direction right—but missing on the narrow gap—the realized outcome fits that probabilistic view: a solid win on the main thesis with a technical nuance (gap vs trend) keeping the scorecard from being a clean sweep. -
For future trades, consider explicitly separating “gap” and “session” expressions.
When the thesis leans on fundamentals and guidance rather than extreme positioning, it may be better to size structures that benefit from intraday and multi-day follow-through (spreads, diagonals, post-event vol fades) and treat pure gap bets more conservatively.
Overall, this print reinforces the idea that for high-quality growth names with improving margins and constructive guidance, a modestly bullish stance with defined-risk upside structures can offer a sensible way to lean into earnings—even when the opening gap doesn’t fully reflect the strength of the story.
