Ben Shelton vs Stefanos Tsitsipas

hard atp grand_slam best of 5 tennis_atp_us_open · commence 2026-09-06 23:00:00+00:00 · completed winner: a

P(Ben Shelton) = 1.000  |  P(Stefanos Tsitsipas) = 0.000
live composite (last tick)

BO5 — elevated retirement risk

Best-of-5 matches (ATP men's Slams) historically retire at a materially higher rate than best-of-3. Per-player retirement frequency over their last 30 matches:
Ben Shelton: 0/30 (0.0%)
Stefanos Tsitsipas: 0/30 (0.0%)

Sharp anchor — Pinnacle pre-match

Pinnacle P(Ben Shelton) 0.723
Pinnacle P(Stefanos Tsitsipas) 0.277
n_books observed 1 live

Sharp anchor sourced via OddsAPI event_id lookup → Pinnacle no-vig computation. (Field-id mismatch fix shipped 2026-05-02 — pinnacle capture is now the source of truth for pre-match anchoring.)

Surface ELO radar

Surface Ben SheltonStefanos Tsitsipas Diff (a−b)
hard 1500 (0) 1500 (0) +0
clay 1500 (0) 1500 (0) +0
grass 1500 (0) 1500 (0) +0
indoor 1500 (0) 1500 (0) +0
overall 1500 (0) 1500 (0) +0

Per-surface ELO from 24h-cached global rater. Number-in-parens = matches contributing to that rating.

Style matchup (display-only · v0 priors · NOT in headline)

Player Archetype n matches Hold % Aces / match
Ben Shelton all_court 89 0.881 10.1
Stefanos Tsitsipas aggressive_baseliner 196 0.883 8.0

Matchup adjustment: +0.00pp toward Stefanos Tsitsipas on hard.

v0 sharp priors per tennis-betting-expert lock 2026-05-02. Display-only — NOT blended into the headline composite probability above. Promotion to wired-in pending: N≥200 archetype-tagged settled matches with closing-line capture + Brier delta ≥+0.005 vs unwired baseline + no 5pp-bucket regression. Re-evaluate post-Roland Garros (2026-06-09).

Composite adjustments (live)

AdjustmentBen SheltonStefanos TsitsipasNet
Match fatigue (14d load) -3.00pp (load 8.0) -3.00pp (load 10.0) +0.00pp

Live adjustments flowed into the headline composite probability above. Surface transition gated to documented poor-history (>15% win-rate drop in first 3 surface-change matches). Fatigue: 14-day load weighted by best-of (BO5=2.0, BO3=1.0), capped ±3pp. Tennis-betting-expert RG R1 audit 2026-05-24.

Composite signal weights

SignalWeight
surface_elo 0.35
recent_form 0.18
h2h_matrix 0.16
surface_transition 0.11
match_simulator 0.10
tournament_fatigue 0.10
Sum 1.00

Locked weights per tennis-betting-expert composite design 2026-04-26. Signals flagged low_data are excluded; remaining weights renormalize proportionally. h2h overweighting noted in audit; will be revisited with a dedicated calibration pass after Roland Garros.

Live trajectory (200 ticks)

Time Set Game Score Server P(Ben Shelton) P(Stefanos Tsitsipas) Exp games Source
00:53:45 3 5 {'sets': [[6, 0], [6, 0]], 'current_set_games': [3, 2], 'sets_won_synthetic': True, 'point_score': ['0', '40']} b 0.866 0.134 39.0 feed
00:54:15 3 6 {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 2], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.899 0.101 39.0 feed
00:54:46 3 6 {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 2], 'sets_won_synthetic': True, 'point_score': ['0', '15']} b 0.895 0.105 39.1 feed
00:55:46 3 6 {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 2], 'sets_won_synthetic': True, 'point_score': ['30', '15']} b 0.903 0.097 39.1 feed
00:56:17 3 6 {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 2], 'sets_won_synthetic': True, 'point_score': ['30', '30']} b 0.889 0.111 39.3 feed
00:56:47 3 6 {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 2], 'sets_won_synthetic': True, 'point_score': ['40', '30']} b 0.905 0.095 39.1 feed
00:57:18 3 7 {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.857 0.143 41.3 feed
00:57:48 3 7 {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.871 0.129 41.0 feed
00:58:19 3 7 {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.879 0.121 41.1 feed
00:58:49 3 7 {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.889 0.111 40.9 feed
00:59:20 3 7 {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.877 0.123 41.0 feed
00:59:51 3 7 {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['15', '0']} b 0.863 0.137 41.4 feed
01:00:21 3 7 {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['15', '15']} b 0.871 0.129 41.1 feed
01:00:51 3 7 {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['15', '30']} b 0.874 0.126 41.2 feed
01:01:22 3 8 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.893 0.107 41.1 feed
01:01:52 3 8 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.888 0.112 40.9 feed
01:02:23 3 8 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.887 0.113 41.3 feed
01:02:53 3 8 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['15', '0']} b 0.886 0.114 41.2 feed
01:03:24 3 8 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['30', '0']} b 0.885 0.115 41.0 feed
01:03:54 3 8 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['40', '15']} b 0.894 0.106 41.2 feed
01:04:25 3 8 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['40', '15']} b 0.900 0.100 41.0 feed
01:04:55 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 4], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.875 0.125 43.2 feed
01:05:25 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 4], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.860 0.140 43.3 feed
01:05:56 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 4], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.891 0.109 43.2 feed
01:06:27 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 4], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.876 0.124 43.1 feed
01:06:57 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 4], 'sets_won_synthetic': True, 'point_score': ['0', '15']} b 0.887 0.113 43.2 feed
01:07:28 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 4], 'sets_won_synthetic': True, 'point_score': ['0', '15']} b 0.884 0.116 42.9 feed
01:07:58 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 4], 'sets_won_synthetic': True, 'point_score': ['15', '15']} b 0.880 0.120 43.0 feed
01:08:29 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 4], 'sets_won_synthetic': True, 'point_score': ['15', '30']} b 0.881 0.119 42.8 feed
01:09:00 4 10 {'sets': [[6, 0], [6, 0], [6, 0]], 'current_set_games': [6, 4], 'sets_won_synthetic': True, 'point_score': ['9', '18']} b 1.000 0.000 0.0 feed

Showing last 30 of 200 ticks.

Tennis variance: best-of-3 single-match outcomes are noisy. Composite + trajectory shown for transparency, not as a tout. Use closing-line comparison (vs Pinnacle anchor above) as the canonical edge metric.