Loading institutional data...
Loading institutional data...
Held by 331 of 6,047 reporting institutions (94th percentile) — extremely crowded.
Data as of Q2 2026
Loading snapshot...
Loading financials...
Loading valuation...
Loading analysis...
Loading dividends & returns...
Loading capital allocation...
Loading debt & leverage...
Loading performance...
Loading peer comparison...
Loading ownership map...
Loading crowding analysis...
Loading conviction analysis...
Loading buy/sell flow...
Loading ownership trends...
Loading top holders...
Loading top holders...
Ranked against 26 sector peers with collected financials. Valuation from latest close × latest fiscal-year fundamentals; 13F conviction as of 2026-06-30.
Percentile is “goodness” within the peer set (100 = best). For valuation and leverage that means cheaper / less-levered ranks higher.
| Company | Mkt cap ▼ | P/E | EV/EBITDA | P/S | Rev gr | Gross | Net | ROE | ROIC | Net D/EBITDA | 13F |
|---|---|---|---|---|---|---|---|---|---|---|---|
| ITW | $74.9B | 25.1× | 18.3× | 4.7× | 0.9% | 52.9% | 19.1% | 95.0% | 25.1% | 1.8× | 1,915 |
| IR | $29.5B | 52.5× | 20.0× | 3.9× | 5.7% | 43.6% | 7.6% | 5.8% | 3.9% | 2.1× | 868 |
| XYL | $23.8B | 26.0× | 13.5× | 2.6× | 5.5% | 38.5% | 10.6% | 8.3% | 7.1% | 0.3× | 1,060 |
| HSAI | $19.3B | 35.8× | — | 44.7× | 52.1% | 41.8% | 14.4% | 4.9% | 4.5% | -3.2× | 132 |
| NDSN | $18.6B | 39.2× | 25.9× | 6.7× | 3.8% | 55.2% | 17.4% | 15.9% | 9.6% | 2.4× | 725 |
| ITT | $18.5B | 33.7× | 21.2× | 4.7× | 8.5% | 35.4% | 12.4% | 11.9% | 10.0% | -1.2× | 689 |
| ZBRA | $17.8B | 46.0× | 26.1× | 3.3× | 8.3% | 48.1% | 7.8% | 11.7% | 6.9% | 3.1× | 620 |
| IEX | $17.2B | 36.4× | 23.8× | 5.0× | 5.8% | 44.5% | 14.0% | 12.0% | 8.3% | 1.6× | 665 |
| RBC | $16.3B | 56.7× | 36.6× | 8.7× | 14.3% | 44.4% | 15.4% | 8.6% | 6.8% | 1.8× | 657 |
| GGG | $12.6B | 25.3× | 16.4× | 5.7× | 5.8% | 52.5% | 23.3% | 19.7% | 19.7% | -0.8× | 706 |
| RRX | $10.6B | 38.1× | 17.9× | 1.8× | -1.6% | 37.4% | 4.7% | 4.1% | 2.4% | 5.1× | 580 |
| DCI | $10.3B | 29.1× | 18.1× | 2.8× | 2.9% | 34.8% | 9.9% | 25.2% | 17.3% | 0.8× | 600 |
| FLS | $9.5B | 28.2× | 20.7× | 2.0× | 3.8% | 33.4% | 7.3% | 15.8% | 9.2% | 1.6× | 569 |
| TKR | $8.5B | 29.8× | 13.0× | 1.9× | 0.2% | 30.4% | 6.3% | 9.1% | 5.7% | 2.0× | 584 |
| ZWS | $7.9B | 41.5× | 26.2× | 4.7× | 8.3% | 45.1% | 11.7% | 12.3% | 9.4% | 0.6× | 414 |
| GTES | $7.0B | 28.8× | 12.4× | 2.0× | 1.0% | 39.8% | 7.3% | 7.5% | 4.5% | 2.1× | 343 |
| ESAB | $4.3B | 19.1× | 10.9× | 1.5× | 3.7% | 36.9% | 8.0% | 10.5% | 6.7% | 2.1× | 335 |
| CECO | $4.3B | 53.8× | 34.4× | 5.6× | 38.8% | 34.8% | 6.5% | 15.8% | 9.4% | 1.4× | 331 |
| OUST | $3.2B | — | — | 18.9× | 52.5% | 49.3% | -35.6% | -23.1% | -23.1% | — | 324 |
| CHRN | $2.8B | — | 122.2× | 39.1× | 459% | -23.9% | -70.3% | -28.0% | -27.4% | -0.3× | — |
| GRC | $2.0B | 38.3× | 18.8× | 3.0× | 3.4% | 30.6% | 7.8% | 12.8% | 7.3% | 2.2× | 241 |
| GHM | $1.1B | 81.7× | 53.1× | 4.4× | 16.9% | 23.5% | 5.1% | 8.9% | 8.2% | 0.3× | 206 |
| TWIN | $415M | 15.3× | 13.5× | 1.1× | 11.9% | 26.9% | 7.1% | 12.3% | 10.9% | 0.4× | 90 |
| RR | $378M | — | — | 75.0× | 19.0% | 35.9% | -973% | -19.6% | -19.6% | — | 182 |
| PPIH | $261M | 15.2× | 8.0× | 1.2× | 33.2% | 32.9% | 8.1% | 18.8% | 13.8% | 0.4× | 79 |
Peers = companies sharing CECO's sector (Industrial & Commercial Fans & Blowers & Air Purifing Equip) with collected SEC financials. Multiples use the most recent end-of-day close and latest fiscal-year fundamentals (trailing, not forward). Missing cells mean the peer never reported that line item, has no collected price, or has a non-positive denominator. Not investment advice.
Solve the discounted cash flow backwards, then stress-test the assumptions.
Average free cash flow across the last 2 positive fiscal years (FY2023, FY2024). Smooths the cycle. Stock compensation is NOT charged — it is added back inside operating cash flow.
To be worth $74.96 today, the market must believe free cash flow compounds 39.5%/yr for a decade (off $21.9M on the 3-yr avg basis).
On the basis ($15.8M) the requirement is 44.4%/yr. Shares issued to employees are added back in operating cash flow, so this basis treats them as free.
Default is 9.6% — this company's computed cost of capital (computed WACC), the same rate the Analysis tab discounts at.
2-stage DCF · 0.06B shares (market data) · net debt $179.3M
mean 228.7% · volatility σ 730% · implied rate exceeded in 3/9 yrs
Central path = implied 39.5%/yr growth; shaded band = ±1σ (730%) of this company's historical FCF volatility, widening with time. The wider the band, the less certain the growth.
Reverse DCF: rather than guessing a fair value, we solve for the growth the current price implies, then you stress-test the assumptions. Enterprise value of the FCF stream, less net debt, ÷ shares. Educational — not a recommendation.
Total shares institutions bought (green) vs sold (red) each quarter across all holders.
Inferred from quarter-over-quarter change in each fund's 13F position (new stakes count as buys, exits as sells). Not tick-level trades.
Top 40 institutional holders — bubble size is position value, color is the move since last quarter. Hover any holder for detail.
Drag any bubble to rearrange · size = dollar value of the position
What the company returns to shareholders — and whether it's covered by cash.
No dividend to cover. Last year: $0 dividends + $0 buybacks = $0 returned on -$5.5M FCF.
Yields use the latest fiscal-year dividends/buybacks over current market cap. Dividends and buybacks from the SEC cash-flow statement; payout coverage vs net income and free cash flow. Educational — not a recommendation.
How management deployed cash over 10 years — and what it earned on reinvestment.
A reinvestment story — most cash went back into growth rather than to shareholders.
Reinvestment has been productive — operating income grew well per dollar put in. Current ROIC on all capital: 9%. Rough measure (includes maintenance capex).
Cash uses aggregated from the SEC cash-flow statement over 10 fiscal years. "Return on reinvestment" is a rough proxy — operating-income change ÷ cumulative CapEx + M&A — and includes maintenance capex. Educational — not a recommendation.
EOD close · as of 2026-10-05
How a revenue dollar becomes profit — FY2025
Dividends and buybacks are cash paid out, shown here against the same year's profit for scale — not funded from it.
Each value shows its share of revenue below it (common-size).
| Line Item | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 |
|---|---|---|---|---|---|---|---|---|---|---|
| Revenue | $750.0M 100.0% | $750.0M 100.0% | $544.8M 100.0% | $422.6M 100.0% | $324.1M 100.0% | $316.0M 100.0% | $341.9M 100.0% | $337.3M 100.0% | $345.1M 100.0% | $417.0M 100.0% |
| Cost of Revenue | $505.2M 67.4% | $361.8M 48.2% | $373.8M 68.6% | $294.4M 69.7% | $223.2M 68.9% | $210.9M 66.7% | $227.8M 66.6% | $225.8M 66.9% | $231.9M 67.2% | $282.2M 67.7% |
| Gross Profit | $269.2M 35.9% | $196.1M 26.2% | $171.0M 31.4% | $128.2M 30.3% | $100.9M 31.1% | $105.1M 33.3% | $114.1M 33.4% | $111.5M 33.1% | $113.2M 32.8% | $134.9M 32.3% |
| Selling, General & Admin | $200.7M 26.8% | $146.7M 19.6% | $122.9M 22.6% | $93.5M 22.1% | $81.8M 25.2% | $76.9M 24.3% | $86.0M 25.1% | $87.5M 25.9% | $89.0M 25.8% | $81.7M 19.6% |
| Operating Income | $105.9M 14.1% | $35.4M 4.7% | $34.6M 6.3% | $22.2M 5.2% | $9.9M 3.0% | $13.3M 4.2% | $18.0M 5.3% | $10.0M 3.0% | $8.0M 2.3% | -$25.6M -6.1% |
| Interest Expense | $20.9M 2.8% | $13.0M 1.7% | $13.4M 2.5% | $5.4M 1.3% | $3.0M 0.9% | $3.5M 1.1% | $5.4M 1.6% | $7.1M 2.1% | $6.7M 1.9% | $7.7M 1.8% |
| Other Income (Expense), net | -$2.1M -0.3% | -$4.7M -0.6% | $372K 0.1% | $6.9M 1.6% | -$2.2M -0.7% | $2.0M 0.6% | -$751K -0.2% | -$365K -0.1% | $106K 0.0% | $310K 0.1% |
| Pretax Income | $82.8M 11.0% | $17.7M 2.4% | $21.5M 4.0% | $23.7M 5.6% | $4.7M 1.4% | $11.8M 3.7% | $13.3M 3.9% | $2.5M 0.7% | $1.4M 0.4% | -$33.0M -7.9% |
| Income Tax Expense | $29.7M 4.0% | $3.3M 0.4% | $7.0M 1.3% | $5.4M 1.3% | $2.7M 0.8% | $3.7M 1.2% | -$4.4M -1.3% | $9.6M 2.9% | $4.4M 1.3% | $5.3M 1.3% |
| Net Income | $50.1M 6.7% | $13.0M 1.7% | $12.9M 2.4% | $17.4M 4.1% | $1.4M 0.4% | $8.2M 2.6% | $17.7M 5.2% | -$7.1M -2.1% | -$3.0M -0.9% | -$38.2M -9.2% |
| Per Share | ||||||||||
| EPS (Basic) | $1.42 | $0.37 | $0.37 | $0.50 | $0.04 | $0.23 | -$0.51 | -$0.21 | -$0.09 | -$1.12 |
| EPS (Diluted) | $1.37 | $0.36 | $0.37 | $0.50 | $0.04 | $0.23 | -$0.50 | -$0.21 | -$0.09 | -$1.12 |
| Weighted Avg Shares (Basic) | 35.3M | 34.9M | 34.7M | 34.7M | 35.3M | 35.3M | 35.0M | 34.7M | 34.4M | 34.0M |
| Weighted Avg Shares (Diluted) | 36.6M | 36.4M | 35.3M | 35.0M | 35.6M | 35.5M | 35.5M | 34.7M | 34.4M | 34.0M |
Source: SEC EDGAR XBRL filings (annual, fiscal year). Quarterly flow items are derived from cumulative filings; balance-sheet figures are as-of each period end. Ratios and margins are computed, not reported.
How much the company owes, how it's trended, and how comfortably it's serviced.
Cash of $33.1M (at 2025-12-31) covers the $22.6M due within a year 1.5× over. Scheduled principal only (excludes interest & revolver draws). As of 2026-06-30 (10-Q). The cash figure is from 2025-12-31, so the two are not the same balance-sheet date — the schedule has not been refiled since.
Green ≤ 1.5× · amber ≤ 3× · red > 3× (leverage relative to cash earnings).
Coverage is adequate but not comfortable. Effective rate ~9.8% on $212.4M of debt.
Cash of $33.1M fully covers short-term debt of $1.9M.
Mostly long-term debt (balance-sheet current vs non-current split). See the maturity ladder above for the year-by-year repayment schedule.
Debt, cash, interest and equity from the SEC balance sheet & income statement. Effective rate = interest ÷ average debt. Maturity ladder from the SEC long-term-debt repayment schedule. Educational — not a recommendation.
Total return (dividends reinvested) vs the market, from quarter-end prices.
Above 0 = ahead of the S&P 500 since the window start; below 0 = behind. Rising means it's pulling ahead.
How far the stock fell below its prior peak. Deeper, longer drawdowns = a rougher ride to the same return.
Quarter-end, dividend-adjusted (total return). Beta & volatility from quarterly returns (annualized). Benchmark is the S&P 500 (SPY total return). Annual returns compound the quarters ending in each calendar year; the first and last years in a window may be partial. Past performance doesn't predict future results.
EOD close · as of 2026-10-05
Where each multiple sits in its own 14-yr range · 88th pct blended
Dot = today · shaded = middle 50% · line = median. Lower percentile = cheaper vs its own 14-yr history.
Is the profit real, and how strong is the balance sheet?
FY2025 · every deduction from revenue to net income
DuPont — the three levers
ROE 16% against ROIC 9% — 6% of the return on equity comes from leverage and buybacks rather than from the operating business.
Equity is the year-end figure. On average equity over the two year-ends, ROE is 17.7% — the two diverge when buybacks or issuance move equity during the year.
What the company owes vs. what it holds
This shows debt/cash structure and net leverage. The year-by-year maturity schedule is on the Debt & Leverage tab.
Latest year: profit growth vs revenue growth
High operating leverage: profit moved 5.1× as fast as sales — great in an upturn, painful in a downturn.
Each line as % of revenue — the trend in color
| % of revenue | FY2018 | FY2019 | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 |
|---|---|---|---|---|---|---|---|---|
| Cost of Revenue | 66.9 | 66.6 | 66.7 | 68.9 | 69.7 | 68.6 | 48.2 | 67.4 |
| Gross Profit | 33.1 | 33.4 | 33.3 | 31.1 | 30.3 | 31.4 | 26.2 | 35.9 |
| SG&A | 25.9 | 25.1 | 24.3 | 25.2 | 22.1 | 22.6 | 19.6 | 26.8 |
| Operating Income | 3.0 | 5.3 | 4.2 | 3.0 | 5.2 | 6.3 | 4.7 | 14.1 |
| Income Tax | 2.9 | -1.3 | 1.2 | 0.8 | 1.3 | 1.3 | 0.4 | 4.0 |
| Net Income | -2.1 | 5.2 | 2.6 | 0.4 | 4.1 | 2.4 | 1.7 | 6.7 |
Green = margin-favorable vs the row's own range · red = unfavorable.
The metrics that matter, over time
A 30-second read on CECO: price, valuation and headline fundamentals from SEC filings. The four questions at the top of the page are where the judgements live.
Earns -2.02pts against its cost of capital — capital is being consumed, not created.
| Period | ROIC | Cost of capital | Spread |
|---|---|---|---|
| FY2019 | 5.1% | 9.6% (today's — no rate published for this year) | -4.5pts |
| FY2020 | 3.6% | 9.6% (today's — no rate published for this year) | -6.0pts |
| FY2021 | 2.7% | 7.3% | -4.6pts |
| FY2022 | 5.2% | 8.3% | -3.1pts |
| FY2023 | 7.1% | 8.5% | -1.4pts |
| FY2024 | 5.4% | 10.4% | -5.0pts |
| FY2025 | 13.9% | 9.4% | 4.5pts |
| Now | 9.4% | 9.6% | -0.1pts |
| Fiscal year | Gross margin | Operating margin | Net margin |
|---|---|---|---|
| FY2016 | 32.3% | -6.1% | -9.2% |
| FY2017 | 32.8% | 2.3% | -0.9% |
| FY2018 | 33.1% | 3.0% | -2.1% |
| FY2019 | 33.4% | 5.3% | 5.2% |
| FY2020 | 33.3% | 4.2% | 2.6% |
| FY2021 | 31.1% | 3.0% | 0.4% |
| FY2022 | 30.3% | 5.2% | 4.1% |
| FY2023 | 31.4% | 6.3% | 2.4% |
| FY2024 | 35.2% | 6.3% | 2.3% |
| FY2025 | 34.8% | 13.7% | 6.5% |
Leverage and buybacks account for 6 points of the 16% return on equity in FY2025. The business earns 9% on the capital it employs; the rest is balance sheet.
ROE is on average equity; ROIC is NOPAT over average invested capital (debt plus equity less excess cash). The gap is not a single adjustment.
The spread was positive in only 1 of the last 5 years.
Converts 2.45x of reported profit into cash — adequate, without much margin.
Reported free cash flow is -$5M; after share-based compensation it is -$19M. The difference is a real cost that the cash flow statement adds back.
Covers interest 3.5x under stress — adequate, without much room.
| EBITDA decline | Interest coverage |
|---|---|
| 0% | 5.06x |
| 5% | 4.81x |
| 10% | 4.56x |
| 15% | 4.30x |
| 20% | 4.05x |
| 25% | 3.80x |
| 30% | 3.54x |
| 35% | 3.29x |
| 40% | 3.04x |
| 45% | 2.78x |
| 50% | 2.53x |
| 55% | 2.28x |
| 60% | 2.02x |
Ladder as of 2026-06-30 (10-Q); cash from the 2025-12-31 balance sheet; FCF from FY2025. Free cash flow is negative, so projected resources fall rather than accumulate.
Balance sheet at 2025-12-31. Undrawn revolving credit is not shown: the tag is collected but not yet mapped through to the API.
Coverage is comfortable at 5.1x today but falls to 3.5x after a 30% EBITDA decline — the cushion is earnings, not liquidity.
At $73.66, free cash flow must compound 39.35%/yr for 10 years. It has no positive compounding record to compare against.
| Fiscal year | FCF growth | Price requires |
|---|---|---|
| FY2020 | −89.6% | 39.4% |
| FY2021 | 2144.1% | 39.4% |
| FY2022 | 146.0% | 39.4% |
| FY2023 | 38.0% | 39.4% |
| FY2024 | −79.4% | 39.4% |
| FY2025 | −173.5% | 39.4% |
The implied rate has been matched or beaten in 2 of the last 6 years.
| Step | Amount | Running total |
|---|---|---|
| Net income | $50M | $50M |
| Share-based comp | $13M | $63M |
| Other non-cash & working capital | −$57M | $6M |
| Operating cash flow | $6M | $6M |
| Capex | −$11M | −$5M |
| Free cash flow | −$5M | −$5M |
| FCF after SBC | −$19M | −$19M |
| Fiscal year | Revenue growth | Receivables growth | Gap |
|---|---|---|---|
| FY2020 | -7.6% | -7.9% | -0.3 points |
| FY2021 | 2.6% | 18.9% | 16.4 points |
| FY2022 | 30.4% | 10.8% | -19.6 points |
| FY2023 | 28.9% | 35.6% | 6.7 points |
| FY2024 | 2.4% | 41.5% | 39.1 points |
| FY2025 | 38.8% | 8.4% | -30.4 points |
| Fiscal year | DSO | DIO | DPO | Cash conversion cycle |
|---|---|---|---|---|
| FY2019 | 73.1 days | 33 days | 78.1 days | 27.9 days |
| FY2020 | 72.8 days | 30 days | 96.8 days | 6.1 days |
| FY2021 | 84.4 days | 27.9 days | 92 days | 20.4 days |
| FY2022 | 71.8 days | 32.9 days | 91 days | 13.6 days |
| FY2023 | 75.5 days | 33.3 days | 85.6 days | 23.2 days |
| FY2024 | 104.3 days | 43 days | 110.6 days | 36.7 days |
| FY2025 | 81.5 days | 39 days | 85.2 days | 35.4 days |
| Fiscal year | Accruals / assets |
|---|---|
| FY2019 | 1.8 percent |
| FY2020 | 0.9 percent |
| FY2021 | -2.9 percent |
| FY2022 | -2.4 percent |
| FY2023 | -5.3 percent |
| FY2024 | -1.6 percent |
| FY2025 | 4.9 percent |
SBC is added back inside operating cash flow, so reported free cash flow treats shares issued to employees as free. Percent of revenue says how expensive the payroll is; percent of operating cash flow says how much of the cash exists only because the charge was added back. The buyback offset is buybacks over SBC — below 1.0 the repurchase does not cover the shares issued.
Figures are the latest fiscal year (FY2025) from the company's own filings, not a trailing-twelve-month window — Q2 reads fiscal years throughout so the cash-conversion ratios and these share one basis. A blank is a line the filer did not report; it is never read as zero.