| Market Cap | $1.70B | |
| Enterprise Value | — | |
| Revenue | $546.3M | +6.4% |
| Gross Profit | $245.0M | +6.2% |
| EBITDA | $63.6M | +5.8% |
| Net Income | $25.8M | +28.0% |
| Diluted EPS | $0.88 | +33.3% |
| Free Cash Flow | $56.5M | −13.1% |
| Ratio | 2014 | 2015 | 2016 | 2017 | 2018 | 2019 | 2020 | 2021 | 2022 | 2023 | 2024 | 2025 | Trend · 12y | vs own | vs sector |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| ▾Margins | |||||||||||||||
| Gross Margin | — | — | 56.01% | 56.27% | 53.56% | 51.29% | 50.14% | 45.62% | 44.12% | 44.06% | 44.56% | 44.48% | 25% | 77% | |
| Operating Margin | 28.88% | 25.43% | 20.72% | 20.97% | 19.95% | 17.41% | 13.77% | 8.27% | −20.06% | 5.59% | 3.98% | 4.71% | 21% | 41% | |
| EBITDA Margin | 34.19% | 30.77% | 26.59% | 26.33% | 25.95% | 24.14% | 21.28% | 16.56% | −11.99% | 13.04% | 11.12% | 11.05% | 13% | 50% | |
| NOPAT Margin | 19.86% | 17.43% | 13.78% | 14.58% | 16.67% | 13.65% | 11.13% | 6.86% | −15.85% | 3.44% | 2.67% | 3.22% | 21% | 38% | |
| Net Margin | 19.87% | 17.61% | 14.33% | 15.03% | 17.19% | 13.88% | 11.71% | 6.84% | −21.18% | 3.42% | 3.31% | 3.98% | 29% | 50% | |
| FCF Margin | — | 7.47% | 14.72% | 14.26% | 8.04% | 11.73% | 13.80% | 4.31% | 8.27% | 8.96% | 13.71% | 11.19% | 50% | 73% | |
| FCFE Margin | — | 7.41% | — | 14.26% | 6.92% | 11.73% | 13.80% | — | — | — | — | — | — | — | |
| OCF Margin | — | 24.27% | 26.00% | 23.73% | 27.59% | 25.30% | 24.62% | 11.32% | 12.71% | 14.54% | 15.54% | 13.97% | 23% | 66% | |
| Gross Profitability | 44.73% | 42.77% | 40.30% | 37.37% | 38.56% | 34.93% | 29.27% | 23.98% | 26.86% | 28.74% | 30.02% | 31.06% | 46% | 71% | |
| Capex Intensity | 20.76% | 16.80% | 11.28% | 9.47% | 19.55% | 13.57% | 10.82% | 7.01% | 4.44% | 5.58% | 1.83% | 2.78% | 13% | 56% | |
| ▸Returns on Capital · 3 ratios | |||||||||||||||
| ▸DuPont factors (ROE drivers) · 4 ratios | |||||||||||||||
| ▸Earnings quality · 6 ratios | |||||||||||||||
| ▸Liquidity & coverage · 3 ratios | |||||||||||||||
| ▸Leverage · 9 ratios | |||||||||||||||
| ▸Working capital · 8 ratios | |||||||||||||||
| ▸Capital allocation · 2 ratios | |||||||||||||||
| ▸Per share · 6 ratios | |||||||||||||||
| ▸Other · 1 ratios | |||||||||||||||
The five drivers multiply to 3.2% vs reported ROE 3.2%. High ROE from margin and turnover is earned; from the equity multiplier it is borrowed.
| Line | 2014↗ | 2015↗ | 2016↗ | 2017↗ | 2018↗ | 2019↗ | 2020↗ | 2021↗ | 2022↗ | 2023↗ | 2024↗ | 2025↗ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue | $209.6M | $264.1M | $298.1M | $344.5M | $445.6M | $458.7M | $434.4M | $488.1M | $488.4M | $503.9M | $500.9M | $533.1M |
| YoY % | +26.0% | +12.9% | +15.6% | +29.3% | +2.9% | -5.3% | +12.4% | +0.1% | +3.2% | -0.6% | +6.4% | |
| Cost of Revenue | — | — | $131.1M | $150.6M | $206.9M | $223.4M | $216.6M | $265.4M | $272.9M | $281.9M | $277.7M | $296.0M |
| YoY % | +14.9% | +37.4% | +8.0% | -3.1% | +22.6% | +2.8% | +3.3% | -1.5% | +6.6% | |||
| Gross Profit | $128.4M | $154.4M | $166.9M | $193.8M | $238.7M | $235.3M | $217.8M | $222.7M | $215.5M | $222.0M | $223.2M | $237.1M |
| YoY % | +20.3% | +8.1% | +16.1% | +23.1% | -1.4% | -7.4% | +2.2% | -3.2% | +3.0% | +0.5% | +6.2% | |
| R&D Expense | $16.6M | $18.4M | $22.4M | $23.6M | $28.7M | $32.7M | $36.9M | $44.2M | $38.2M | $40.1M | $41.3M | $42.8M |
| YoY % | +10.5% | +22.0% | +5.2% | +22.0% | +13.8% | +13.0% | +19.8% | -13.6% | +5.0% | +2.9% | +3.7% | |
| Selling & Marketing Expense | $29.1M | $39.2M | $46.1M | $56.9M | $68.5M | $73.0M | $69.3M | $82.2M | $82.8M | $87.7M | $92.1M | $98.3M |
| YoY % | +34.5% | +17.7% | +23.2% | +20.5% | +6.5% | -5.0% | +18.6% | +0.7% | +6.0% | +5.0% | +6.8% | |
| SG&A Expense | $22.1M | $29.7M | $36.7M | $41.2M | $52.5M | $49.8M | $51.7M | $55.9M | $67.5M | $65.8M | $64.3M | $69.8M |
| YoY % | +34.3% | +23.3% | +12.4% | +27.5% | -5.2% | +4.0% | +8.1% | +20.8% | -2.6% | -2.2% | +8.5% | |
| Total Operating Expenses | $67.9M | $87.3M | $105.2M | $121.6M | $149.8M | $155.4M | $158.0M | $182.3M | $313.4M | $193.8M | $203.3M | $212.0M |
| YoY % | +28.6% | +20.5% | +15.6% | +23.2% | +3.8% | +1.6% | +15.4% | +71.9% | -38.2% | +4.9% | +4.3% | |
| Operating Income | $60.5M | $67.1M | $61.8M | $72.2M | $88.9M | $79.9M | $59.8M | $40.3M | -$98.0M | $28.2M | $19.9M | $25.1M |
| YoY % | +10.9% | -8.0% | +16.9% | +23.1% | -10.2% | -25.1% | -32.6% | -29.3% | +26.1% | |||
| Other Non-Operating Income | $3,000 | $712,000 | $2.5M | $2.2M | $2.8M | $1.3M | $3.1M | -$158,000 | $106,000 | -$215,000 | $4.8M | $6.0M |
| YoY % | +23633.3% | +244.7% | -10.0% | +24.8% | -51.5% | +132.5% | +25.0% | |||||
| Impairment of Real Estate | — | — | — | — | — | — | — | — | $0 | $0 | $256,000 | $0 |
| YoY % | -100.0% | |||||||||||
| Pretax Income | $60.5M | $67.9M | $64.2M | $74.4M | $91.7M | $81.2M | $62.9M | $40.2M | -$97.9M | $28.0M | $24.7M | $31.1M |
| YoY % | +12.1% | -5.4% | +15.9% | +23.1% | -11.4% | -22.5% | -36.2% | -11.7% | +25.9% | |||
| Income Tax | $18.9M | $21.3M | $21.5M | $22.7M | $15.1M | $17.5M | $12.1M | $6.8M | $5.6M | $10.7M | $8.1M | $9.8M |
| YoY % | +13.0% | +0.8% | +5.3% | -33.5% | +16.4% | -31.1% | -43.6% | -18.0% | +92.2% | -24.7% | +21.6% | |
| Net Income | $41.6M | $46.5M | $42.7M | $51.8M | $76.6M | $63.7M | $50.9M | $33.4M | -$103.5M | $17.2M | $16.6M | $21.2M |
| YoY % | +11.7% | -8.2% | +21.2% | +47.9% | -16.9% | -20.1% | -34.4% | -3.6% | +28.0% | |||
| EPS (Basic) | $1.62 | $1.79 | $1.62 | $1.94 | $2.84 | $2.37 | $1.90 | $1.21 | -$3.77 | $0.66 | $0.66 | $0.89 |
| YoY % | +10.5% | -9.5% | +19.8% | +46.4% | -16.5% | -19.8% | -36.3% | 0.0% | +34.8% | |||
| EPS (Diluted) | $1.60 | $1.77 | $1.61 | $1.93 | $2.81 | $2.35 | $1.89 | $1.21 | -$3.77 | $0.66 | $0.66 | $0.88 |
| YoY % | +10.6% | -9.0% | +19.9% | +45.6% | -16.4% | -19.6% | -36.0% | 0.0% | +33.3% | |||
| Weighted Avg Shares (Basic) | 25.7M | 26.0M | 26.4M | 26.6M | 27.0M | 26.9M | 26.7M | 27.6M | 27.4M | 26.2M | 25.1M | 23.9M |
| YoY % | +1.2% | +1.4% | +1.1% | +1.3% | -0.4% | -0.5% | +3.3% | -0.8% | -4.5% | -4.2% | -4.7% | |
| Weighted Avg Shares (Diluted) | 26.1M | 26.3M | 26.6M | 26.8M | 27.3M | 27.0M | 26.9M | 27.7M | 27.4M | 26.2M | 25.2M | 24.2M |
| YoY % | +0.8% | +0.9% | +1.1% | +1.6% | -0.8% | -0.6% | +2.8% | -0.9% | -4.3% | -3.9% | -3.8% |
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.