CECO · XBRL financial data
CECO Environmental financial statements, every fiscal year
The same tables from 7 filings, lined up. Matched by XBRL tag: renamed lines keep their history.
How these numbers work
- Every number comes from the company's XBRL financial data filed with the SEC, and each one links to its filing.
- Lines are matched by XBRL tag, so a line renamed between filings keeps its history.
- * marks a quarter worked out from the filing totals: the 10-K year minus the first three quarters, or a year-to-date total minus the earlier one. Fourth-quarter earnings per share is fourth-quarter net income over the fourth-quarter weighted shares.
- 0 means a filing states zero; a dash (—) means no filing states that number.
- “year only” means the 10-K gives the full year but not the quarters needed to work out the fourth. A worked-out quarter of revenue, cost of revenue or operating cash flow more than twice the company's largest quarter of the two years before is shown this way too.
- Gross profit is shown as the company reports it; a worked-out quarter must equal revenue less cost of revenue for that quarter, or it is a dash.
- Operating income can be above gross profit when the company books other operating income between the two, shown on its own line.
- Shares outstanding come from each filing's cover page, as of the date printed there.
- Quarters are fiscal: Q2 FY27 is the second quarter of the company's fiscal 2027.
Income statement
CSVFiscal years (CECO's year ends in late December)
| In thousands of dollars | Dec 31, 2020 | Dec 31, 2021 | Dec 31, 2022 | Dec 31, 2023 | Dec 31, 2024 | Dec 31, 2025 |
|---|---|---|---|---|---|---|
| Revenue thousands of EUR | — | — | — | — | 750,000 | 750,000 |
| Revenue from contracts with customers | 316,011 | 324,140 | 422,627 | 544,845 | 557,933 | 774,381 |
| Cost of goods and services sold | 210,883 | 223,218 | 294,402 | 373,829 | 361,786 | 505,155 |
| Gross profit | 105,128 | 100,922 | 128,225 | 171,016 | 196,147 | 269,226 |
| Selling, general and administrative | 76,926 | 81,797 | 93,473 | 122,944 | 146,698 | 200,728 |
| Other operating income (expense) | — | — | — | (3,549) | (1,110) | (619) |
| Operating income (loss) | 13,346 | 9,857 | 22,161 | 34,569 | 35,403 | 105,859 |
| Interest expense | 3,535 | 2,952 | 5,419 | 13,416 | 13,020 | 20,913 |
| Other income (expense) | 2,033 | 2,231 | 6,947 | 372 | (4,692) | (2,101) |
| Income tax expense (benefit) | 3,672 | 2,691 | 5,426 | 7,024 | 3,270 | 29,738 |
| Net income (loss) | 8,211 | 1,426 | 17,417 | 12,911 | 12,957 | 50,051 |
| Earnings per share, basic USD per share | 0.23 | 0.04 | 0.50 | 0.37 | 0.37 | 1.42 |
| Earnings per share, diluted USD per share | 0.23 | 0.04 | 0.50 | 0.37 | 0.36 | 1.37 |
| Weighted average shares, basic thousands of shares | 35,290 | 35,346 | 34,672 | 34,665 | 34,927 | 35,331 |
| Weighted average shares, diluted thousands of shares | 35,521 | 35,595 | 35,005 | 35,334 | 36,382 | 36,604 |
Balance sheet
CSVFiscal years (CECO's year ends in late December)
Cash flows
CSVFiscal years (CECO's year ends in late December)
| In thousands of dollars | Dec 31, 2020 | Dec 31, 2021 | Dec 31, 2022 | Dec 31, 2023 | Dec 31, 2024 | Dec 31, 2025 |
|---|---|---|---|---|---|---|
| Net income (loss) | 8,211 | 1,426 | 17,417 | 12,911 | 12,957 | 50,051 |
| Stock-based compensation | 1,758 | 3,335 | 3,895 | 4,533 | 7,514 | 13,105 |
| Depreciation and amortization | 9,921 | 9,853 | 10,614 | 12,507 | 14,523 | 24,882 |
| Net cash from operating activities | 4,421 | 13,298 | 29,649 | 44,647 | 24,828 | 5,861 |
| Purchases of property and equipment | 3,945 | 2,616 | 3,376 | 8,384 | 17,368 | 11,343 |
| Net cash from investing activities | (9,235) | (2,083) | (48,257) | (56,486) | (105,312) | (1,076) |
| Share repurchases | 0 | 5,014 | 7,020 | 0 | 5,000 | 0 |
| Proceeds from long-term debt | — | 0 | 11,000 | 75,000 | 0 | 0 |
| Repayments of long-term debt | 5,009 | 2,738 | 3,120 | 4,985 | 113,982 | 2,203 |
| Net cash from financing activities | 3,724 | (15,556) | 38,176 | 21,144 | 65,910 | (11,558) |
| Net change in cash | 853 | (5,816) | 14,590 | 8,863 | (17,247) | (4,974) |
Compare with peers
SIC 3564 and related industry codes, similar size. Each row is the latest quarter reported.
How peers are chosen
- SIC 3564 and related industry codes with public float (or, where float is missing, quarterly revenue) between 0.2x and 5x the company's.
- Each row is the latest quarter the company has reported, named in the Quarter column; when that filing is a 10-K, it is the fourth quarter, never the full year.
- Runway shows only for companies burning cash with under $10B of public float.
- * marks a quarter worked out from the filing totals: for a 10-Q, the year-to-date total less the earlier one.
- A cell reading “not reported” means the filings give no figure for that quarter alone.
| Company | Cash ($K) | Revenue, quarter ($K) | Operating cash flow, quarter ($K) | Shares outstanding | Runway | Quarter |
|---|---|---|---|---|---|---|
| CECO Environmental | 61,066 | 0* | (19,326)* | 58.6M | 3.2 quarters | 10-QJun 30, 2026 |
| Gorman Rupp | 59,302 | 193,254 | 52,448* | 26.4M | — | 10-QSep 30, 2026 |
| Symbotic | 1,746,446 | 720,838 | (147,297)* | 603.9M | 11.9 quarters | 10-QJun 27, 2026 |
| Serve Robotics | 79,112 | 3,238 | (43,316)* | 86.7M | 5.4 quarters | 10-QJun 30, 2026 |
| Graham | 26,953 | 71,342 | (12,650) | 11.7M | 2.1 quarters | 10-QJun 30, 2026 |
| Ouster | 88,899 | 59,325 | (29,349)* | 73.0M | 20.9 quarters | 10-QSep 30, 2026 |
| Churchill Capital Corp XI | 1,253 | not reported | (158)* | not reported | 7.9 quarters | 10-QJun 30, 2026 |
| Graco | 139,818 | 586,385 | 165,474* | 160.4M | — | 10-QSep 25, 2026 |
| Madison Air Solutions | 261,800 | 991,300 | not reported | not reported | — | 10-QJun 30, 2026 |
Not investment advice. Not affiliated with the U.S. SEC.