
| Line item | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 | FY2008 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Valuation | ||||||||||||||||||
| Market cap | $48,887 | $44,834 | $56,332 | $54,547 | $39,391 | $25,461 | $37,089 | $36,326 | $40,616 | $30,995 | $31,912 | $25,905 | $29,082 | $21,546 | $11,848 | – | – | – |
| Enterprise value | $86,345 | $76,940 | $80,709 | $77,090 | $61,866 | $65,194 | $74,679 | $71,037 | $57,346 | $47,326 | $49,148 | $31,652 | $30,598 | $20,458 | $12,076 | – | – | – |
| P/E (TTM) at period end | 12.09× | 13.03× | 5.82× | 3.76× | 4.05× | – | 14.07× | 13.07× | 11.84× | 26.42× | 11.21× | 10.28× | 13.80× | 6.37× | 4.97× | – | – | – |
| P/S (TTM) at period end | 0.37× | 0.32× | 0.38× | 0.31× | 0.33× | 0.36× | 0.33× | 0.42× | 0.54× | 0.49× | 0.44× | 0.26× | 0.29× | 0.26× | 0.15× | – | – | – |
| P/B at period end | 2.82× | 2.53× | 2.31× | 1.97× | 1.50× | 1.15× | 1.10× | 1.03× | 2.89× | 2.29× | 2.41× | 2.41× | 2.66× | 1.84× | 1.25× | – | – | – |
| EV / EBITDA (TTM) | 7.48× | 7.59× | 4.53× | 3.12× | 8.07× | – | 9.71× | 10.36× | 9.35× | 10.79× | 7.93× | 5.89× | 6.59× | 3.23× | 2.60× | – | – | – |
| EV / Sales (TTM) | 0.65× | 0.55× | 0.54× | 0.43× | 0.52× | 0.93× | 0.67× | 0.83× | 0.77× | 0.75× | 0.68× | 0.32× | 0.31× | 0.25× | 0.15× | – | – | – |
| Returns | ||||||||||||||||||
| Return on equity | 23.4% | 19.4% | 39.6% | 52.3% | 37.2% | (44.3%) | 7.8% | 7.9% | 24.4% | 8.7% | 21.5% | 23.4% | 19.3% | 28.9% | 25.1% | 7.6% | 4.9% | 13.6% |
| Return on invested capital | 12.7% | 11.6% | 21.6% | 31.4% | 7.2% | (16.2%) | 4.7% | 5.3% | 13.1% | 5.3% | 10.1% | 16.4% | 18.1% | 32.7% | 24.7% | 5.1% | 4.7% | 10.5% |
| Dividend yield | 2.3% | 2.6% | 2.2% | 2.3% | 3.8% | 5.9% | 3.8% | 2.6% | 1.9% | 2.3% | 1.9% | 2.0% | 1.7% | 1.9% | 1.4% | – | – | – |
| Financial health | ||||||||||||||||||
| Current ratio | 1.26× | 1.17× | 1.59× | 1.76× | 1.70× | 1.81× | 1.80× | 1.36× | 1.28× | 1.46× | 1.49× | 1.32× | 1.30× | 1.59× | 1.25× | 1.17× | 1.19× | 1.41× |
| Debt / equity | 1.90× | 1.55× | 1.12× | 0.96× | 0.97× | 1.42× | 0.85× | 0.78× | 0.92× | 0.78× | 0.90× | 0.61× | 0.31× | 0.29× | 0.35× | 0.03× | 0.28× | 0.28× |
| Effective tax rate | 16.2% | 14.9% | 20.1% | 21.9% | 9.4% | 17.9% | 24.2% | 20.7% | (13.8%) | 33.4% | 34.4% | 33.4% | 34.3% | 35.2% | 35.8% | 39.1% | 34.5% | 35.5% |
| Share count | ||||||||||||||||||
| Diluted shares outstanding | 306 | 341 | 409 | 516 | 638 | 649 | 664 | 526 | 512 | 530 | 542 | 574 | 634 | 684 | 714 | 716 | 716 | 716 |
| Line item | TTM | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 | FY2008 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue and gross profit | |||||||||||||||||||
| Revenue | $153,577 | $132,699 | $138,864 | $148,379 | $177,453 | $119,983 | $69,779 | $111,148 | $86,086 | $74,733 | $63,277 | $72,051 | $97,817 | $100,160 | $82,243 | $78,638 | $62,487 | $45,530 | $65,258 |
| Cost of revenue | ($134,386) | ($119,446) | ($126,240) | ($128,566) | ($151,671) | ($110,008) | ($65,733) | ($99,228) | ($77,047) | ($67,089) | ($56,676) | ($55,891) | ($84,275) | ($87,758) | ($68,948) | ($67,711) | ($55,265) | ($38,320) | ($56,527) |
| Gross profit | $19,191 | $13,253 | $12,624 | $19,813 | $25,782 | $9,975 | $4,046 | $11,920 | $9,039 | $7,644 | $6,601 | $16,160 | $13,542 | $12,402 | $13,295 | $10,927 | $7,222 | $7,319 | $8,731 |
| Operating expenses | |||||||||||||||||||
| Research and development | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – | – |
| Selling, general and administrative | ($3,460) | ($3,349) | ($3,221) | ($3,039) | ($2,772) | ($2,537) | ($2,710) | ($3,192) | ($2,276) | ($1,694) | ($1,597) | ($1,576) | ($1,375) | ($1,248) | ($1,223) | ($1,059) | ($874) | ($842) | ($961) |
| Total operating expenses | ($5,058) | ($4,962) | ($5,828) | ($5,299) | ($4,313) | ($5,675) | ($16,293) | ($7,458) | ($4,349) | ($3,626) | ($4,215) | ($11,468) | ($9,491) | ($8,977) | ($7,948) | ($7,182) | ($6,211) | ($6,483) | ($6,876) |
| Total costs and expenses | ($139,444) | ($124,408) | ($132,068) | ($133,865) | ($155,984) | ($115,683) | ($82,026) | ($106,686) | ($81,396) | ($70,715) | ($60,891) | ($67,359) | ($93,766) | ($96,735) | ($76,896) | ($74,893) | ($61,476) | ($44,694) | ($63,403) |
| Operating income | $14,133 | $8,291 | $6,796 | $14,514 | $21,469 | $4,300 | ($12,247) | $4,462 | $4,690 | $4,018 | $2,386 | $4,692 | $4,051 | $3,425 | $5,347 | $3,745 | $1,011 | $836 | $1,855 |
| Earnings | |||||||||||||||||||
| EBITDA | $17,449 | $11,542 | $10,133 | $17,821 | $24,684 | $7,664 | ($8,872) | $7,687 | $6,860 | $6,132 | $4,387 | $6,194 | $5,377 | $4,645 | $6,342 | $4,636 | $1,952 | $1,506 | $2,461 |
| Interest income | $176 | $159 | $376 | $530 | $191 | $14 | $9 | $40 | $87 | $27 | $6 | $6 | $7 | $9 | $6 | $3 | $2 | $3 | $6 |
| Interest expense | ($1,363) | ($1,276) | ($839) | ($525) | ($1,000) | ($1,483) | ($1,365) | ($1,229) | ($993) | ($674) | ($564) | ($318) | ($216) | ($195) | ($191) | ($164) | ($18) | ($15) | ($8) |
| Pre-tax income | $12,770 | $7,015 | $5,957 | $13,989 | $20,469 | $2,817 | ($13,612) | $3,233 | $3,697 | $3,344 | $1,822 | $4,374 | $3,835 | $3,246 | $5,238 | $3,719 | $1,023 | $685 | $1,885 |
| Income tax expense | ($2,459) | ($1,137) | ($890) | ($2,817) | ($4,491) | ($264) | $2,430 | ($784) | ($764) | $460 | ($609) | ($1,506) | ($1,280) | ($1,113) | ($1,845) | ($1,330) | ($400) | ($236) | ($670) |
| Net income | $8,554 | $4,047 | $3,445 | $9,681 | $14,516 | $9,738 | ($9,826) | $2,637 | $2,780 | $3,432 | $1,174 | $2,852 | $2,524 | $2,112 | $3,389 | $2,389 | $623 | $449 | $1,215 |
| Per share | |||||||||||||||||||
| Diluted EPS (GAAP) | $29.10 | $13.22 | $10.08 | $23.63 | $28.12 | $15.24 | ($15.13) | $3.97 | $5.28 | $6.70 | $2.21 | $5.26 | $4.39 | $3.32 | $4.95 | $3.33 | $0.87 | $0.625 | $1.71 |
| Basic EPS (GAAP) | $29.13 | $13.24 | $10.11 | $23.73 | $28.31 | $15.34 | ($15.13) | $4.00 | $5.36 | $6.76 | $2.22 | $5.29 | $4.42 | $3.34 | $4.97 | $3.35 | $0.875 | $0.63 | $1.71 |
| Basic shares outstanding | 296 | 305 | 340 | 407 | 512 | 634 | 649 | 659 | 518 | 507 | 528 | 538 | 570 | 630 | 680 | 712 | 712 | 712 | 712 |
| Margins | |||||||||||||||||||
| Gross margin | 12.5% | 10.0% | 9.1% | 13.4% | 14.5% | 8.3% | 5.8% | 10.7% | 10.5% | 10.2% | 10.4% | 22.4% | 13.8% | 12.4% | 16.2% | 13.9% | 11.6% | 16.1% | 13.4% |
| Operating margin | 9.2% | 6.2% | 4.9% | 9.8% | 12.1% | 3.6% | (17.6%) | 4.0% | 5.4% | 5.4% | 3.8% | 6.5% | 4.1% | 3.4% | 6.5% | 4.8% | 1.6% | 1.8% | 2.8% |
| Net margin | 5.6% | 3.0% | 2.5% | 6.5% | 8.2% | 8.1% | (14.1%) | 2.4% | 3.2% | 4.6% | 1.9% | 4.0% | 2.6% | 2.1% | 4.1% | 3.0% | 1.0% | 1.0% | 1.9% |