| Market Cap | $220.7M | |
| Enterprise Value | $65.6M | |
| Revenue | $103.2M | +2.0% |
| Gross Profit | $29.2M | +1.2% |
| EBITDA | $12.5M | +0.5% |
| Net Income | $13.0M | +7.6% |
| Diluted EPS | $1.07 | +8.1% |
| Free Cash Flow | -$8.8M | −86.9% |
| Ratio | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | Trend · 6y | vs own | vs sector |
|---|---|---|---|---|---|---|---|---|---|
| ▾Margins | |||||||||
| Gross Margin | 24.48% | 21.32% | 19.85% | 27.63% | 27.68% | 27.47% | 58% | 43% | |
| Operating Margin | 7.15% | 0.82% | 4.03% | 12.78% | 12.09% | 12.14% | 75% | 73% | |
| EBITDA Margin | 9.27% | 3.86% | 6.75% | 15.47% | 14.39% | 14.18% | 58% | 61% | |
| NOPAT Margin | 5.92% | 0.72% | 3.18% | 9.98% | 8.49% | 9.42% | 75% | 71% | |
| Net Margin | 7.14% | 6.81% | −0.36% | 13.96% | 12.86% | 13.57% | 75% | 85% | |
| FCF Margin | 32.52% | 1.36% | −13.19% | 7.09% | 7.47% | 0.96% | 25% | 29% | |
| OCF Margin | 34.58% | 4.48% | −8.83% | 9.70% | 8.21% | 2.66% | 25% | 24% | |
| Gross Profitability | 11.08% | 10.13% | 11.46% | 14.82% | 15.05% | 14.25% | 58% | 26% | |
| Capex Intensity | 2.06% | 3.12% | 4.36% | 2.61% | 0.74% | 1.70% | 25% | 39% | |
| ▸Returns on Capital · 6 ratios | |||||||||
| ▸DuPont factors (ROE drivers) · 4 ratios | |||||||||
| ▸Earnings quality · 7 ratios | |||||||||
| ▸Liquidity & coverage · 4 ratios | |||||||||
| ▸Leverage · 9 ratios | |||||||||
| ▸Working capital · 8 ratios | |||||||||
| ▸Capital allocation · 1 ratios | |||||||||
| ▸Per share · 3 ratios | |||||||||
| ▸Other · 1 ratios | |||||||||
The five drivers multiply to 7.6% vs reported ROE 7.7%. High ROE from margin and turnover is earned; from the equity multiplier it is borrowed.
| Line | 2020↗ | 2021↗ | 2022↗ | 2023↗ | 2024↗ | 2025↗ |
|---|---|---|---|---|---|---|
| Revenue | $77.4M | $85.3M | $103.5M | $105.1M | $113.2M | $115.4M |
| YoY % | +10.1% | +21.3% | +1.5% | +7.7% | +2.0% | |
| Cost of Revenue | $58.5M | $67.1M | $82.9M | $76.0M | $81.8M | $83.7M |
| YoY % | +14.8% | +23.6% | -8.3% | +7.6% | +2.3% | |
| Gross Profit | $19.0M | $18.2M | $20.5M | $29.0M | $31.3M | $31.7M |
| YoY % | -4.1% | +13.0% | +41.3% | +7.9% | +1.2% | |
| R&D Expense | $3.1M | $4.3M | $4.3M | $3.5M | $3.3M | $2.8M |
| YoY % | +39.8% | +1.1% | -20.0% | -4.2% | -16.8% | |
| SG&A Expense | $10.4M | $13.2M | $12.1M | $12.2M | $14.3M | $14.9M |
| YoY % | +27.5% | -8.7% | +0.8% | +17.9% | +4.3% | |
| Total Operating Expenses | $13.4M | $17.5M | $16.4M | $15.6M | $17.6M | $17.7M |
| YoY % | +30.3% | -6.3% | -4.7% | +13.0% | +0.3% | |
| Operating Income | $5.5M | $701,000 | $4.2M | $13.4M | $13.7M | $14.0M |
| YoY % | -87.3% | +494.4% | +222.2% | +2.0% | +2.4% | |
| Other Non-Operating Income | -$16,000 | $0 | -$156,000 | $0 | -$13,000 | $8,000 |
| Gains on Sale of Real Estate | — | — | — | -$157,000 | -$12,000 | $0 |
| Impairment of Real Estate | $0 | $0 | $0 | $0 | $0 | $0 |
| Pretax Income | $6.7M | $6.6M | -$1.7M | $18.8M | $20.7M | $20.2M |
| YoY % | -0.7% | +10.4% | -2.6% | |||
| Income Tax | $1.1M | $829,000 | -$1.3M | $4.1M | $6.2M | $4.5M |
| YoY % | -27.9% | +50.2% | -26.5% | |||
| Net Income (incl. NCI) | $5.5M | -$5.8M | -$372,000 | $14.7M | $14.6M | $15.7M |
| YoY % | -0.7% | +7.6% | ||||
| Net Income | $5.5M | $5.8M | -$372,000 | $14.7M | $14.6M | $15.7M |
| YoY % | +5.0% | -0.7% | +7.6% | |||
| EPS (Basic) | $0.38 | $0.40 | -$0.03 | $1.00 | $0.99 | $1.07 |
| YoY % | +5.3% | -1.0% | +8.1% | |||
| EPS (Diluted) | $0.38 | $0.39 | -$0.03 | $1.00 | $0.99 | $1.07 |
| YoY % | +2.6% | -1.0% | +8.1% | |||
| Weighted Avg Shares (Basic) | 14.6M | 14.6M | 14.7M | 14.7M | — | — |
| YoY % | +0.1% | +0.3% | 0.0% | |||
| Weighted Avg Shares (Diluted) | 14.7M | 14.7M | 14.7M | 14.7M | — | — |
| YoY % | +0.1% | -0.5% | 0.0% |
The sector classification is SIC-derived, not official GICS. Statement lines are XBRL facts as filed with the company's home regulator (SEC EDGAR for US filers; ESEF/EDINET and other national regulators for foreign filers); ratios and other derived figures are computed from them. A blank cell means the tag was absent — never imputed.