
| Line item | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Valuation | |||||||||||||||||
| Market cap | $51,993 | $47,052 | $58,576 | $49,192 | $31,752 | $30,648 | $48,820 | $37,751 | $44,324 | $37,865 | $35,845 | $40,575 | $47,274 | $33,391 | – | – | – |
| Enterprise value | $74,907 | $66,431 | $75,679 | $64,861 | $45,814 | $46,830 | $61,505 | $48,392 | $53,658 | $46,627 | $42,496 | $44,499 | $48,471 | $36,922 | – | – | – |
| P/E (TTM) at period end | 11.83× | 22.33× | 8.36× | 4.47× | 24.31× | – | 15.90× | 6.75× | 8.69× | 24.44× | 8.49× | 8.53× | 12.70× | 8.10× | – | – | – |
| P/S (TTM) at period end | 0.39× | 0.33× | 0.40× | 0.29× | 0.28× | 0.48× | 0.46× | 0.34× | 0.43× | 0.45× | 0.36× | 0.25× | 0.28× | 0.19× | – | – | – |
| P/B at period end | 1.79× | 1.72× | 1.92× | 1.67× | 1.66× | 1.61× | 1.96× | 1.53× | 1.77× | 1.69× | 1.55× | 1.88× | 2.15× | 1.61× | – | – | – |
| EV / EBITDA (TTM) | 11.06× | 14.17× | 7.39× | 5.54× | 16.19× | – | 13.47× | 7.56× | 16.10× | 17.26× | 8.12× | 12.69× | 14.21× | 6.82× | – | – | – |
| EV / Sales (TTM) | 0.57× | 0.46× | 0.51× | 0.38× | 0.41× | 0.73× | 0.57× | 0.43× | 0.52× | 0.55× | 0.43× | 0.28× | 0.28× | 0.21× | – | – | – |
| Returns | |||||||||||||||||
| Return on equity | 15.1% | 7.7% | 22.9% | 37.3% | 6.8% | (21.0%) | 12.3% | 22.7% | 20.3% | 6.9% | 18.3% | 22.0% | 17.0% | 19.8% | 20.5% | 2.8% | 1.8% |
| Return on invested capital | 5.7% | 4.0% | 13.3% | 17.4% | 3.4% | (3.9%) | 6.9% | 11.3% | 5.9% | 3.7% | 9.9% | 7.0% | 7.1% | 11.6% | 5.6% | 2.4% | (0.8%) |
| Dividend yield | 3.7% | 4.0% | 3.2% | 3.6% | 5.0% | 5.1% | 3.2% | 3.8% | 3.1% | 3.4% | 3.3% | 2.6% | 1.7% | 0.8% | – | – | – |
| Financial health | |||||||||||||||||
| Current ratio | 1.30× | 1.19× | 1.26× | 1.38× | 1.15× | 1.39× | 1.24× | 1.48× | 1.42× | 1.34× | 1.63× | 1.50× | 1.49× | 1.44× | 1.13× | 1.18× | 1.22× |
| Debt / equity | 0.68× | 0.73× | 0.63× | 0.58× | 0.75× | 0.84× | 0.47× | 0.45× | 0.40× | 0.45× | 0.38× | 0.40× | 0.28× | 0.34× | 0.02× | 0.02× | 0.02× |
| Effective tax rate | 16.5% | 18.7% | 23.6% | 22.2% | 8.4% | 25.2% | 19.2% | 21.1% | (47.6%) | 25.0% | 29.2% | 28.8% | 33.4% | 37.7% | 27.8% | 43.9% | 43.4% |
| Share count | |||||||||||||||||
| Diluted shares outstanding | 408 | 422 | 453 | 474 | 440 | 440 | 454 | 474 | 519 | 530 | 547 | 572 | 619 | 637 | 635 | 635 | 640 |
| Line item | TTM | FY2025 | FY2024 | FY2023 | FY2022 | FY2021 | FY2020 | FY2019 | FY2018 | FY2017 | FY2016 | FY2015 | FY2014 | FY2013 | FY2012 | FY2011 | FY2010 | FY2009 |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Revenue and gross profit | ||||||||||||||||||
| Revenue | $152,167 | $132,376 | $143,153 | $147,399 | $169,990 | $111,476 | $64,129 | $107,293 | $111,461 | $102,354 | $84,279 | $98,975 | $161,212 | $171,596 | $179,290 | $195,931 | $146,561 | $112,692 |
| Cost of revenue | ($132,236) | ($116,093) | ($129,962) | ($128,086) | ($149,932) | ($102,102) | ($57,707) | ($95,529) | ($97,930) | ($79,409) | ($62,468) | ($73,399) | ($135,748) | ($148,245) | ($154,413) | ($177,979) | ($130,312) | ($98,132) |
| Gross profit | $19,931 | $16,283 | $13,191 | $19,313 | $20,058 | $9,374 | $6,422 | $11,764 | $13,531 | $22,945 | $21,811 | $27,432 | $28,225 | $26,479 | $28,339 | $18,717 | $16,506 | $14,560 |
| Operating expenses | ||||||||||||||||||
| Research and development | – | ($6) | ($15) | ($27) | ($42) | ($47) | ($48) | ($54) | ($55) | ($60) | ($60) | ($65) | ($62) | ($69) | ($70) | ($69) | ($56) | ($36) |
| Selling, general and administrative | ($2,411) | ($2,437) | ($2,814) | ($2,525) | ($2,168) | ($1,744) | ($1,544) | ($1,681) | ($1,677) | ($1,695) | ($1,638) | ($1,670) | ($1,663) | ($1,478) | ($1,703) | ($1,394) | ($1,384) | ($1,278) |
| Total operating expenses | ($9,686) | ($12,763) | ($10,866) | ($11,045) | ($9,985) | ($8,149) | ($8,250) | ($8,539) | ($8,489) | ($20,931) | ($20,277) | ($23,279) | ($25,712) | ($24,014) | ($23,830) | ($16,884) | ($15,391) | ($14,958) |
| Total costs and expenses | ($141,922) | ($128,856) | ($140,828) | ($139,131) | ($159,917) | ($110,251) | ($65,957) | ($104,068) | ($106,419) | ($100,340) | ($82,745) | ($94,822) | ($158,699) | ($169,131) | ($174,781) | ($194,098) | ($145,446) | ($113,090) |
| Operating income | $10,245 | $3,520 | $2,325 | $8,268 | $10,073 | $1,225 | ($1,828) | $3,225 | $5,042 | $2,014 | $1,534 | $4,153 | $2,513 | $2,465 | $4,509 | $1,833 | $1,115 | ($398) |
| Earnings | ||||||||||||||||||
| EBITDA | $13,032 | $6,771 | $4,688 | $10,245 | $11,702 | $2,830 | ($433) | $4,566 | $6,398 | $3,332 | $2,702 | $5,231 | $3,508 | $3,412 | $5,415 | $2,735 | $1,995 | $481 |
| Interest income | $185 | $141 | $158 | $269 | $82 | $11 | $14 | $43 | $45 | $31 | $18 | $27 | $21 | $20 | $18 | $33 | $42 | $47 |
| Interest expense | ($1,154) | ($1,039) | ($907) | ($897) | ($619) | ($581) | ($499) | ($458) | ($504) | ($438) | ($338) | ($310) | ($267) | ($275) | ($246) | ($17) | ($1) | ($1) |
| Pre-tax income | $8,883 | $5,420 | $2,675 | $9,469 | $14,639 | $1,740 | ($4,964) | $4,178 | $7,445 | $3,555 | $2,191 | $6,044 | $5,745 | $5,526 | $6,556 | $6,559 | $1,319 | $847 |
| Income tax expense | ($1,691) | ($892) | ($500) | ($2,230) | ($3,248) | ($146) | $1,250 | ($801) | ($1,572) | $1,693 | ($547) | ($1,764) | ($1,654) | ($1,844) | ($2,473) | ($1,822) | ($579) | ($368) |
| Net income | $7,093 | $4,403 | $2,117 | $7,015 | $11,024 | $1,317 | ($3,975) | $3,076 | $5,595 | $5,106 | $1,555 | $4,227 | $4,762 | $3,726 | $4,124 | $4,775 | $735 | $476 |
| Per share | ||||||||||||||||||
| Diluted EPS (GAAP) | $17.55 | $10.79 | $4.99 | $15.48 | $23.27 | $2.97 | ($9.06) | $6.77 | $11.80 | $9.85 | $2.92 | $7.73 | $8.33 | $6.02 | $6.48 | $7.52 | $1.16 | $0.74 |
| Basic EPS (GAAP) | $17.63 | $10.82 | $5.01 | $15.56 | $23.36 | $2.97 | ($9.06) | $6.80 | $11.87 | $9.90 | $2.94 | $7.78 | $8.40 | $6.07 | $6.55 | $7.61 | $1.17 | $0.74 |
| Basic shares outstanding | 403 | 406 | 420 | 450 | 471 | 440 | 440 | 451 | 471 | 515 | 528 | 542 | 566 | 613 | 629 | 628 | 628 | 640 |
| Margins | ||||||||||||||||||
| Gross margin | 13.1% | 12.3% | 9.2% | 13.1% | 11.8% | 8.4% | 10.0% | 11.0% | 12.1% | 22.4% | 25.9% | 27.7% | 17.5% | 15.4% | 15.8% | 9.6% | 11.3% | 12.9% |
| Operating margin | 6.7% | 2.7% | 1.6% | 5.6% | 5.9% | 1.1% | (2.9%) | 3.0% | 4.5% | 2.0% | 1.8% | 4.2% | 1.6% | 1.4% | 2.5% | 0.9% | 0.8% | (0.4%) |
| Net margin | 4.7% | 3.3% | 1.5% | 4.8% | 6.5% | 1.2% | (6.2%) | 2.9% | 5.0% | 5.0% | 1.8% | 4.3% | 3.0% | 2.2% | 2.3% | 2.4% | 0.5% | 0.4% |