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 2024
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 (2638 matches, source: out-of-sample backtest)
| # | Player | Verdict | Upsets | Expected | Extra | Model hit | Confidence | W–L | M |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Matteo Berrettini | Straight sets | 5 | 12.7 | -7.7 ±5.6 | 87.2% | 67.5% | 27–12 | 39 |
| 2 | Jannik Sinner | Straight sets | 4 | 11.8 | -7.8 ±5.9 | 94.4% | 83.3% | 65–6 | 71 |
| 3 | Sebastian Baez | Straight sets | 12 | 20.3 | -8.3 ±6.8 | 77.4% | 61.8% | 28–25 | 53 |
| 4 | Daniel Elahi Galan | Straight sets | 4 | 9.3 | -5.3 ±4.6 | 82.6% | 59.5% | 7–16 | 23 |
| 5 | Miomir Kecmanovic | Straight sets | 14 | 20.6 | -6.6 ±6.8 | 73.6% | 61.2% | 24–29 | 53 |
| 6 | Sebastian Korda | Straight sets | 10 | 15.9 | -5.9 ±6.2 | 78.7% | 66.2% | 29–18 | 47 |
| 7 | Daniil Medvedev | Straight sets | 10 | 15.2 | -5.2 ±6.4 | 83.1% | 74.2% | 43–16 | 59 |
| 8 | Hubert Hurkacz | On serve | 12 | 16.2 | -4.2 ±6.4 | 76.0% | 67.5% | 34–16 | 50 |
| 9 | Ben Shelton | On serve | 20 | 24.5 | -4.5 ±7.5 | 68.8% | 61.7% | 40–24 | 64 |
| 10 | Thiago Seyboth Wild | On serve | 12 | 15.5 | -3.5 ±6.0 | 71.4% | 63.1% | 20–22 | 42 |
| 11 | Marton Fucsovics | On serve | 7 | 9.7 | -2.7 ±4.8 | 75.0% | 65.3% | 12–16 | 28 |
| 12 | Alex de Minaur | On serve | 14 | 17.8 | -3.8 ±6.8 | 76.3% | 69.8% | 44–15 | 59 |
| 13 | Zizou Bergs | On serve | 8 | 10.6 | -2.6 ±5.0 | 72.4% | 63.3% | 13–16 | 29 |
| 14 | Alexander Zverev | On serve | 14 | 17.5 | -3.5 ±7.0 | 81.3% | 76.7% | 58–17 | 75 |
| 15 | Arthur Rinderknech | On serve | 13 | 15.8 | -2.8 ±5.9 | 66.7% | 59.5% | 19–20 | 39 |
| 16 | Matteo Arnaldi | On serve | 16 | 19.0 | -3.0 ±6.6 | 68.0% | 62.0% | 26–24 | 50 |
| 17 | Sumit Nagal | On serve | 5 | 6.9 | -1.9 ±4.1 | 75.0% | 65.7% | 5–15 | 20 |
| 18 | Christopher Eubanks | On serve | 9 | 11.2 | -2.2 ±5.0 | 67.9% | 59.9% | 10–18 | 28 |
| 19 | Roman Safiullin | On serve | 12 | 14.4 | -2.4 ±5.8 | 70.0% | 63.9% | 16–24 | 40 |
| 20 | Fabio Fognini | On serve | 7 | 8.9 | -1.9 ±4.6 | 73.1% | 65.8% | 12–14 | 26 |
| 21 | Nuno Borges | On serve | 15 | 17.6 | -2.6 ±6.4 | 68.1% | 62.6% | 24–23 | 47 |
| 22 | Laslo Djere | On serve | 8 | 9.9 | -1.9 ±4.7 | 69.2% | 61.9% | 10–16 | 26 |
| 23 | Botic van de Zandschulp | On serve | 11 | 13.1 | -2.1 ±5.5 | 69.4% | 63.6% | 14–22 | 36 |
| 24 | Luca Van Assche | On serve | 7 | 8.7 | -1.7 ±4.5 | 69.6% | 62.3% | 7–16 | 23 |
| 25 | Alexander Shevchenko | On serve | 15 | 17.3 | -2.3 ±6.2 | 66.7% | 61.6% | 20–25 | 45 |
| 26 | Christopher O'Connell | On serve | 13 | 15.1 | -2.1 ±5.8 | 66.7% | 61.3% | 17–22 | 39 |
| 27 | Taylor Fritz | On serve | 15 | 17.4 | -2.4 ±6.7 | 75.8% | 72.0% | 44–18 | 62 |
| 28 | Flavio Cobolli | On serve | 21 | 23.4 | -2.4 ±7.3 | 65.0% | 61.0% | 34–26 | 60 |
| 29 | Lorenzo Sonego | On serve | 15 | 16.9 | -1.9 ±6.3 | 67.4% | 63.3% | 20–26 | 46 |
| 30 | Aleksandar Vukic | On serve | 16 | 17.8 | -1.8 ±6.4 | 66.0% | 62.2% | 22–25 | 47 |
| 31 | Federico Coria | On serve | 7 | 8.1 | -1.1 ±4.4 | 69.6% | 65.0% | 8–15 | 23 |
| 32 | Jack Draper | On serve | 19 | 20.5 | -1.5 ±7.0 | 66.7% | 64.1% | 38–19 | 57 |
| 33 | Holger Rune | On serve | 19 | 20.4 | -1.4 ±7.3 | 72.1% | 70.1% | 45–23 | 68 |
| 34 | Jan-Lennard Struff | On serve | 14 | 15.1 | -1.1 ±6.1 | 69.6% | 67.1% | 27–19 | 46 |
| 35 | Karen Khachanov | On serve | 17 | 18.2 | -1.2 ±6.7 | 69.6% | 67.5% | 35–21 | 56 |
| 36 | James Duckworth | On serve | 8 | 8.8 | -0.8 ±4.5 | 66.7% | 63.3% | 9–15 | 24 |
| 37 | Zhizhen Zhang | On serve | 15 | 16.1 | -1.1 ±6.2 | 66.7% | 64.3% | 21–24 | 45 |
| 38 | Tomas Martin Etcheverry | On serve | 20 | 21.1 | -1.1 ±6.9 | 63.6% | 61.6% | 28–27 | 55 |
| 39 | Pavel Kotov | On serve | 15 | 15.9 | -0.9 ±5.9 | 62.5% | 60.3% | 18–22 | 40 |
| 40 | Tallon Griekspoor | On serve | 17 | 17.9 | -0.9 ±6.5 | 66.7% | 65.0% | 28–23 | 51 |
| 41 | Marcos Giron | On serve | 17 | 17.8 | -0.8 ±6.6 | 67.3% | 65.7% | 27–25 | 52 |
| 42 | Jordan Thompson | On serve | 20 | 20.8 | -0.8 ±7.0 | 65.5% | 64.1% | 35–23 | 58 |
| 43 | Borna Coric | On serve | 11 | 11.4 | -0.4 ±5.1 | 62.1% | 60.8% | 11–18 | 29 |
| 44 | Arthur Cazaux | On serve | 9 | 9.3 | -0.3 ±4.5 | 60.9% | 59.6% | 10–13 | 23 |
| 45 | Alejandro Davidovich Fokina | On serve | 13 | 13.3 | -0.3 ±5.5 | 62.9% | 61.9% | 14–21 | 35 |
| 46 | Jaume Munar | On serve | 14 | 14.3 | -0.3 ±5.7 | 61.1% | 60.4% | 13–23 | 36 |
| 47 | Facundo Diaz Acosta | On serve | 13 | 13.2 | -0.2 ±5.4 | 60.6% | 60.1% | 16–17 | 33 |
| 48 | Cameron Norrie | On serve | 13 | 13.1 | -0.1 ±5.6 | 64.9% | 64.7% | 20–17 | 37 |
| 49 | Adrian Mannarino | On serve | 13 | 13.1 | -0.1 ±5.7 | 68.3% | 68.1% | 13–28 | 41 |
| 50 | Yoshihito Nishioka | On serve | 12 | 12.0 | -0.0 ±5.3 | 63.6% | 63.5% | 16–17 | 33 |
| 51 | Grigor Dimitrov | On serve | 16 | 16.0 | -0.0 ±6.5 | 72.9% | 72.9% | 42–17 | 59 |
| 52 | Pedro Martinez | On serve | 14 | 14.0 | +0.0 ±5.7 | 64.1% | 64.1% | 18–21 | 39 |
| 53 | Giovanni Mpetshi Perricard | On serve | 12 | 12.0 | +0.0 ±5.1 | 57.1% | 57.3% | 16–12 | 28 |
| 54 | Gael Monfils | On serve | 15 | 14.8 | +0.2 ±6.0 | 66.7% | 67.0% | 25–20 | 45 |
| 55 | Alexander Bublik | On serve | 20 | 19.7 | +0.3 ±6.6 | 57.4% | 58.0% | 24–23 | 47 |
| 56 | Stan Wawrinka | On serve | 9 | 8.8 | +0.2 ±4.6 | 64.0% | 64.9% | 9–16 | 25 |
| 57 | Jiri Lehecka | On serve | 15 | 14.6 | +0.4 ±5.9 | 64.3% | 65.2% | 28–14 | 42 |
| 58 | Roberto Bautista Agut | On serve | 16 | 15.6 | +0.4 ±6.1 | 61.9% | 62.9% | 22–20 | 42 |
| 59 | Felix Auger-Aliassime | On serve | 17 | 16.5 | +0.5 ±6.3 | 63.0% | 64.1% | 24–22 | 46 |
| 60 | Tommy Paul | On serve | 19 | 18.1 | +0.9 ±6.8 | 68.3% | 69.8% | 42–18 | 60 |
| 61 | Juncheng Shang | On serve | 17 | 16.2 | +0.8 ±6.1 | 60.5% | 62.3% | 25–18 | 43 |
| 62 | Alejandro Tabilo | On serve | 20 | 19.1 | +0.9 ±6.7 | 61.5% | 63.2% | 30–22 | 52 |
| 63 | Yannick Hanfmann | On serve | 15 | 14.2 | +0.8 ±5.8 | 61.5% | 63.6% | 18–21 | 39 |
| 64 | Corentin Moutet | On serve | 11 | 10.3 | +0.7 ±4.9 | 60.7% | 63.3% | 12–16 | 28 |
| 65 | Hugo Gaston | On serve | 11 | 10.3 | +0.7 ±4.8 | 59.3% | 62.0% | 12–15 | 27 |
| 66 | Luciano Darderi | On serve | 20 | 18.9 | +1.1 ±6.6 | 59.2% | 61.4% | 24–25 | 49 |
| 67 | Emil Ruusuvuori | On serve | 11 | 10.2 | +0.8 ±4.8 | 57.7% | 61.0% | 14–12 | 26 |
| 68 | Novak Djokovic | On serve | 6 | 5.2 | +0.8 ±4.0 | 83.3% | 85.5% | 28–8 | 36 |
| 69 | Daniel Evans | On serve | 10 | 9.0 | +1.0 ±4.6 | 60.0% | 64.0% | 6–19 | 25 |
| 70 | Dominik Koepfer | On serve | 12 | 10.7 | +1.3 ±5.0 | 61.3% | 65.5% | 13–18 | 31 |
| 71 | David Goffin | On serve | 13 | 11.6 | +1.4 ±5.2 | 59.4% | 63.7% | 17–15 | 32 |
| 72 | Lorenzo Musetti | On serve | 22 | 20.1 | +1.9 ±7.0 | 62.7% | 65.9% | 34–25 | 59 |
| 73 | Taro Daniel | On serve | 13 | 11.6 | +1.4 ±5.2 | 60.6% | 64.9% | 10–23 | 33 |
| 74 | Alex Michelsen | On serve | 25 | 22.8 | +2.2 ±7.2 | 58.3% | 62.0% | 31–29 | 60 |
| 75 | Denis Shapovalov | On serve | 20 | 18.1 | +1.9 ±6.3 | 53.5% | 58.0% | 23–20 | 43 |
| 76 | Stefanos Tsitsipas | On serve | 19 | 16.9 | +2.1 ±6.7 | 67.8% | 71.4% | 39–20 | 59 |
| 77 | Max Purcell | On serve | 15 | 13.0 | +2.0 ±5.5 | 55.9% | 61.7% | 14–20 | 34 |
| 78 | Aleksandar Kovacevic | On serve | 14 | 12.0 | +2.0 ±5.3 | 56.2% | 62.4% | 10–22 | 32 |
| 79 | Roberto Carballes Baena | On serve | 20 | 17.4 | +2.6 ±6.4 | 60.8% | 65.8% | 25–26 | 51 |
| 80 | Casper Ruud | On serve | 22 | 19.0 | +3.0 ±7.0 | 63.9% | 68.8% | 41–20 | 61 |
| 81 | Fabian Marozsan | On serve | 20 | 17.2 | +2.8 ±6.4 | 59.2% | 65.0% | 23–26 | 49 |
| 82 | Brandon Nakashima | On serve | 21 | 17.7 | +3.3 ±6.4 | 55.3% | 62.4% | 24–23 | 47 |
| 83 | Thanasi Kokkinakis | On serve | 12 | 9.4 | +2.6 ±4.6 | 52.0% | 62.2% | 11–14 | 25 |
| 84 | Francisco Cerundolo | On serve | 24 | 20.2 | +3.8 ±6.9 | 57.1% | 64.0% | 28–28 | 56 |
| 85 | Sebastian Ofner | On serve | 18 | 14.7 | +3.3 ±5.8 | 52.6% | 61.2% | 15–23 | 38 |
| 86 | Daniel Altmaier | On serve | 16 | 12.8 | +3.2 ±5.5 | 52.9% | 62.3% | 12–22 | 34 |
| 87 | Ugo Humbert | On serve | 23 | 19.0 | +4.0 ±6.8 | 58.2% | 65.4% | 33–22 | 55 |
| 88 | Alexei Popyrin | On serve | 20 | 16.3 | +3.7 ±6.2 | 54.5% | 62.9% | 24–20 | 44 |
| 89 | Jakub Mensik | On serve | 18 | 14.5 | +3.5 ±5.7 | 51.4% | 60.8% | 22–15 | 37 |
| 90 | Thiago Monteiro | On serve | 10 | 7.5 | +2.5 ±4.2 | 50.0% | 62.7% | 10–10 | 20 |
| 91 | Rinky Hijikata | On serve | 18 | 14.5 | +3.5 ±5.7 | 50.0% | 59.7% | 15–21 | 36 |
| 92 | Frances Tiafoe | On serve | 25 | 20.6 | +4.4 ±7.0 | 56.1% | 63.8% | 32–25 | 57 |
| 93 | Dusan Lajovic | On serve | 15 | 11.8 | +3.2 ±5.2 | 54.5% | 64.4% | 17–16 | 33 |
| 94 | Tomas Machac | On serve | 21 | 16.8 | +4.2 ±6.3 | 57.1% | 65.6% | 30–19 | 49 |
| 95 | Arthur Fils | On serve | 25 | 20.2 | +4.8 ±7.0 | 57.6% | 65.7% | 36–23 | 59 |
| 96 | Mariano Navone | On serve | 19 | 14.6 | +4.4 ±5.9 | 52.5% | 63.6% | 17–23 | 40 |
| 97 | Alexandre Muller | Wild card | 17 | 12.7 | +4.3 ±5.5 | 54.1% | 65.6% | 17–20 | 37 |
| 98 | Andrey Rublev | Wild card | 22 | 15.6 | +6.4 ±6.6 | 65.6% | 75.6% | 42–22 | 64 |
| 99 | Carlos Alcaraz | Wild card | 12 | 7.4 | +4.6 ±4.7 | 77.4% | 86.0% | 43–10 | 53 |
| 100 | Nicolas Jarry | Wild card | 21 | 12.9 | +8.1 ±5.5 | 43.2% | 65.0% | 15–22 | 37 |
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.