SPS Commerce [SPSC]
Two outputs, both required (valuation.md): a 12-month target and the implied-path test.
Spot $70.02 (2026-07-29 close). Shares 36,712,702 (10-Q cover, verified). Net cash $154,271k (cash only; zero debt, no marketable securities). TTM revenue $762,077k. TTM EBIT $116,906k (FY2025 $118,303k − Q1-2025 $25,956k + Q1-2026 $24,559k).
Market cap $2,570.6m · EV $2,416.3m · EV/TTM Sales 3.17x · EV/TTM EBIT 20.67x.
Terminal value is 100% of modelled EV by construction, so the reverse DCF is the primary long-horizon output.
Solved for: 5-year revenue CAGR. Held fixed and named: terminal EBIT margin 15.34% (= TTM realised); exit multiple 22.6x EBIT (as inherited from the screen); WACC 10.0%; horizon 5 years; net cash $154.3m; shares 36.713m.
EV implied by today's price $2,416m (3.17x TTM revenue)
>>> THE MARKET REQUIRES: revenue CAGR of 8.1%
| Demonstrated basis | Rate | Margin vs 8.1% required |
|---|---|---|
| 3-year revenue CAGR FY2022→FY2025 ($450.9m → $751.5m) — what the screen used | 18.57% | +10.5pp |
| 4-year CAGR FY2021→FY2025 | 18.18% | +10.1pp |
| FY2025 pro forma ex-Carbon6 (company's own audited pro forma: $680.9m → $755.7m) | 11.0% | +2.9pp |
| FY2026 company revenue guidance, midpoint ($799m) | 6.5% | −1.6pp |
| Q1-2026 actual | 5.8% | −2.3pp ← primary |
| Q2-2026 company guidance, midpoint | 4.5% | −3.6pp |
Primary margin: −2.3pp.
The screen's +11.5pp was arithmetically correct and analytically meaningless. It used a trailing three-year CAGR to characterise a business whose growth rate has fallen from +22.0% to +5.8% over four quarters and whose own management guides the current year to 6–7%. There is no input error to correct here — shares, net cash and TTM revenue all verify exactly. The failure is that a backward-looking average was used as a forward-looking capability estimate on a name where the two have diverged by twelve percentage points.
valuation.md requires the implied compression to be stated as a number precisely so this cannot pass
silently. A five-year exit multiple set above the current trading multiple, on a business decelerating from
22% to 6%, is anti-conservative and mechanically lowers the required CAGR. Provenance:
exit_multiple_basis: GROWTH_MATCHED, exit_multiple_peer_n: 476. A 476-member comparator set cannot be
growth-matched to a specific name in any meaningful sense, and I could not verify its composition.
At SPSC's own current 20.67x, the required CAGR is 10.0% — against a 6.5% guide, a margin of −3.5pp.
| Exit multiple (x EBIT) | Required 5y revenue CAGR | vs today's 20.67x | Margin vs 6.5% FY26 guide |
|---|---|---|---|
| 14.0x | 18.9% | −32.3% | −12.4pp |
| 17.0x | 14.4% | −17.8% | −7.9pp |
| 20.67x (today's own) | 10.0% | 0.0% | −3.5pp |
| 22.6x (screen) | 8.1% | +9.3% | −1.6pp |
| 26.0x | 5.1% | +25.8% | +1.4pp |
| 30.0x | 2.1% | +45.1% | +4.4pp |
The test only passes at an exit multiple of ~25x or above — a 21% expansion from today's 20.67x, on a
business whose growth is one-third of what it was a year ago. There is no evidenced argument for that, and
criteria.md is explicit that narrative does not qualify.
Terminal-margin cross-check. Holding growth at the FY2026 guide midpoint of 6.5%, the price requires a terminal EBIT margin of 16.5% against 15.3% realised — and against 12.8% in the latest quarter, where GAAP operating income fell year-on-year. The margin requirement is modest in isolation but points the wrong way against the current trend.
FAIL.
Per criteria.md: "FAIL — the price requires materially more than demonstrated and the argument is
narrative." The price requires 8.1% (or 10.0% at an honest exit multiple). The company guides 6–7%.
The gap is not bridged by anything specific and evidenced in the filings — the named candidate is MAX, the
AI capability set announced 2026-04-30, for which no revenue, pricing, customer count or timeline is
disclosed anywhere. That is narrative.
Recorded for the calibration watch: this FAIL rests on management's own guidance, not on a house forecast and not on a haircut. If the framework is too strict elsewhere, it is not being strict here — it is reading the company's numbers.
valuation.md: "Anchor the multiple on the name's OWN trading range, with the current percentile stated …
If the history is too short or spans a regime change, declare it UNIDENTIFIED rather than substituting
a peer median."
EV/TTM-Sales computed daily from Alpaca SIP closes over 866 sessions (2023-02-14 → 2026-07-29).
| Window | Low | P25 | Median | P75 | High | Current 3.17x sits at |
|---|---|---|---|---|---|---|
| Full (866 sessions) | 2.25x | 5.65x | 11.46x | 12.33x | 14.87x | 13th percentile |
| Trailing 24 months | 2.25x | 3.96x | 6.99x | 10.75x | 14.09x | 23rd percentile |
| Trailing 12 months | 2.25x | 2.62x | 3.97x | 5.37x | 7.64x | 46th percentile |
This is a textbook regime change, and the numbers say so without interpretation. The full-history median is 11.46x; the trailing-12-month median is 3.97x; today is 3.17x. The multiple has fallen by roughly 72% from its own median. The trailing-12-month window does not escape the problem — it is the transition itself, spanning 7.64x to 2.25x.
Applying each of those anchors to the same forward revenue gives:
| Anchor | Multiple | Implied per share | vs spot |
|---|---|---|---|
| 12m P25 | 2.62x | $62.86 | −10.2% |
| Current, held unchanged | 3.17x | $75.20 | +7.4% |
| 12m median | 3.97x | $93.09 | +32.9% |
| 12m P75 | 5.37x | $124.44 | +77.7% |
| (full-history median 11.46x) | 11.46x | $260 | +271% |
A defensible range that spans $63 to $124 — a 98% width — carries no information. That is the evidence for declaring the anchor UNIDENTIFIED, and it is stated rather than resolved by picking a point.
The one number that does not require a multiple judgement is what the price does if the multiple does not change:
Forward revenue build (company guidance; no consensus available — Consensus Criteria INDETERMINATE):
| Quarter | $m | Basis |
|---|---|---|
| Q2-2026 | 195.5 | Company guidance $194.5–196.5m, midpoint (+4–5% YoY) |
| Q3-2026 | 204.5 | derived: FY2026 guide $799m midpoint less Q1 actual and Q2 guide, split H2 |
| Q4-2026 | 206.9 | same derivation |
| Q1-2027 | 203.6 | extrapolation at +6.0% |
| Q2-2027 | 207.2 | extrapolation at +6.0% |
| TTM at 2027-06-30 (Q3-26…Q2-27) | 822.2 | the revenue base a 12-month multiple would apply to |
At an unchanged 3.17x EV/Sales, the 12-month value is $75.20 — +7.4%. That +7.4% is simply the 6–7% revenue growth flowing through. There is no multiple expansion in it and no alpha in it.
| FY2026 guidance | Multiple at $70.02 | |
|---|---|---|
| GAAP diluted EPS | $2.66–2.69 | 26.2x |
| Non-GAAP diluted EPS | $4.73–4.76 | 14.8x |
| Adjusted EBITDA | $262.8–267.3m | 9.1x EV/adj. EBITDA |
The non-GAAP figure is 108% above GAAP, bridged by $69.8m of guided share-based compensation and $37.4m of acquired-intangible amortisation. Both are consequences of the acquisition strategy, and adding them back to justify the multiple is circular: the acquisitions produced the growth that justified the old multiple, and their costs are then excluded to justify the new one.
Sanity band. No external professional target was available for this name in this run, so the required external cross-check is not performed. Stated rather than skipped.
| Screen | Verified | Status | |
|---|---|---|---|
| Shares (m) | 36.713 | 36.713 | ✓ |
| Net cash ($m) | 154.3 | 154.3 (zero debt; −6.6 if operating leases deducted) | ✓ |
| TTM revenue ($m) | 762.1 | 762.1 | ✓ |
| EV / TTM Sales | 3.09x | 3.10x @$68.50 · 3.17x @$70.02 | ✓ |
| Operating margin | 15.7% (FY25) | 15.3% TTM · 12.8% latest quarter | stale |
| Op margin Δ | +1.8pp (FY25 v FY24) | −1.5pp (Q1-26 v Q1-25) | wrong sign, currently |
| Demonstrated CAGR | 18.6% | 5.8% latest quarter; 6–7% guided | ✗ four quarters stale |
| Required CAGR | 7.0% | 8.1% @22.6x · 10.0% @today's 20.67x | |
| Margin | +11.5pp | −2.3pp | ✗ |
| Valuation Criteria | PASS | FAIL |