CECO · Industrials(industrial & commercial fans & blowers & air purifing equip) · 10 years of annual accounts filed with the SEC · latest fiscal year ended 2025-12-31
Signed in, this page also says what this company is inside your own portfolio: its weight, its share of your risk, and what buying or selling some of it would change. Sign in ›
Ceco Environmental Corp reported revenue of $774.4 million in fiscal 2025, after growing 9.4% a year over the previous 9 years. Its operating margin widened from 2.3% in 2017 to 13.7%, and it earned 12.8% on its invested capital in the latest year. Of the $161.5 million its operations generated over 10 years, 35.2% went back into the business and 10.6% to buybacks; the share count rose 6.3%. On the accounting screens, it passes 5 of 9 Piotroski tests, its Altman Z'' of 2.35 is in the grey zone and its Beneish M-score is below the -1.78 line; 2 of the six cross-checks between its statements fire.
Revenue, fiscal 2025774.4M+9.4% a year over 9 years
Operating margin13.7%gross margin 34.8%
Return on invested capital12.8%7.6% on average over 4 years
Free cash flow after stock pay-18.6M-2.4% of revenue
Net debt ÷ EBITDA1.4×net debt 179.3M
Piotroski F-score5/9tests of improvement passed
Is it growing?
Revenue and the operating income it turns into. Growth that does not reach operating income is growth bought with margin.
RevenueOperating income
0200M400M600M800M
2017Revenue 345.1MOperating income 8.0M
2018Revenue 337.3MOperating income 10.0M
2019Revenue 341.9MOperating income 18.0M
2020Revenue 316.0MOperating income 13.3M
2021Revenue 324.1MOperating income 9.9M
2022
2022Revenue 422.6MOperating income 22.2M
2023Revenue 544.8MOperating income 34.6M
2024Revenue 557.9MOperating income 35.4M
2025Revenue 774.4MOperating income 105.9M
2017201820192020202120222022202320242025
Compound growth a year
3 yrs
5 yrs
9 yrs
Revenue
+22.4%
+19.0%
+9.4%
Operating income
+68.4%
+60.8%
+33.2%
Net income
+42.2%
+103.7%
—
Earnings per share
+40.1%
+102.6%
—
Shares
+1.5%
+0.6%
+0.7%
Falling shares are buybacks: each remaining share owns more of the company.
Does it earn more than its capital costs?
Margins say how much of each sale is kept; return on invested capital says how much the business earns on the money it needs to operate. Growth only creates value when that return is above the cost of the capital.
Return on invested capitalCost of capital today · 8.7%
-20%-10%0%10%20%
2017Return on invested capital -5.7%
2018Return on invested capital -11.3%
2019Return on invested capital 4.7%
2020Return on invested capital 3.3%
2021Return on invested capital 1.6%
2022
2022Return on invested capital 5.3%
2023Return on invested capital 6.3%
2024Return on invested capital 6.2%
2025Return on invested capital 12.8%
2017201820192020202120222022202320242025
Economic profit
Economic profit
-60M-40M-20M020M40M
2017Economic profit -43.5M
2018Economic profit -50.5M
2019Economic profit -10.4M
2020Economic profit -14.7M
2021Economic profit -19.2M
2022
2022Economic profit -11.1M
2023Economic profit -8.9M
2024Economic profit -11.7M
2025Economic profit 21.8M
2017201820192020202120222022202320242025
(return on capital − cost of capital) × capital invested: the profit left after paying for the money used. Today's cost of capital is applied to every year, since a past one cannot be rebuilt honestly.
Return on equity
15.8%
Return on assets
5.6%
Asset turnover
0.87×
Overheads (SG&A)
25.9% of revenue
Is the profit cash, and where does the cash go?
Net income is an accounting opinion; free cash flow is what was left in the bank after investing. Stock-based pay does not leave the bank — shareholders pay it through dilution — so it is shown taken off as well.
Net incomeFree cash flowAfter stock-based pay
-20M020M40M60M
2017Net income -3.0MFree cash flow 5.5MAfter stock-based pay 3.8M
2018Net income -7.1MFree cash flow 18.9MAfter stock-based pay 15.7M
2019Net income 17.7MFree cash flow 4.6MAfter stock-based pay 1.9M
2020Net income 8.2MFree cash flow 476,000After stock-based pay -1.3M
2021Net income 1.4MFree cash flow 10.7MAfter stock-based pay 7.3M
2022
2022Net income 17.4MFree cash flow 26.3MAfter stock-based pay 22.4M
2023Net income 12.9MFree cash flow 36.3MAfter stock-based pay 31.7M
2024Net income 13.0MFree cash flow 7.5MAfter stock-based pay -54,000
2025Net income 50.1MFree cash flow -5.5MAfter stock-based pay -18.6M
2017201820192020202120222022202320242025
Where 10 years of operating cash went, 2017–2025
161.5M generated by the business. Each band is its share of that total.
Reinvested in the business 35%56.8M
Acquisitions 0%0
Dividends 5%7.8M
Share buybacks 11%17.0M
Kept, or used to pay down debt 49%79.8M
Over the same years it paid 41.8M in stock. The share count rose 6.3%. The buybacks did not even cover what was handed out in stock.
Per share
Earnings per shareFree cash flow per shareDividend per share
-$0.50$0.00$0.50$1.00$1.50
2017Earnings per share $-0.09Free cash flow per share $0.16Dividend per share $0.23
2018Earnings per share $-0.21Free cash flow per share $0.54
2019Earnings per share $0.50Free cash flow per share $0.13
2020Earnings per share $0.23Free cash flow per share $0.01
2021Earnings per share $0.04Free cash flow per share $0.30
2022
2022Earnings per share $0.50Free cash flow per share $0.75
2023Earnings per share $0.37Free cash flow per share $1.03
2024Earnings per share $0.36Free cash flow per share $0.21
2025Earnings per share $1.37Free cash flow per share $-0.15
2017201820192020202120222022202320242025
Shares outstanding
Diluted shares
34M35M36M37M
2017Diluted shares 34.4M
2018Diluted shares 34.7M
2019Diluted shares 35.5M
2020Diluted shares 35.5M
2021Diluted shares 35.6M
2022
2022Diluted shares 35.0M
2023Diluted shares 35.3M
2024Diluted shares 36.4M
2025Diluted shares 36.6M
2017201820192020202120222022202320242025
Debt and liquidity
Debt is not bad in itself; debt the business cannot service in a bad year is. Net debt is debt minus cash, and below zero the company holds more cash than it owes.
Net debt
050M100M150M200M
2017Net debt 84.9M
2018Net debt 30.8M
2019Net debt 29.9M
2020Net debt 36.6M
2021Net debt 33.9M
2022
2022Net debt 65.7M
2023Net debt 82.5M
2024Net debt 181.0M
2025Net debt 179.3M
2017201820192020202120222022202320242025
Net debt ÷ EBITDA
1.4×
Interest coverage
5× operating income ÷ interest
Current ratio
1.34 current assets ÷ current liabilities
Cash conversion cycle
35 days collects in 81d, stock 39d, pays in 85d
Three classic screens of the accounts
Each asks a different question of the same statements — is it improving, does it look like a company heading for distress, do the accounts resemble ones that were manipulated. None is a verdict; each shows what moves it.
Piotroski F-score
Is the business improving? Nine yes-or-no tests, this year against last.
5of 9 tests passed
✓ProfitableReturn on assets above zeropassed
✓Cash from operationsOperating cash flow above zeropassed
✓Profitability improvedReturn on assets higher than a year beforepassed
✕Profit backed by cashOperating cash flow above net income (low accruals)failed
✓Less long-term debtLong-term debt as a share of assets fellpassed
✕More liquidCurrent ratio higher than a year beforefailed
✕No new sharesShare count did not growfailed
✕Better gross marginGross margin higher than a year beforefailed
✓Sells more per assetAsset turnover higher than a year beforepassed
Where it misleads: it measures change, not level. An excellent business that stood still for a year scores low; a poor one recovering from a disaster scores high.
Altman Z''-score
Does the balance sheet look like those of companies that went bankrupt?
2.35grey zone
1.12.6
Working capital ÷ assets 0.12 × 6.56+0.77
Retained earnings ÷ assets 0.06 × 3.26+0.21
Operating income ÷ assets 0.12 × 6.72+0.80
Equity ÷ liabilities 0.56 × 1.05+0.58
Where it misleads: buybacks. A company that returns so much cash that its equity turns small or negative sinks the last two ratios without being anywhere near bankruptcy. Banks and insurers do not fit the model at all.
Beneish M-score
Do the accounts resemble those of companies that manipulated their earnings?
-2.12below the -1.78 line
-1.78
Receivables vs sales 0.78+0.72
Gross margin slipping 1.01+0.53
Soft assets 0.94+0.38
Sales growth 1.39+1.24
Slower depreciation 0.88+0.10
Overheads vs sales 0.99-0.17
Profit not in cash 0.05+0.23
Leverage rising 0.95-0.31
Where it misleads: fast growth and acquisitions. Sales growth carries a heavy weight, so a company growing 50% a year scores like a suspect without having done anything. It is a screen from a 1999 study, not an accusation.
Where the statements disagree
Cross-checks between the income statement, the balance sheet and the cash flow for the latest year, each with the benign reading and the worrying one.
Reported profit comfortably exceeds the cash generated (50M against 6M).
Benign
Growth consuming working capital, or the seasonality of the year-end.
Worrying
Profit held up by accounting entries that do not turn into money.
Capital spending (11M) is well below depreciation (25M).
Benign
Mature assets, or a business that has become less capital-intensive.
Worrying
Under-investing: today's profit is being held up by consuming tomorrow's capacity.
What is it worth, under which assumptions?
A company is worth the cash it will generate, brought back to today. This model projects revenue with growth that fades over the years, applies a free cash flow margin, and discounts the result at the cost of capital. Every assumption says where it came from, and all of them can be changed.
Value per share, with these assumptions$44.90discounted at 8.7% a year · 62% of it from after year 10
Type a share price on the left to ask the reverse questions: what growth, what margin or what discount rate that price implies.
What the value implies, in the usual multiples
At this model's value
Price ÷ earnings
32.8×
Enterprise value ÷ EBITDA
13.9×
Enterprise value ÷ revenue
2.4×
Free cash flow yield
-1.1%
From cash flows to a value per share
10 years of cash flow, today686.7M
Everything after, today1.1B
The whole business1.8B
Minus net debt-179.3M
What belongs to shareholders1.6B
Divided among 36.6M shares: <strong>$44.90</strong> each.
The projection next to its history
Reported free cash flow after stock pay, then the model's. A projection that looks nothing like the past needs a reason.
ReportedProjected
-50M050M100M150M200M
2017Reported 3.8M
2018Reported 15.7M
2019Reported 1.9M
2020Reported -1.3M
2021Reported 7.3M
2022
2022Reported 22.4M
2023Reported 31.7M
2024Reported -54,000
2025Reported -18.6M
2026Projected 56.6M
2027Projected 69.1M
2028Projected 82.7M
2029Projected 96.9M
2030Projected 111.1M
2031Projected 124.8M
2032Projected 137.0M
2033Projected 147.1M
2034Projected 154.4M
2035Projected 158.3M
2017201920212022202420262028203020322034
Year by year
2026
2027
2028
2029
2030
2031
2032
2033
2034
2035
Revenue
964.1M
1.2B
1.4B
1.6B
1.9B
2.1B
2.3B
2.5B
2.6B
2.7B
Growth
24.5%
22.1%
19.6%
17.2%
14.7%
12.3%
9.8%
7.4%
4.9%
2.5%
Cash margin
5.9%
5.9%
5.9%
5.9%
5.9%
5.9%
5.9%
5.9%
5.9%
5.9%
Free cash flow
56.6M
69.1M
82.7M
96.9M
111.1M
124.8M
137.0M
147.1M
154.4M
158.3M
Worth today
52.1M
58.5M
64.4M
69.4M
73.2M
75.6M
76.4M
75.5M
72.9M
68.7M
If the least-known inputs move
Value per share as two inputs change at a time. Neighbouring cells that differ a lot are the conclusion: the value depends on numbers nobody knows to a point.
The discount rate and growth forever
discount ↓ · forever →
1.5%
2.0%
2.5%
3.0%
3.5%
7.7%
47
51
55
61
68
8.2%
42
46
50
54
60
8.7%
39
42
45
49
53
9.2%
36
38
41
44
48
9.7%
33
35
37
40
43
Year-one growth and the final margin
margin ↓ · growth →
20.5%
22.5%
24.5%
26.5%
28.5%
4.7%
31
34
37
40
43
5.3%
34
37
41
44
48
5.9%
38
41
45
49
53
6.5%
41
45
49
53
58
7.0%
45
49
53
58
63
All the inputs moving at once
5,000 valuations, each with growth, final margin, discount rate and growth forever drawn at random around the values on the left (spreads of 3.0%, 2.0%, 1.0% and 0.5%). Not a probability — the spreads are assumptions too — but an honest picture of how wide the answer is.
10th percentile$24.82
Median$44.85
90th percentile$73.22
$25.00$50.00$75.00$100.00
Half of the simulations land between <b>$33.89</b> and <b>$58.14</b>; one in ten below $24.82, one in ten above $73.22.
Does the long run make sense?
5.8×The terminal value prices the business in year 10 at 5.8 times that year's EBITDA.
7%To grow 2.5% forever while reinvesting 34% of its after-tax operating profit, the business must earn 7% on the new capital — it has earned 8% on average over the last five years.
62%of the value comes from after year 10. The more of it, the more the answer depends on the part nobody can see.
Every Form 4 filed in the last twelve months, read line by line: 6 filings by 4 people. Open-market purchases and sales are counted apart from awards, option exercises and shares withheld for taxes.
Bought on the open market—none in the period
Sold on the open market$9.5M3 sale(s) by 2 insider(s)
Under pre-arranged plans0%of the sales followed a 10b5-1 plan set months earlier
Harris-Peterson CandaceChief Human Resources Officer
Received as an award
3,105
—
—
21,991
A Form 4 says what happened, when, how many shares and at what price. It does not say why: a sale can be diversification, a tax bill or a plan fixed months earlier, and an award is pay, not a purchase. Nothing here is a reason to buy or sell anything.
Which large funds report holding it
From the Form 13F of the 28 institutions followed on this site, as of the end of their last reported quarter. A 13F is filed up to 45 days later and shows only long positions in US-listed shares.
Accounts from the company's own SEC filings; lines some companies do not report are shown as a dash rather than estimated. The risk-free rate is the 10-year US Treasury yield. A DCF is a way of making assumptions explicit, not a forecast: it states what the company would be worth if the assumptions held. The scores are screens that point where to look, not verdicts. Nothing here is a recommendation to buy or sell.