Season script report

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.

The metronome · 2025
15 upsets where the model expected 24.6 · 32-29 in 61 matches · model called it right 75.4% of the time
The wild card · 2025
16 upsets where the model expected only 9.3 · 13-15 in 28 matches · model called it right 42.9% of the time

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 Novak Djokovic On serve 12 12.4 -0.4 ±5.7 72.7% 71.8% 34-10 44
45 Giovanni Mpetshi Perricard On serve 16 16.4 -0.4 ±6.1 61.0% 59.9% 18-23 41
46 Alexei Popyrin On serve 15 15.3 -0.3 ±5.8 60.5% 59.9% 16-22 38
47 Francisco Comesana On serve 16 16.3 -0.3 ±6.0 60.0% 59.3% 18-22 40
48 Sebastian Baez On serve 17 17.3 -0.3 ±6.1 58.5% 57.8% 17-24 41
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 Joao Fonseca Wild card 20 15.3 +4.7 ±5.8 45.9% 58.7% 22-15 37
86 Botic van de Zandschulp Wild card 16 11.7 +4.3 ±5.3 52.9% 65.6% 16-18 34
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

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.

We read it our projection beats the player's own last-5 average, and the whole 95% interval agrees Level the gap is inside the noise for this sample, where most players belong Baseline wins the last-5 average reads this player better than we do

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.

# 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.