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 | 193.2 | 220.1 | 248.2 | 279.1 | 312.6 | 385.3 | 450.9 | 536.9 | 637.8 | 751.5 |
| Growth | +13.9% | +12.8% | +12.4% | +12.0% | +23.2% | +17.0% | +19.1% | +18.8% | +17.8% | |
| Operating income | 6.4 | 10.0 | 26.7 | 38.4 | 50.2 | 55.1 | 71.2 | 77.2 | 88.9 | 118.3 |
| Net income | 5.0 | 0.4 | 23.9 | 33.7 | 45.6 | 44.6 | 55.1 | 65.8 | 77.1 | 93.3 |
| Growth | −92.9% | +6,701.1% | +41.2% | +35.2% | −2.2% | +23.6% | +19.4% | +17.1% | +21.1% | |
| EPS, diluted | 0.29 | 0.01 | 0.68 | 0.94 | 1.26 | 1.21 | 1.49 | 1.76 | 2.04 | 2.46 |
| FY2016 | FY2017 | FY2018 | FY2019 | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | |
|---|---|---|---|---|---|---|---|---|---|---|
| Gross margin | 66.7% | 66.5% | 67.1% | 67.0% | 68.1% | 65.8% | 66.1% | 66.1% | 67.0% | 69.2% |
| Operating margin | 3.3% | 4.5% | 10.8% | 13.8% | 16.0% | 14.3% | 15.8% | 14.4% | 13.9% | 15.7% |
| Net margin | 2.6% | 0.2% | 9.6% | 12.1% | 14.6% | 11.6% | 12.2% | 12.3% | 12.1% | 12.4% |
| Free cash flow margin | 5.6% | 10.8% | 16.6% | 20.9% | 23.1% | 24.2% | 17.8% | 21.0% | 21.5% | 20.3% |
| FY2016 | FY2017 | FY2018 | FY2019 | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | |
|---|---|---|---|---|---|---|---|---|---|---|
| Operating cash flow | 18.8 | 31.1 | 55.0 | 71.8 | 88.6 | 112.9 | 100.1 | 132.3 | 157.4 | 178.8 |
| Capital expenditure | −8.0 | −7.3 | −13.8 | −13.6 | −16.5 | −19.6 | −19.9 | −19.8 | −20.0 | −26.5 |
| Free cash flow | 10.8 | 23.8 | 41.3 | 58.2 | 72.1 | 93.3 | 80.2 | 112.5 | 137.4 | 152.3 |
| Growth | +121.1% | +73.5% | +41.1% | +23.9% | +29.4% | −14.1% | +40.4% | +22.1% | +10.9% | |
| Buybacks | n/a | −5.8 | −19.9 | −20.6 | −19.0 | −20.4 | −43.2 | 0.0 | −37.6 | −114.3 |
| FY2016 | FY2017 | FY2018 | FY2019 | FY2020 | FY2021 | FY2022 | FY2023 | FY2024 | FY2025 | |
|---|---|---|---|---|---|---|---|---|---|---|
| Cash | 115.9 | 123.1 | 133.9 | 179.3 | 149.7 | 207.6 | 162.9 | 219.1 | 241.0 | 151.4 |
| Shareholders’ equity | 257.8 | 288.1 | 319.0 | 354.9 | 420.7 | 484.3 | 537.1 | 667.5 | 854.7 | 973.9 |
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 | ||||||||||
| 193.2 | 220.1 | 248.2 | 279.1 | 312.6 | 385.3 | 450.9 | 536.9 | 637.8 | 751.5 | |
| Growth | +13.9% | +12.8% | +12.4% | +12.0% | +23.2% | +17.0% | +19.1% | +18.8% | +17.8% | |
| 64.3 | 73.6 | 81.7 | 92.2 | 99.8 | 131.7 | 153.1 | 182.1 | 210.7 | 231.6 | |
| 128.8 | 146.5 | 166.5 | 186.9 | 212.8 | 253.6 | 297.8 | 354.8 | 427.1 | 519.9 | |
| Growth | +13.7% | +13.7% | +12.2% | +13.9% | +19.2% | +17.4% | +19.2% | +20.3% | +21.7% | |
| 22.0 | 23.2 | 22.1 | 28.3 | 31.0 | 39.0 | 45.7 | 53.7 | 62.8 | 68.7 | |
| 28.8 | 37.5 | 41.9 | 44.7 | 50.1 | 61.3 | 67.3 | 84.9 | 102.9 | 126.6 | |
| 6.4 | 10.0 | 26.7 | 38.4 | 50.2 | 55.1 | 71.2 | 77.2 | 88.9 | 118.3 | |
| Growth | +56.3% | +167.8% | +43.7% | +30.6% | +9.8% | +29.2% | +8.5% | +15.1% | +33.1% | |
| 7.7 | 10.7 | 28.3 | 42.1 | 52.7 | 53.5 | 71.3 | 85.6 | 99.5 | 123.8 | |
| 2.8 | 10.3 | 4.5 | 8.4 | 7.1 | 8.9 | 16.2 | 19.7 | 22.4 | 30.5 | |
| 5.0 | 0.4 | 23.9 | 33.7 | 45.6 | 44.6 | 55.1 | 65.8 | 77.1 | 93.3 | |
| Growth | −92.9% | +6,701.1% | +41.2% | +35.2% | −2.2% | +23.6% | +19.4% | +17.1% | +21.1% | |
| Per share | ||||||||||
| 0.29 | 0.01 | 0.69 | 0.96 | 1.29 | 1.24 | 1.53 | 1.80 | 2.07 | 2.46 | |
| 0.29 | 0.01 | 0.68 | 0.94 | 1.26 | 1.21 | 1.49 | 1.76 | 2.04 | 2.46 | |
| Growth | −96.6% | +6,700.0% | +38.2% | +34.0% | −4.0% | +23.1% | +18.1% | +15.9% | +20.6% | |
| 16.9 | 34.4 | 34.4 | 35.0 | 35.2 | 35.9 | 36.1 | 36.6 | 37.3 | 37.9 | |
| 17.2 | 34.7 | 35.2 | 36.0 | 36.3 | 37.0 | 37.0 | 37.5 | 37.9 | 38.0 | |
| Growth | +101.3% | +1.4% | +2.2% | +0.8% | +1.9% | −0.0% | +1.4% | +1.0% | +0.4% | |
† The diluted share count jumps at 2017, 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.