Cactus, Inc.
WHDdata completeness 75%10 fiscal years on fileData notes: no data for concept 'capex'
The thesis, from the filings
Cactus, Inc. earns about 37% on invested capital. The cash-flow models don't apply cleanly here — the ledger says why below.Whether it’s worth owning at today’s price is the last question — and yours to answer, below.
i. The business — what you’d actually own
| Figure | FY 2021 | FY 2022 | FY 2023 | FY 2024 | FY 2025 |
|---|---|---|---|---|---|
| Revenue | $438.6M1 | $688.4M2 | $1.1B3 | $1.13B3 | $1.08B3 |
| Net income | $49.6M4 | $110.2M5 | $169.2M6 | $185.4M6 | $166M6 |
| Operating cash flow | $63.8M7 | $117.9M8 | $340.3M9 | $316.1M9 | $258.4M9 |
| Capital expenditure | — | — | — | — | — |
| Free cash flow (derived) | — | — | — | — | — |
| Total debt | $010 | $011 | $012 | $013 | $013 |
| Cash & equivalents | $301.7M14 | $344.5M15 | $133.8M16 | $342.8M16 | $123.6M16 |
| Diluted shares | — | — | — | — | — |
Superscripts are receipts. Each links to the SEC filing the number came from (full list at the bottom).
iii. Is this a good business?
Moat signal · return on invested capital
37% avg · 5y
FY21 41%FY22 64%FY23 30%FY24 32%FY25 18%
It earned an average 37% on invested capital over 5 years. Compare that to what it costs to fund the business.
seeing a moat in the numbers →Management signal · capital allocation
— shares · 5y
Not enough history to read capital allocation.
reading capital allocation →Signals, not verdicts — read from the filings above. Numbers don’t prove a moat; they show its footprint. You decide.
iv. What it’s worth — engine v0.1.0
DCF · Growth Exit 10Y
not applicable
only 0 years of FCF (need ≥3) — model not applicable
DCF · Growth Exit 5Y
not applicable
only 0 years of FCF (need ≥3) — model not applicable
Earnings Power Value
not applicable
no diluted share count
Graham Number
not applicable
diluted EPS missing or non-positive — Graham Number undefined
Different models answer different questions — which to trust when →
Sources — the receipts
- 10-K · period ending 2021-12-31 · accession 0001699136-24-000007 (RevenueFromContractWithCustomerExcludingAssessedTax)
- 10-K · period ending 2022-12-31 · accession 0001699136-25-000014 (RevenueFromContractWithCustomerExcludingAssessedTax)
- 10-K · period ending 2023-12-31 · accession 0001628280-26-012377 (RevenueFromContractWithCustomerExcludingAssessedTax)
- 10-K · period ending 2021-12-31 · accession 0001699136-24-000007 (NetIncomeLoss)
- 10-K · period ending 2022-12-31 · accession 0001699136-25-000014 (NetIncomeLoss)
- 10-K · period ending 2023-12-31 · accession 0001628280-26-012377 (NetIncomeLoss)
- 10-K · period ending 2021-12-31 · accession 0001699136-24-000007 (NetCashProvidedByUsedInOperatingActivities)
- 10-K · period ending 2022-12-31 · accession 0001699136-25-000014 (NetCashProvidedByUsedInOperatingActivities)
- 10-K · period ending 2023-12-31 · accession 0001628280-26-012377 (NetCashProvidedByUsedInOperatingActivities)
- 10-K · period ending 2021-12-31 · accession 0001699136-23-000017 (LongTermDebt)
- 10-K · period ending 2022-12-31 · accession 0001699136-24-000007 (LongTermDebt)
- 10-K · period ending 2023-12-31 · accession 0001699136-25-000014 (LongTermDebt)
- 10-K · period ending 2024-12-31 · accession 0001628280-26-012377 (LongTermDebt)
- 10-K · period ending 2021-12-31 · accession 0001699136-23-000017 (CashAndCashEquivalentsAtCarryingValue)
- 10-K · period ending 2022-12-31 · accession 0001699136-24-000007 (CashAndCashEquivalentsAtCarryingValue)
- 10-K · period ending 2023-12-31 · accession 0001628280-26-012377 (CashAndCashEquivalentsAtCarryingValue)