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 2025
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 · 100 players with ≥20 matches (2551 matches, source: as-published daily record)
| # | Player | Verdict | Upsets | Expected | Extra | Model hit | Confidence | W–L | M |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Brandon Nakashima | Straight sets | 15 | 24.6 | -9.6 ±7.4 | 75.4% | 59.7% | 32–29 | 61 |
| 2 | Luciano Darderi | Straight sets | 15 | 22.1 | -7.1 ±7.0 | 72.2% | 59.0% | 29–25 | 54 |
| 3 | Carlos Alcaraz | Straight sets | 11 | 18.2 | -7.2 ±7.1 | 84.5% | 74.4% | 64–7 | 71 |
| 4 | Jack Draper | Straight sets | 9 | 14.8 | -5.8 ±5.8 | 76.9% | 62.1% | 30–9 | 39 |
| 5 | Felix Auger-Aliassime | Straight sets | 19 | 26.1 | -7.1 ±7.7 | 71.2% | 60.4% | 45–21 | 66 |
| 6 | Adam Walton | Straight sets | 8 | 12.4 | -4.4 ±5.3 | 75.0% | 61.1% | 13–19 | 32 |
| 7 | Jannik Sinner | Straight sets | 7 | 11.6 | -4.6 ±5.8 | 87.3% | 78.8% | 49–6 | 55 |
| 8 | Jiri Lehecka | On serve | 18 | 23.3 | -5.3 ±7.3 | 70.0% | 61.2% | 40–20 | 60 |
| 9 | Ben Shelton | On serve | 16 | 20.9 | -4.9 ±7.1 | 72.9% | 64.5% | 38–21 | 59 |
| 10 | Nishesh Basavareddy | On serve | 5 | 7.8 | -2.8 ±4.2 | 75.0% | 61.0% | 7–13 | 20 |
| 11 | Alex de Minaur | On serve | 15 | 19.7 | -4.7 ±7.1 | 76.6% | 69.3% | 44–20 | 64 |
| 12 | Lorenzo Sonego | On serve | 16 | 20.4 | -4.4 ±6.8 | 68.6% | 60.0% | 23–28 | 51 |
| 13 | Hugo Gaston | On serve | 7 | 9.6 | -2.6 ±4.7 | 72.0% | 61.4% | 8–17 | 25 |
| 14 | Christopher O'Connell | On serve | 11 | 14.1 | -3.1 ±5.6 | 67.6% | 58.5% | 15–19 | 34 |
| 15 | Taylor Fritz | On serve | 17 | 20.8 | -3.8 ±7.2 | 73.0% | 67.0% | 45–18 | 63 |
| 16 | Karen Khachanov | On serve | 18 | 21.4 | -3.4 ±7.0 | 67.3% | 61.1% | 31–24 | 55 |
| 17 | Arthur Cazaux | On serve | 11 | 13.5 | -2.5 ±5.4 | 64.5% | 56.4% | 16–15 | 31 |
| 18 | Aleksandar Vukic | On serve | 13 | 15.8 | -2.8 ±6.1 | 69.0% | 62.3% | 14–28 | 42 |
| 19 | Alexander Zverev | On serve | 18 | 21.3 | -3.3 ±7.5 | 75.0% | 70.4% | 51–21 | 72 |
| 20 | Grigor Dimitrov | On serve | 7 | 9.0 | -2.0 ±4.8 | 75.0% | 67.9% | 17–11 | 28 |
| 21 | Quentin Halys | On serve | 11 | 13.3 | -2.3 ±5.5 | 67.6% | 60.8% | 11–23 | 34 |
| 22 | Reilly Opelka | On serve | 16 | 18.3 | -2.3 ±6.4 | 65.2% | 60.3% | 24–22 | 46 |
| 23 | Casper Ruud | On serve | 15 | 17.2 | -2.2 ±6.5 | 70.0% | 65.5% | 34–16 | 50 |
| 24 | Andrey Rublev | On serve | 18 | 20.4 | -2.4 ±7.0 | 69.0% | 64.8% | 34–24 | 58 |
| 25 | Tommy Paul | On serve | 12 | 14.0 | -2.0 ±5.8 | 70.7% | 65.9% | 28–13 | 41 |
| 26 | Gabriel Diallo | On serve | 18 | 20.1 | -2.1 ±6.7 | 63.3% | 58.9% | 26–23 | 49 |
| 27 | Sebastian Korda | On serve | 13 | 14.6 | -1.6 ±5.7 | 63.9% | 59.5% | 19–17 | 36 |
| 28 | Arthur Fils | On serve | 11 | 12.4 | -1.4 ±5.3 | 65.6% | 61.3% | 21–11 | 32 |
| 29 | Mackenzie McDonald | On serve | 8 | 9.2 | -1.2 ±4.6 | 66.7% | 61.7% | 8–16 | 24 |
| 30 | Flavio Cobolli | On serve | 19 | 20.6 | -1.6 ±6.9 | 64.8% | 61.9% | 29–25 | 54 |
| 31 | Roman Safiullin | On serve | 9 | 10.1 | -1.1 ±4.7 | 64.0% | 59.7% | 7–18 | 25 |
| 32 | Learner Tien | On serve | 19 | 20.5 | -1.5 ±6.8 | 63.5% | 60.6% | 30–22 | 52 |
| 33 | Fabian Marozsan | On serve | 19 | 20.1 | -1.1 ±6.7 | 62.7% | 60.6% | 26–25 | 51 |
| 34 | Lorenzo Musetti | On serve | 20 | 21.2 | -1.2 ±7.1 | 65.5% | 63.5% | 39–19 | 58 |
| 35 | Yunchaokete Bu | On serve | 14 | 14.8 | -0.8 ±5.8 | 63.2% | 61.0% | 12–26 | 38 |
| 36 | Corentin Moutet | On serve | 21 | 21.9 | -0.9 ±7.1 | 62.5% | 60.8% | 31–25 | 56 |
| 37 | Yoshihito Nishioka | On serve | 9 | 9.6 | -0.6 ±4.6 | 62.5% | 60.1% | 8–16 | 24 |
| 38 | Marcos Giron | On serve | 18 | 18.8 | -0.8 ±6.5 | 60.9% | 59.2% | 20–26 | 46 |
| 39 | Jesper de Jong | On serve | 10 | 10.6 | -0.6 ±5.0 | 65.5% | 63.6% | 16–13 | 29 |
| 40 | Tomas Machac | On serve | 13 | 13.6 | -0.6 ±5.6 | 64.9% | 63.3% | 20–17 | 37 |
| 41 | Frances Tiafoe | On serve | 18 | 18.6 | -0.6 ±6.5 | 60.9% | 59.7% | 26–20 | 46 |
| 42 | Hubert Hurkacz | On serve | 7 | 7.4 | -0.4 ±4.2 | 66.7% | 64.9% | 13–8 | 21 |
| 43 | Nuno Borges | On serve | 21 | 21.6 | -0.6 ±6.9 | 60.4% | 59.3% | 26–27 | 53 |
| 44 | Giovanni Mpetshi Perricard | On serve | 16 | 16.4 | -0.4 ±6.1 | 61.0% | 59.9% | 18–23 | 41 |
| 45 | Novak Djokovic | On serve | 12 | 12.4 | -0.4 ±5.7 | 72.7% | 71.8% | 34–10 | 44 |
| 46 | Alexei Popyrin | On serve | 15 | 15.3 | -0.3 ±5.8 | 60.5% | 59.9% | 16–22 | 38 |
| 47 | Sebastian Baez | On serve | 17 | 17.3 | -0.3 ±6.1 | 58.5% | 57.8% | 17–24 | 41 |
| 48 | Francisco Comesana | On serve | 16 | 16.3 | -0.3 ±6.0 | 60.0% | 59.3% | 18–22 | 40 |
| 49 | Hamad Medjedovic | On serve | 14 | 14.1 | -0.1 ±5.6 | 58.8% | 58.6% | 19–15 | 34 |
| 50 | Matteo Berrettini | On serve | 14 | 14.1 | -0.1 ±5.6 | 61.1% | 60.9% | 19–17 | 36 |
| 51 | Ethan Quinn | On serve | 11 | 11.0 | -0.0 ±5.1 | 62.1% | 62.0% | 12–17 | 29 |
| 52 | Damir Dzumhur | On serve | 16 | 15.8 | +0.2 ±6.1 | 61.9% | 62.4% | 17–25 | 42 |
| 53 | Holger Rune | On serve | 19 | 18.7 | +0.3 ±6.7 | 62.7% | 63.4% | 33–18 | 51 |
| 54 | Jordan Thompson | On serve | 12 | 11.7 | +0.3 ±5.1 | 57.1% | 58.3% | 13–15 | 28 |
| 55 | Luca Nardi | On serve | 9 | 8.4 | +0.6 ±4.4 | 60.9% | 63.4% | 9–14 | 23 |
| 56 | Mariano Navone | On serve | 17 | 16.2 | +0.8 ±6.0 | 57.5% | 59.6% | 17–23 | 40 |
| 57 | Daniel Altmaier | On serve | 20 | 19.1 | +0.9 ±6.6 | 60.0% | 61.9% | 22–28 | 50 |
| 58 | Marton Fucsovics | On serve | 12 | 11.1 | +0.9 ±5.0 | 57.1% | 60.4% | 17–11 | 28 |
| 59 | Jacob Fearnley | On serve | 13 | 12.0 | +1.0 ±5.3 | 59.4% | 62.5% | 13–19 | 32 |
| 60 | Alexander Shevchenko | On serve | 12 | 10.9 | +1.1 ±4.9 | 55.6% | 59.5% | 10–17 | 27 |
| 61 | Sebastian Ofner | On serve | 10 | 9.0 | +1.0 ±4.5 | 56.5% | 60.9% | 9–14 | 23 |
| 62 | Laslo Djere | On serve | 13 | 11.6 | +1.4 ±5.1 | 55.2% | 60.1% | 16–13 | 29 |
| 63 | Zizou Bergs | On serve | 23 | 21.1 | +1.9 ±6.9 | 56.6% | 60.2% | 28–25 | 53 |
| 64 | James Duckworth | On serve | 9 | 7.8 | +1.2 ±4.3 | 57.1% | 63.0% | 8–13 | 21 |
| 65 | Roberto Carballes Baena | On serve | 13 | 11.5 | +1.5 ±5.1 | 55.2% | 60.4% | 11–18 | 29 |
| 66 | Daniil Medvedev | On serve | 24 | 21.8 | +2.2 ±7.3 | 61.3% | 64.9% | 40–22 | 62 |
| 67 | Ugo Humbert | On serve | 19 | 16.8 | +2.2 ±6.2 | 54.8% | 59.9% | 23–19 | 42 |
| 68 | Gael Monfils | On serve | 14 | 12.1 | +1.9 ±5.2 | 53.3% | 59.6% | 18–12 | 30 |
| 69 | Denis Shapovalov | On serve | 23 | 20.3 | +2.7 ±6.8 | 56.6% | 61.7% | 30–23 | 53 |
| 70 | Francisco Cerundolo | On serve | 26 | 23.0 | +3.0 ±7.3 | 56.7% | 61.6% | 36–24 | 60 |
| 71 | Alexander Bublik | On serve | 24 | 21.0 | +3.0 ±7.0 | 56.4% | 61.8% | 35–20 | 55 |
| 72 | Matteo Arnaldi | On serve | 20 | 17.1 | +2.9 ±6.2 | 53.5% | 60.3% | 20–23 | 43 |
| 73 | Pedro Martinez | On serve | 18 | 15.2 | +2.8 ±5.9 | 53.8% | 61.1% | 14–25 | 39 |
| 74 | Tallon Griekspoor | On serve | 24 | 20.7 | +3.3 ±6.8 | 53.8% | 60.3% | 30–22 | 52 |
| 75 | Camilo Ugo Carabelli | On serve | 21 | 17.7 | +3.3 ±6.3 | 52.3% | 59.7% | 19–25 | 44 |
| 76 | Arthur Rinderknech | On serve | 24 | 20.4 | +3.6 ±6.9 | 55.6% | 62.3% | 26–28 | 54 |
| 77 | Nicolas Jarry | On serve | 13 | 10.1 | +2.9 ±4.9 | 51.9% | 62.6% | 9–18 | 27 |
| 78 | Alejandro Tabilo | On serve | 14 | 11.0 | +3.0 ±4.9 | 46.2% | 57.7% | 11–15 | 26 |
| 79 | Cameron Norrie | On serve | 26 | 21.6 | +4.4 ±7.0 | 52.7% | 60.7% | 31–24 | 55 |
| 80 | Aleksandar Kovacevic | On serve | 19 | 15.0 | +4.0 ±5.8 | 48.6% | 59.4% | 14–23 | 37 |
| 81 | Stefanos Tsitsipas | On serve | 17 | 13.0 | +4.0 ±5.5 | 50.0% | 61.8% | 18–16 | 34 |
| 82 | Jakub Mensik | On serve | 22 | 17.2 | +4.8 ±6.3 | 52.2% | 62.5% | 29–17 | 46 |
| 83 | Jaume Munar | Wild card | 27 | 21.7 | +5.3 ±6.9 | 49.1% | 59.1% | 30–23 | 53 |
| 84 | Miomir Kecmanovic | Wild card | 25 | 19.9 | +5.1 ±6.5 | 45.7% | 56.8% | 20–26 | 46 |
| 85 | Botic van de Zandschulp | Wild card | 16 | 11.7 | +4.3 ±5.3 | 52.9% | 65.6% | 16–18 | 34 |
| 86 | Joao Fonseca | Wild card | 20 | 15.3 | +4.7 ±5.8 | 45.9% | 58.7% | 22–15 | 37 |
| 87 | Alex Michelsen | Wild card | 25 | 19.3 | +5.7 ±6.6 | 49.0% | 60.7% | 24–25 | 49 |
| 88 | Jenson Brooksby | Wild card | 18 | 13.0 | +5.0 ±5.5 | 50.0% | 63.8% | 21–15 | 36 |
| 89 | Mattia Bellucci | Wild card | 16 | 11.3 | +4.7 ±5.0 | 44.8% | 61.2% | 12–17 | 29 |
| 90 | Jan-Lennard Struff | Wild card | 18 | 12.8 | +5.2 ±5.4 | 47.1% | 62.4% | 14–20 | 34 |
| 91 | Valentin Royer | Wild card | 12 | 7.8 | +4.2 ±4.2 | 40.0% | 60.9% | 9–11 | 20 |
| 92 | Tomas Martin Etcheverry | Wild card | 27 | 20.3 | +6.7 ±6.8 | 46.0% | 59.5% | 22–28 | 50 |
| 93 | Roberto Bautista Agut | Wild card | 19 | 13.4 | +5.6 ±5.6 | 45.7% | 61.6% | 14–21 | 35 |
| 94 | Rinky Hijikata | Wild card | 15 | 10.1 | +4.9 ±4.8 | 42.3% | 61.1% | 8–18 | 26 |
| 95 | Benjamin Bonzi | Wild card | 19 | 12.9 | +6.1 ±5.5 | 44.1% | 62.2% | 15–19 | 34 |
| 96 | David Goffin | Wild card | 19 | 12.5 | +6.5 ±5.3 | 38.7% | 59.6% | 10–21 | 31 |
| 97 | Alejandro Davidovich Fokina | Wild card | 38 | 28.1 | +9.9 ±7.9 | 45.7% | 59.8% | 44–26 | 70 |
| 98 | Kamil Majchrzak | Wild card | 15 | 8.9 | +6.1 ±4.6 | 37.5% | 62.9% | 14–10 | 24 |
| 99 | Alexandre Muller | Wild card | 28 | 18.9 | +9.1 ±6.5 | 40.4% | 59.8% | 22–25 | 47 |
| 100 | Adrian Mannarino | Wild card | 16 | 9.3 | +6.7 ±4.8 | 42.9% | 66.9% | 13–15 | 28 |
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.