Skip to content

Cactus, Inc.: filings

Every Cactus, Inc. annual and quarterly report in the SEC record with the published financial measures it tagged, 34 filings, each linked to its SEC index.

Filings with published measures

Each page shows what one filing reported, as tagged in that filing, with the periods it covered. Later filings can restate a value; the company overview shows the latest-filed value per period.

FormFiledFiscal periodMeasuresFactsSEC accession
10-Q2026-07-31fiscal Q2 2026451180001628280-26-051177
10-Q2026-05-08fiscal Q1 202646960001628280-26-032636
10-K2026-02-26fiscal FY 2025511280001628280-26-012377
10-Q2025-10-30fiscal Q3 2025451180001628280-25-047500
10-Q2025-07-31fiscal Q2 2025451180001699136-25-000105
10-Q2025-05-01fiscal Q1 202544920001699136-25-000078
10-K2025-02-27fiscal FY 2024501260001699136-25-000014
10-Q2024-10-31fiscal Q3 2024451160001699136-24-000118
10-Q2024-08-01fiscal Q2 2024451160001699136-24-000099
10-Q2024-05-02fiscal Q1 202445940001699136-24-000065
10-K2024-02-29fiscal FY 2023481210001699136-24-000007
10-Q2023-11-09fiscal Q3 2023441120001699136-23-000140
10-Q2023-08-08fiscal Q2 2023451150001699136-23-000093
10-Q2023-05-10fiscal Q1 202343890001699136-23-000067
10-K2023-03-01fiscal FY 2022451140001699136-23-000017
10-Q2022-11-07fiscal Q3 2022391040001699136-22-000160
10-Q2022-08-04fiscal Q2 2022391040001699136-22-000135
10-Q2022-05-05fiscal Q1 202239820001699136-22-000072
10-K2022-02-28fiscal FY 2021451140001699136-22-000011
10-Q2021-11-05fiscal Q3 2021391040001699136-21-000187
10-Q2021-07-29fiscal Q2 2021391040001699136-21-000152
10-Q2021-05-07fiscal Q1 202143900001699136-21-000112
10-K2021-03-01fiscal FY 2020461160001699136-21-000033
10-Q2020-11-05fiscal Q3 2020431180001699136-20-000035
10-Q2020-07-31fiscal Q2 2020431180001699136-20-000009
10-Q2020-05-01fiscal Q1 202042870001558370-20-004848
10-K2020-02-28fiscal FY 2019501580001558370-20-001806
10-Q2019-10-31fiscal Q3 2019441070001558370-19-009613
10-Q2019-08-02fiscal Q2 2019441050001558370-19-006861
10-Q2019-05-09fiscal Q1 201945900001558370-19-004535
10-K2019-03-15fiscal FY 2018431120001558370-19-002063
10-Q2018-11-02fiscal Q3 201843960001558370-18-008393
10-Q2018-08-02fiscal Q2 201843960001558370-18-006261
10-Q2018-05-11fiscal Q1 201841730001558370-18-004743

Inspect the source

Entity
Cactus, Inc. / CIK 0001699136
Captured
2026-09-21T17:23:52.332Z
SEC response SHA-256
925c11b9c1bba0eac6dd1285fd23ce97c3684d5f66d3d1a08d786dbddc8d2092

Current SEC company facts · Download the original response snapshot (gzip) · Download the selected JSON

Every published concept a filing tagged, with the periods it covered, as reported in that filing at capture time. Forms 10-K, 10-K/A, 10-Q, 10-Q/A, 20-F, 20-F/A, 40-F, 40-F/A. A filing page needs at least 8 published concepts. Later filings can restate these values; the company history pages show the latest-filed value per period.

Public company accounting reference, not market prices, returns, an investment recommendation, or ALPHAC performance. Validate a separately constructed return series with the validation API; accounting values are not returns.

Use this in research

A financial period ends before its results become public. Use the filing date as a minimum availability boundary, inspect amendments, and retain the original filing vintage when testing historical signals. This latest-filed selection can contain information unavailable at the time.

These pages do not supply prices, total-return histories, corporate-action adjustments or a tradable universe. Build those inputs separately before evaluating a strategy. A profitable backtest can still reflect selection bias or costs that were left out.

Research methodology · Execution and cost assumptions · Check backtest overfitting

Build with the open-source tools

Use these accounting records as inspectable inputs. When you have constructed a return series, the validation tools can help test its statistical evidence and preserve the result with its limitations.

Read the published dataset with Python
import json
from urllib.request import urlopen

with urlopen("https://canlicapital.com/company-data/0001699136.json") as response:
    record = json.load(response)
print(record["fetched_at"])
print(record["policy"])
for concept in record["concepts"]:
    print(concept["tag"], next(iter(concept["observations"])))