Most Predictable ATP Players
Every match, our model publishes a win probability — and prices its own uncertainty. This board compares each player's actual results with that script: straight-sets players land where the model expected, wild cards keep tearing the script up. A season-level read with sample sizes and confidence intervals, never a career label.
Script vs chaos — the two ends of 2026
Bars show extra upsets: how many more (or fewer) times the model's favorite fell in this player's matches than the model itself expected. Verdicts in the table are assigned only when the difference is statistically meaningful for that sample. Everyone else stays "On serve". How to read this →
Full board · 76 players with ≥20 matches (1688 matches, source: as-published daily record)
| # | Player | Verdict | Upsets | Expected | Extra | Model hit | Confidence | W–L | M |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Alexander Zverev | Straight sets | 4 | 13.0 | -9.0 ±6.0 | 92.3% | 75.1% | 42–10 | 52 |
| 2 | Carlos Alcaraz | Straight sets | 2 | 6.2 | -4.2 ±4.1 | 92.0% | 75.2% | 22–3 | 25 |
| 3 | Alejandro Tabilo | Straight sets | 9 | 14.2 | -5.2 ±5.6 | 74.3% | 59.4% | 18–17 | 35 |
| 4 | Jannik Sinner | Straight sets | 3 | 6.5 | -3.5 ±4.5 | 93.6% | 86.1% | 44–3 | 47 |
| 5 | Damir Dzumhur | Straight sets | 7 | 10.9 | -3.9 ±5.0 | 75.0% | 61.2% | 11–17 | 28 |
| 6 | Stefanos Tsitsipas | On serve | 8 | 12.0 | -4.0 ±5.3 | 75.0% | 62.4% | 17–15 | 32 |
| 7 | Casper Ruud | On serve | 9 | 13.2 | -4.2 ±5.6 | 75.0% | 63.4% | 23–13 | 36 |
| 8 | Rafael Jodar | On serve | 10 | 13.5 | -3.5 ±5.6 | 73.0% | 63.6% | 26–11 | 37 |
| 9 | Andrey Rublev | On serve | 10 | 13.4 | -3.4 ±5.7 | 73.7% | 64.7% | 25–13 | 38 |
| 10 | Nuno Borges | On serve | 11 | 14.2 | -3.2 ±5.7 | 70.3% | 61.8% | 19–18 | 37 |
| 11 | Valentin Vacherot | On serve | 7 | 9.4 | -2.4 ±4.6 | 70.8% | 60.8% | 14–10 | 24 |
| 12 | Felix Auger-Aliassime | On serve | 11 | 14.0 | -3.0 ±5.9 | 73.8% | 66.6% | 29–13 | 42 |
| 13 | Taylor Fritz | On serve | 8 | 10.5 | -2.5 ±5.1 | 75.0% | 67.1% | 22–10 | 32 |
| 14 | Tomas Martin Etcheverry | On serve | 12 | 14.8 | -2.8 ±5.8 | 68.4% | 61.0% | 21–17 | 38 |
| 15 | Vit Kopriva | On serve | 10 | 12.6 | -2.6 ±5.4 | 69.7% | 61.7% | 17–16 | 33 |
| 16 | Marcos Giron | On serve | 8 | 10.1 | -2.1 ±4.8 | 69.2% | 61.0% | 11–15 | 26 |
| 17 | Tommy Paul | On serve | 12 | 14.6 | -2.6 ±6.0 | 72.7% | 66.9% | 31–13 | 44 |
| 18 | Luciano Darderi | On serve | 13 | 15.4 | -2.4 ±6.0 | 67.5% | 61.4% | 25–15 | 40 |
| 19 | Frances Tiafoe | On serve | 14 | 16.3 | -2.3 ±6.2 | 68.2% | 63.0% | 31–13 | 44 |
| 20 | Alex Michelsen | On serve | 10 | 11.5 | -1.5 ±5.2 | 68.8% | 64.1% | 18–14 | 32 |
| 21 | Arthur Fils | On serve | 10 | 11.4 | -1.4 ±5.2 | 67.7% | 63.1% | 23–8 | 31 |
| 22 | Ugo Humbert | On serve | 15 | 16.7 | -1.7 ±6.2 | 65.1% | 61.2% | 25–18 | 43 |
| 23 | Hamad Medjedovic | On serve | 7 | 8.2 | -1.2 ±4.3 | 66.7% | 61.0% | 11–10 | 21 |
| 24 | Giovanni Mpetshi Perricard | On serve | 8 | 9.2 | -1.2 ±4.6 | 65.2% | 60.0% | 8–15 | 23 |
| 25 | Tomas Machac | On serve | 8 | 9.1 | -1.1 ±4.5 | 66.7% | 62.2% | 14–10 | 24 |
| 26 | Lorenzo Musetti | On serve | 6 | 7.0 | -1.0 ±4.1 | 70.0% | 65.2% | 13–7 | 20 |
| 27 | Ignacio Buse | On serve | 10 | 11.1 | -1.1 ±5.1 | 65.5% | 61.8% | 16–13 | 29 |
| 28 | Yannick Hanfmann | On serve | 10 | 11.1 | -1.1 ±5.1 | 67.7% | 64.3% | 17–14 | 31 |
| 29 | Adrian Mannarino | On serve | 9 | 10.0 | -1.0 ±4.9 | 70.0% | 66.8% | 11–19 | 30 |
| 30 | Francisco Cerundolo | On serve | 12 | 13.0 | -1.0 ±5.7 | 70.0% | 67.4% | 27–13 | 40 |
| 31 | Mariano Navone | On serve | 12 | 12.8 | -0.8 ±5.4 | 63.6% | 61.2% | 17–16 | 33 |
| 32 | Alejandro Davidovich Fokina | On serve | 13 | 13.7 | -0.7 ±5.7 | 65.8% | 63.9% | 23–15 | 38 |
| 33 | Arthur Rinderknech | On serve | 9 | 9.5 | -0.5 ±4.8 | 65.4% | 63.4% | 11–15 | 26 |
| 34 | Alexei Popyrin | On serve | 8 | 8.4 | -0.4 ±4.5 | 68.0% | 66.4% | 8–17 | 25 |
| 35 | Quentin Halys | On serve | 11 | 11.3 | -0.3 ±5.1 | 62.1% | 61.0% | 15–14 | 29 |
| 36 | Dino Prizmic | On serve | 8 | 8.2 | -0.2 ±4.3 | 61.9% | 60.8% | 11–10 | 21 |
| 37 | Daniil Medvedev | On serve | 11 | 11.2 | -0.2 ±5.5 | 73.8% | 73.3% | 30–12 | 42 |
| 38 | Zizou Bergs | On serve | 10 | 10.2 | -0.2 ±4.9 | 63.0% | 62.3% | 13–14 | 27 |
| 39 | Marton Fucsovics | On serve | 8 | 8.0 | +0.0 ±4.4 | 65.2% | 65.4% | 9–14 | 23 |
| 40 | Jaume Munar | On serve | 8 | 8.0 | +0.0 ±4.4 | 65.2% | 65.4% | 11–12 | 23 |
| 41 | Camilo Ugo Carabelli | On serve | 13 | 12.8 | +0.2 ±5.3 | 58.1% | 58.6% | 14–17 | 31 |
| 42 | Terence Atmane | On serve | 11 | 10.8 | +0.2 ±5.0 | 60.7% | 61.4% | 11–17 | 28 |
| 43 | Fabian Marozsan | On serve | 13 | 12.7 | +0.3 ±5.4 | 60.6% | 61.6% | 16–17 | 33 |
| 44 | Aleksandar Kovacevic | On serve | 12 | 11.6 | +0.4 ±5.1 | 57.1% | 58.4% | 11–17 | 28 |
| 45 | Ben Shelton | On serve | 12 | 11.5 | +0.5 ±5.4 | 67.6% | 68.9% | 25–12 | 37 |
| 46 | Rinky Hijikata | On serve | 9 | 8.6 | +0.4 ±4.4 | 59.1% | 61.0% | 10–12 | 22 |
| 47 | Thiago Agustin Tirante | On serve | 11 | 10.5 | +0.5 ±5.0 | 62.1% | 63.9% | 18–11 | 29 |
| 48 | Alexander Bublik | On serve | 14 | 13.2 | +0.8 ±5.6 | 62.2% | 64.2% | 22–15 | 37 |
| 49 | Raphael Collignon | On serve | 10 | 9.1 | +0.9 ±4.6 | 58.3% | 62.1% | 13–11 | 24 |
| 50 | Jakub Mensik | On serve | 12 | 10.9 | +1.1 ±5.2 | 63.6% | 67.0% | 23–10 | 33 |
| 51 | Sebastian Baez | On serve | 14 | 12.7 | +1.3 ±5.4 | 57.6% | 61.4% | 17–16 | 33 |
| 52 | Miomir Kecmanovic | On serve | 13 | 11.7 | +1.3 ±5.2 | 58.1% | 62.3% | 12–19 | 31 |
| 53 | Jenson Brooksby | On serve | 9 | 7.8 | +1.2 ±4.4 | 62.5% | 67.3% | 8–16 | 24 |
| 54 | Joao Fonseca | On serve | 12 | 10.5 | +1.5 ±4.9 | 57.1% | 62.4% | 16–12 | 28 |
| 55 | Roman Andres Burruchaga | On serve | 9 | 7.7 | +1.3 ±4.3 | 57.1% | 63.4% | 11–10 | 21 |
| 56 | Botic van de Zandschulp | On serve | 13 | 11.4 | +1.6 ±5.2 | 56.7% | 62.0% | 15–15 | 30 |
| 57 | Brandon Nakashima | On serve | 13 | 11.2 | +1.8 ±5.2 | 60.6% | 65.9% | 19–14 | 33 |
| 58 | Jiri Lehecka | On serve | 13 | 11.1 | +1.9 ±5.3 | 62.9% | 68.3% | 22–13 | 35 |
| 59 | Karen Khachanov | On serve | 13 | 11.0 | +2.0 ±5.1 | 58.1% | 64.7% | 16–15 | 31 |
| 60 | Denis Shapovalov | On serve | 11 | 9.0 | +2.0 ±4.5 | 52.2% | 60.9% | 9–14 | 23 |
| 61 | Cameron Norrie | On serve | 13 | 10.8 | +2.2 ±4.9 | 53.6% | 61.6% | 13–15 | 28 |
| 62 | Daniel Altmaier | On serve | 15 | 12.6 | +2.4 ±5.3 | 53.1% | 60.7% | 12–20 | 32 |
| 63 | Gabriel Diallo | On serve | 10 | 8.0 | +2.0 ±4.4 | 56.5% | 65.2% | 8–15 | 23 |
| 64 | Mattia Bellucci | On serve | 10 | 7.8 | +2.2 ±4.3 | 52.4% | 62.9% | 8–13 | 21 |
| 65 | Matteo Berrettini | On serve | 11 | 8.6 | +2.4 ±4.6 | 56.0% | 65.6% | 14–11 | 25 |
| 66 | Alex de Minaur | On serve | 15 | 12.1 | +2.9 ±5.5 | 60.5% | 68.0% | 25–13 | 38 |
| 67 | Marin Cilic | On serve | 12 | 9.5 | +2.5 ±4.7 | 53.8% | 63.5% | 13–13 | 26 |
| 68 | Kamil Majchrzak | On serve | 12 | 9.5 | +2.5 ±4.6 | 50.0% | 60.6% | 13–11 | 24 |
| 69 | Ethan Quinn | On serve | 13 | 10.3 | +2.7 ±4.8 | 50.0% | 60.5% | 11–15 | 26 |
| 70 | Tallon Griekspoor | On serve | 11 | 8.3 | +2.7 ±4.4 | 50.0% | 62.3% | 9–13 | 22 |
| 71 | Corentin Moutet | On serve | 11 | 7.9 | +3.1 ±4.4 | 52.2% | 65.7% | 7–16 | 23 |
| 72 | Learner Tien | On serve | 16 | 12.1 | +3.9 ±5.3 | 51.5% | 63.5% | 21–12 | 33 |
| 73 | Hubert Hurkacz | Wild card | 12 | 8.5 | +3.5 ±4.4 | 45.5% | 61.3% | 9–13 | 22 |
| 74 | Flavio Cobolli | Wild card | 20 | 15.2 | +4.8 ±6.0 | 51.2% | 62.8% | 26–15 | 41 |
| 75 | Jan-Lennard Struff | Wild card | 11 | 7.4 | +3.6 ±4.2 | 54.2% | 69.2% | 11–13 | 24 |
| 76 | Juan Manuel Cerundolo | Wild card | 15 | 10.2 | +4.8 ±4.8 | 44.4% | 62.3% | 13–14 | 27 |
How this is measured, and what it does not claim
An upset is a match where our model's favorite loses. The model does not expect zero upsets: a 55/45 call is priced to go wrong 45 times out of 100. Adding those probabilities across a player's schedule gives their expected upsets, tailored to the exact opponents they faced. The board compares that number with the upsets that actually happened: fewer than expected earns Straight sets, more than expected earns Wild card, and anything within the statistical noise for that sample stays On serve, which with 60-plus matches is where most players genuinely belong.
Two independent model vintages agree on who broke script within a season, but a wild-card season does not predict a wild-card next season. That is why this is a season report, not a career trait, and why sample sizes and 95% intervals are always shown. The full reasoning, including the proper-scoring-rule version of this metric (the Brier delta) that backs the verdicts, is in the explainer.
Recent seasons use our as-published daily record (the same reconciled predictions behind the performance page); earlier seasons use a strict out-of-sample backtest of the current model. One source per season, never mixed. Probabilities and calibration are public on the model transparency page.