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 · 101 players with ≥20 matches (2379 matches, source: as-published daily record)
| # | Player | Verdict | Upsets | Expected | Extra | Model hit | Confidence | W-L | M |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Alexander Zverev | Straight sets | 8 | 17.1 | -9.1 ±6.9 | 88.7% | 76.0% | 57-14 | 71 |
| 2 | Vit Kopriva | Straight sets | 10 | 15.1 | -5.1 ±5.9 | 75.0% | 62.1% | 19-21 | 40 |
| 3 | Stefanos Tsitsipas | Straight sets | 13 | 18.7 | -5.7 ±6.6 | 74.0% | 62.7% | 28-22 | 50 |
| 4 | Jesper de Jong | Straight sets | 4 | 7.4 | -3.4 ±4.1 | 80.0% | 63.0% | 6-14 | 20 |
| 5 | Damir Dzumhur | Straight sets | 7 | 11.1 | -4.1 ±5.0 | 75.9% | 61.8% | 11-18 | 29 |
| 6 | Carlos Alcaraz | Straight sets | 4 | 7.7 | -3.7 ±4.7 | 89.2% | 79.1% | 32-5 | 37 |
| 7 | Jannik Sinner | Straight sets | 3 | 6.5 | -3.5 ±4.5 | 93.6% | 86.1% | 44-3 | 47 |
| 8 | Nuno Borges | On serve | 15 | 19.2 | -4.2 ±6.6 | 70.0% | 61.6% | 26-24 | 50 |
| 9 | Arthur Fils | On serve | 13 | 16.9 | -3.9 ±6.4 | 72.9% | 64.8% | 35-13 | 48 |
| 10 | Taylor Fritz | On serve | 12 | 15.5 | -3.5 ±6.2 | 74.5% | 67.0% | 32-15 | 47 |
| 11 | Martin Damm | On serve | 7 | 9.4 | -2.4 ±4.7 | 72.0% | 62.4% | 11-14 | 25 |
| 12 | Lorenzo Musetti | On serve | 8 | 10.5 | -2.5 ±5.1 | 75.8% | 68.2% | 21-12 | 33 |
| 13 | Zizou Bergs | On serve | 12 | 14.7 | -2.7 ±5.9 | 70.0% | 63.1% | 20-20 | 40 |
| 14 | Andrey Rublev | On serve | 15 | 18.0 | -3.0 ±6.6 | 71.7% | 66.1% | 33-20 | 53 |
| 15 | Camilo Ugo Carabelli | On serve | 13 | 15.3 | -2.3 ±5.8 | 64.9% | 58.7% | 15-22 | 37 |
| 16 | Casper Ruud | On serve | 14 | 16.4 | -2.4 ±6.2 | 68.2% | 62.8% | 27-17 | 44 |
| 17 | Luciano Darderi | On serve | 20 | 22.7 | -2.7 ±7.2 | 65.5% | 60.8% | 35-23 | 58 |
| 18 | Rafael Jodar | On serve | 18 | 20.6 | -2.6 ±6.9 | 68.4% | 63.9% | 41-16 | 57 |
| 19 | Alejandro Davidovich Fokina | On serve | 16 | 18.1 | -2.1 ±6.5 | 67.3% | 63.1% | 33-16 | 49 |
| 20 | Yannick Hanfmann | On serve | 14 | 15.9 | -1.9 ±6.1 | 67.4% | 63.1% | 23-20 | 43 |
| 21 | Lorenzo Sonego | On serve | 9 | 10.5 | -1.5 ±5.0 | 69.0% | 63.9% | 12-17 | 29 |
| 22 | Felix Auger-Aliassime | On serve | 15 | 16.8 | -1.8 ±6.5 | 70.6% | 67.1% | 34-17 | 51 |
| 23 | Jaume Munar | On serve | 10 | 11.3 | -1.3 ±5.2 | 68.8% | 64.7% | 17-15 | 32 |
| 24 | Sho Shimabukuro | On serve | 7 | 8.1 | -1.1 ±4.3 | 65.0% | 59.7% | 5-15 | 20 |
| 25 | Tommy Paul | On serve | 18 | 19.7 | -1.7 ±7.0 | 70.0% | 67.2% | 41-19 | 60 |
| 26 | Arthur Fery | On serve | 8 | 9.1 | -1.1 ±4.7 | 68.0% | 63.4% | 15-10 | 25 |
| 27 | Marcos Giron | On serve | 11 | 12.3 | -1.3 ±5.3 | 65.6% | 61.7% | 11-21 | 32 |
| 28 | Francisco Cerundolo | On serve | 16 | 17.6 | -1.6 ±6.6 | 69.8% | 66.8% | 34-19 | 53 |
| 29 | Alejandro Tabilo | On serve | 18 | 19.6 | -1.6 ±6.7 | 64.0% | 60.8% | 25-25 | 50 |
| 30 | James Duckworth | On serve | 9 | 10.1 | -1.1 ±4.9 | 70.0% | 66.2% | 12-18 | 30 |
| 31 | Tomas Martin Etcheverry | On serve | 19 | 20.3 | -1.3 ±6.7 | 62.7% | 60.2% | 26-25 | 51 |
| 32 | Arthur Rinderknech | On serve | 12 | 12.7 | -0.7 ±5.5 | 64.7% | 62.6% | 15-19 | 34 |
| 33 | Alexei Popyrin | On serve | 10 | 10.6 | -0.6 ±5.0 | 66.7% | 64.6% | 11-19 | 30 |
| 34 | Valentin Royer | On serve | 9 | 9.5 | -0.5 ±4.7 | 65.4% | 63.4% | 5-21 | 26 |
| 35 | Frances Tiafoe | On serve | 22 | 22.8 | -0.8 ±7.3 | 65.1% | 63.9% | 44-19 | 63 |
| 36 | Ben Shelton | On serve | 18 | 18.7 | -0.7 ±6.8 | 67.9% | 66.7% | 40-16 | 56 |
| 37 | Jiri Lehecka | On serve | 16 | 16.5 | -0.5 ±6.4 | 68.6% | 67.6% | 32-19 | 51 |
| 38 | Giovanni Mpetshi Perricard | On serve | 10 | 10.4 | -0.4 ±4.9 | 61.5% | 60.1% | 8-18 | 26 |
| 39 | Alex Michelsen | On serve | 17 | 17.5 | -0.5 ±6.4 | 64.6% | 63.6% | 28-20 | 48 |
| 40 | Joao Fonseca | On serve | 12 | 12.3 | -0.3 ±5.3 | 62.5% | 61.5% | 19-13 | 32 |
| 41 | Marco Trungelliti | On serve | 7 | 7.3 | -0.3 ±4.2 | 66.7% | 65.4% | 9-12 | 21 |
| 42 | Marton Fucsovics | On serve | 9 | 9.1 | -0.1 ±4.7 | 65.4% | 64.9% | 9-17 | 26 |
| 43 | Dino Prizmic | On serve | 9 | 9.1 | -0.1 ±4.6 | 62.5% | 62.0% | 12-12 | 24 |
| 44 | Alex de Minaur | On serve | 18 | 18.2 | -0.2 ±6.7 | 68.4% | 68.1% | 38-19 | 57 |
| 45 | Daniil Medvedev | On serve | 17 | 17.1 | -0.1 ±6.8 | 73.0% | 72.8% | 45-18 | 63 |
| 46 | Alexander Bublik | On serve | 17 | 16.9 | +0.1 ±6.4 | 64.6% | 64.7% | 29-19 | 48 |
| 47 | Francisco Comesana | On serve | 9 | 8.8 | +0.2 ±4.4 | 59.1% | 59.9% | 7-15 | 22 |
| 48 | Mariano Navone | On serve | 19 | 18.6 | +0.4 ±6.5 | 59.6% | 60.4% | 24-23 | 47 |
| 49 | Ugo Humbert | On serve | 20 | 19.6 | +0.4 ±6.7 | 60.8% | 61.6% | 27-24 | 51 |
| 50 | Grigor Dimitrov | On serve | 8 | 7.7 | +0.3 ±4.2 | 61.9% | 63.3% | 8-13 | 21 |
| 51 | Valentin Vacherot | On serve | 15 | 14.5 | +0.5 ±5.7 | 59.5% | 60.7% | 20-17 | 37 |
| 52 | Novak Djokovic | On serve | 9 | 8.6 | +0.4 ±4.6 | 66.7% | 68.2% | 19-8 | 27 |
| 53 | Aleksandar Kovacevic | On serve | 17 | 16.2 | +0.8 ±6.0 | 57.5% | 59.5% | 15-25 | 40 |
| 54 | Denis Shapovalov | On serve | 17 | 16.2 | +0.8 ±6.0 | 58.5% | 60.6% | 21-20 | 41 |
| 55 | Mattia Bellucci | On serve | 12 | 11.2 | +0.8 ±5.1 | 60.0% | 62.7% | 11-19 | 30 |
| 56 | Jenson Brooksby | On serve | 14 | 13.1 | +0.9 ±5.6 | 63.2% | 65.6% | 15-23 | 38 |
| 57 | Alexander Blockx | On serve | 13 | 12.1 | +0.9 ±5.3 | 59.4% | 62.2% | 19-13 | 32 |
| 58 | Adrian Mannarino | On serve | 16 | 14.8 | +1.2 ±6.0 | 63.6% | 66.3% | 18-26 | 44 |
| 59 | Raphael Collignon | On serve | 12 | 11.0 | +1.0 ±5.0 | 58.6% | 62.1% | 14-15 | 29 |
| 60 | Hamad Medjedovic | On serve | 11 | 10.0 | +1.0 ±4.8 | 57.7% | 61.5% | 11-15 | 26 |
| 61 | Matteo Berrettini | On serve | 14 | 12.9 | +1.1 ±5.5 | 60.0% | 63.3% | 18-17 | 35 |
| 62 | Rinky Hijikata | On serve | 15 | 13.7 | +1.3 ±5.6 | 57.1% | 60.8% | 15-20 | 35 |
| 63 | Ignacio Buse | On serve | 18 | 16.6 | +1.4 ±6.2 | 57.1% | 60.4% | 23-19 | 42 |
| 64 | Roman Andres Burruchaga | On serve | 11 | 9.8 | +1.2 ±4.8 | 57.7% | 62.5% | 12-14 | 26 |
| 65 | Miomir Kecmanovic | On serve | 18 | 16.3 | +1.7 ±6.1 | 57.1% | 61.2% | 16-26 | 42 |
| 66 | Marin Cilic | On serve | 13 | 11.4 | +1.6 ±5.2 | 58.1% | 63.1% | 14-17 | 31 |
| 67 | Sebastian Baez | On serve | 20 | 18.0 | +2.0 ±6.4 | 57.4% | 61.6% | 22-25 | 47 |
| 68 | Jakub Mensik | On serve | 18 | 16.1 | +1.9 ±6.4 | 64.0% | 67.9% | 34-16 | 50 |
| 69 | Daniel Altmaier | On serve | 19 | 17.0 | +2.0 ±6.2 | 55.8% | 60.6% | 17-26 | 43 |
| 70 | Hubert Hurkacz | On serve | 18 | 16.0 | +2.0 ±6.1 | 57.1% | 62.0% | 23-19 | 42 |
| 71 | Tomas Machac | On serve | 13 | 11.2 | +1.8 ±5.1 | 56.7% | 62.8% | 15-15 | 30 |
| 72 | Terence Atmane | On serve | 17 | 14.9 | +2.1 ±5.8 | 56.4% | 61.9% | 17-22 | 39 |
| 73 | Benjamin Bonzi | On serve | 9 | 7.3 | +1.7 ±4.1 | 55.0% | 63.6% | 11-9 | 20 |
| 74 | Brandon Nakashima | On serve | 22 | 18.9 | +3.1 ±6.7 | 59.3% | 64.9% | 34-20 | 54 |
| 75 | Thiago Agustin Tirante | On serve | 18 | 15.3 | +2.7 ±6.0 | 58.1% | 64.5% | 26-17 | 43 |
| 76 | Quentin Halys | On serve | 20 | 17.1 | +2.9 ±6.2 | 54.5% | 61.1% | 24-20 | 44 |
| 77 | Fabian Marozsan | On serve | 20 | 17.1 | +2.9 ±6.3 | 55.6% | 62.1% | 22-23 | 45 |
| 78 | Luca Van Assche | On serve | 9 | 7.1 | +1.9 ±4.1 | 57.1% | 66.2% | 11-10 | 21 |
| 79 | Pablo Carreno Busta | On serve | 12 | 9.7 | +2.3 ±4.9 | 58.6% | 66.6% | 12-17 | 29 |
| 80 | Jan-Lennard Struff | On serve | 14 | 11.5 | +2.5 ±5.2 | 60.0% | 67.2% | 16-19 | 35 |
| 81 | Adolfo Daniel Vallejo | On serve | 14 | 11.5 | +2.5 ±5.1 | 53.3% | 61.8% | 15-15 | 30 |
| 82 | Juan Manuel Cerundolo | On serve | 19 | 15.8 | +3.2 ±6.0 | 54.8% | 62.3% | 20-22 | 42 |
| 83 | Cameron Norrie | On serve | 19 | 15.7 | +3.3 ±6.0 | 54.8% | 62.7% | 20-22 | 42 |
| 84 | Gabriel Diallo | On serve | 12 | 9.4 | +2.6 ±4.7 | 53.8% | 64.0% | 9-17 | 26 |
| 85 | Ethan Quinn | On serve | 13 | 10.3 | +2.7 ±4.8 | 50.0% | 60.5% | 11-15 | 26 |
| 86 | Learner Tien | On serve | 22 | 17.9 | +4.1 ±6.4 | 54.2% | 62.8% | 30-18 | 48 |
| 87 | Titouan Droguet | On serve | 11 | 8.3 | +2.7 ±4.3 | 45.0% | 58.6% | 10-10 | 20 |
| 88 | Zachary Svajda | On serve | 13 | 9.8 | +3.2 ±4.8 | 50.0% | 62.4% | 11-15 | 26 |
| 89 | Karen Khachanov | On serve | 21 | 16.5 | +4.5 ±6.3 | 55.3% | 65.0% | 26-21 | 47 |
| 90 | Alex Molcan | On serve | 11 | 7.9 | +3.1 ±4.4 | 50.0% | 64.3% | 13-9 | 22 |
| 91 | Adam Walton | Wild card | 14 | 10.2 | +3.8 ±4.9 | 48.1% | 62.3% | 9-18 | 27 |
| 92 | Jaime Faria | Wild card | 15 | 11.0 | +4.0 ±5.0 | 48.3% | 62.0% | 15-14 | 29 |
| 93 | Botic van de Zandschulp | Wild card | 24 | 18.6 | +5.4 ±6.6 | 52.9% | 63.5% | 28-23 | 51 |
| 94 | Daniel Merida | Wild card | 16 | 11.8 | +4.2 ±5.2 | 46.7% | 60.6% | 19-11 | 30 |
| 95 | Corentin Moutet | Wild card | 14 | 9.7 | +4.3 ±4.8 | 50.0% | 65.3% | 9-19 | 28 |
| 96 | Kamil Majchrzak | Wild card | 18 | 13.1 | +4.9 ±5.5 | 47.1% | 61.5% | 16-18 | 34 |
| 97 | Tallon Griekspoor | Wild card | 17 | 11.9 | +5.1 ±5.3 | 46.9% | 62.8% | 13-19 | 32 |
| 98 | Flavio Cobolli | Wild card | 27 | 19.2 | +7.8 ±6.7 | 48.1% | 63.0% | 32-20 | 52 |
| 99 | Martin Landaluce | Wild card | 16 | 10.0 | +6.0 ±4.8 | 40.7% | 62.8% | 12-15 | 27 |
| 100 | Matteo Arnaldi | Wild card | 17 | 10.4 | +6.6 ±4.9 | 39.3% | 62.9% | 11-17 | 28 |
| 101 | Arthur Gea | Wild card | 16 | 9.1 | +6.9 ±4.6 | 30.4% | 60.4% | 16-7 | 23 |
Serve projections: who we read best, and worst
Before every match we project how many aces each player will serve. The bar is how much closer that projection lands than the naive forecast anyone can build without a model, which is the average of the player's own last 5 matches. Positive means we add something on that player. Ranking by raw error would just rank the tour by serve volume, so the comparison is always against each player's own baseline.
Full board below, 110 players with at least 12 matches in 2025 where both our projection and the last-5 baseline could be scored (source: out-of-sample backtest). A verdict is printed only when the 95% interval of the per-match comparison stays on one side of zero. Everyone else is level with the baseline for this sample, which is where most players belong. The serve record does not cover 2026, so this board shows 2025, the most recent season whose serve projections we can score.
| # | Player | Verdict | Edge | Our miss | Baseline miss | Actual avg | Projected avg | M |
|---|
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 expected 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.
The serve board answers a different question with a different metric, and the two never mix. Upsets are about who wins, and are scored against the model's own expectation. Aces and double faults are counts, and are scored against the forecast anyone could make without a model, the average of that player's last five matches. A player can be perfectly on script and still be the one whose serve we read worst.
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.