Closing prices at the end of each trading day, from 12 Oct 2016. Not a live quote. Adjusted for share splits, so the line has no step at a split; dividends are not added back. P/E and P/FCF are the market value over the last full fiscal year's net income or free cash flow, as public on each day, so they step once a year when the annual report comes out. A hatched band marks a stretch with none: a year of net loss, or of cash burnt.
| FY2016 | FY2017 | FY2018 | FY2019 | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | |
|---|---|---|---|---|---|---|---|---|---|---|
| Revenue | 840.6 | 920.4 | 940.7 | 942.3 | 880.8 | 955.2 | 1,054.3 | 1,069.3 | 1,144.5 | 1,240.3 |
| Growth | +9.5% | +2.2% | +0.2% | −6.5% | +8.4% | +10.4% | +1.4% | +7.0% | +8.4% | |
| Operating income | 28.9 | 29.9 | 37.0 | 50.5 | 36.1 | 43.9 | 59.0 | 60.7 | 59.8 | 62.2 |
| Net income | 18.8 | 25.2 | 38.1 | 48.3 | 33.8 | 38.1 | 47.3 | 50.6 | 53.0 | 54.4 |
| Growth | +33.9% | +51.2% | +26.9% | −30.1% | +12.8% | +24.1% | +7.1% | +4.7% | +2.7% | |
| EPS, diluted | 2.55 | 3.33 | 4.98 | 6.27 | 4.39 | 5.00 | 1.64 | 1.85 | 1.98 | 2.08 |
| FY2016 | FY2017 | FY2018 | FY2019 | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | |
|---|---|---|---|---|---|---|---|---|---|---|
| Gross margin | 17.3% | 17.2% | 19.8% | 22.1% | 20.8% | 21.4% | 22.3% | 22.7% | 22.1% | 21.0% |
| Operating margin | 3.4% | 3.3% | 3.9% | 5.4% | 4.1% | 4.6% | 5.6% | 5.7% | 5.2% | 5.0% |
| Net margin | 2.2% | 2.7% | 4.0% | 5.1% | 3.8% | 4.0% | 4.5% | 4.7% | 4.6% | 4.4% |
| Free cash flow margin | 8.7% | 11.9% | 6.8% | 7.0% | −4.1% | −2.3% | 1.1% | 5.2% | −0.4% | 3.8% |
| FY2016 | FY2017 | FY2018 | FY2019 | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | |
|---|---|---|---|---|---|---|---|---|---|---|
| Operating cash flow | 80.3 | 112.9 | 69.8 | 77.1 | −27.9 | −15.5 | 27.8 | 67.2 | 10.1 | 66.0 |
| Capital expenditure | −7.1 | −3.7 | −5.7 | −10.8 | −8.6 | −6.8 | −16.0 | −11.8 | −14.2 | −18.8 |
| Free cash flow | 73.2 | 109.2 | 64.1 | 66.3 | −36.5 | −22.3 | 11.8 | 55.4 | −4.1 | 47.2 |
| Growth | +49.1% | −41.3% | +3.5% | −155.1% | +369.3% | −107.4% | ||||
| Buybacks | n/a | n/a | n/a | n/a | −8.1 | −17.3 | −47.2 | −34.2 | −29.1 | −42.0 |
| Dividends paid | −6.4 | −7.3 | −7.3 | −8.2 | −9.1 | −9.1 | −8.5 | −8.1 | −8.1 | −8.2 |
| FY2016 | FY2017 | FY2018 | FY2019 | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | |
|---|---|---|---|---|---|---|---|---|---|---|
| Cash | 50.8 | 59.8 | 35.4 | 44.6 | 68.7 | 69.4 | 91.4 | 71.2 | 55.4 | 95.0 |
| Total debt | 4.4 | 4.2 | 4.0 | 3.7 | 3.5 | n/a | n/a | n/a | n/a | n/a |
| Net cash (debt) | 46.4 | 55.7 | 31.4 | 40.8 | 65.2 | n/a | n/a | n/a | n/a | n/a |
| Shareholders’ equity | 69.7 | 88.8 | 119.0 | 171.8 | 198.2 | 208.5 | 177.8 | 199.1 | 221.4 | 241.0 |
| Debt to equity | 0.06 | 0.05 | 0.03 | 0.02 | 0.02 | n/a | n/a | n/a | n/a | n/a |
In millions of USD, except per-share figures and ratios. Fiscal years, as last filed with the SEC.
| Fiscal year | FY2016 31 Dec 2016 | FY2017 31 Dec 2017 | FY2018 31 Dec 2018 | FY2019 31 Dec 2019 | FY2020 31 Dec 2020 | FY2021 31 Dec 2021 | FY2022† 31 Dec 2022 | FY2023 31 Dec 2023 | FY2024 31 Dec 2024 | FY2025 31 Dec 2025 |
|---|---|---|---|---|---|---|---|---|---|---|
| Revenue and profit | ||||||||||
| 840.6 | 920.4 | 940.7 | 942.3 | 880.8 | 955.2 | 1,054.3 | 1,069.3 | 1,144.5 | 1,240.3 | |
| Growth | +9.5% | +2.2% | +0.2% | −6.5% | +8.4% | +10.4% | +1.4% | +7.0% | +8.4% | |
| 695.1 | 761.9 | 754.0 | 734.1 | 697.9 | 750.7 | 819.5 | 826.8 | 891.3 | 979.4 | |
| 145.5 | 158.5 | 186.7 | 208.3 | 182.9 | 204.5 | 234.8 | 242.5 | 253.3 | 260.9 | |
| Growth | +8.9% | +17.8% | +11.6% | −12.2% | +11.8% | +14.8% | +3.3% | +4.4% | +3.0% | |
| 113.3 | 123.1 | 145.5 | 153.9 | 141.9 | 155.3 | 169.6 | 174.8 | 185.9 | 190.5 | |
| 28.9 | 29.9 | 37.0 | 50.5 | 36.1 | 43.9 | 59.0 | 60.7 | 59.8 | 62.2 | |
| Growth | +3.5% | +23.5% | +36.5% | −28.4% | +21.5% | +34.3% | +2.8% | −1.4% | +4.0% | |
| 25.6 | 34.4 | 44.8 | 61.1 | 42.6 | 50.7 | 65.3 | 69.0 | 70.8 | 71.4 | |
| 6.8 | 9.2 | 6.7 | 12.8 | 8.8 | 12.6 | 18.0 | 18.4 | 17.8 | 17.0 | |
| 18.8 | 25.2 | 38.1 | 48.3 | 33.8 | 38.1 | 47.3 | 50.6 | 53.0 | 54.4 | |
| Growth | +33.9% | +51.2% | +26.9% | −30.1% | +12.8% | +24.1% | +7.1% | +4.7% | +2.7% | |
| Per share | ||||||||||
| 2.60 | 3.46 | 5.18 | 6.48 | 4.46 | 5.05 | 1.66 | 1.88 | 2.03 | 2.13 | |
| 2.55 | 3.33 | 4.98 | 6.27 | 4.39 | 5.00 | 1.64 | 1.85 | 1.98 | 2.08 | |
| Growth | +30.6% | +49.5% | +25.9% | −30.0% | +13.9% | −67.2% | +12.8% | +7.0% | +5.1% | |
| 7.2 | 7.3 | 7.3 | 7.5 | 7.6 | 7.5 | 28.5 | 26.9 | 26.1 | 25.6 | |
| 7.4 | 7.6 | 7.6 | 7.7 | 7.7 | 7.6 | 28.9 | 27.4 | 26.7 | 26.1 | |
| Growth | +2.3% | +1.3% | +0.7% | −0.1% | −0.9% | +279.3% | −5.2% | −2.5% | −2.1% | |
† The diluted share count jumps at 2022, so per-share figures either side of that column are not comparable. Usually a split, but the break lands on the restatement boundary rather than on the split date, because every column is that period’s latest filing.