Ben Shelton vs Carlos Alcaraz

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

P(Ben Shelton) = 1.000  |  P(Carlos Alcaraz) = 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%)
Carlos Alcaraz: 1/30 (3.3%)
most recent: 2026-04-13

Sharp anchor — Pinnacle pre-match

Pinnacle P(Ben Shelton) 0.231
Pinnacle P(Carlos Alcaraz) 0.769
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 SheltonCarlos Alcaraz 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
Carlos Alcaraz aggressive_baseliner 137 0.846 4.2

Matchup adjustment: +0.00pp toward Carlos Alcaraz 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 SheltonCarlos AlcarazNet
Match fatigue (14d load) -3.00pp (load 11.0) -2.00pp (load 4.0) -1.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(Carlos Alcaraz) Exp games Source
07:18:54 5 11 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 5], 'sets_won_synthetic': True, 'point_score': ['30', '15']} b 0.494 0.506 56.7 feed
07:19:25 5 11 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 5], 'sets_won_synthetic': True, 'point_score': ['40', '15']} b 0.507 0.493 56.8 feed
07:20:17 5 11 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 5], 'sets_won_synthetic': True, 'point_score': ['40', '30']} b 0.470 0.530 56.7 feed
07:20:48 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.496 0.504 57.8 feed
07:21:18 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.496 0.504 57.8 feed
07:21:49 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['0', '1']} b 0.501 0.499 57.8 feed
07:22:20 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['1', '1']} b 0.508 0.492 57.8 feed
07:22:50 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['1', '1']} b 0.493 0.506 57.7 feed
07:23:21 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['1', '2']} b 0.497 0.502 57.8 feed
07:23:52 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['1', '3']} b 0.508 0.492 57.8 feed
07:24:22 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['1', '3']} b 0.482 0.518 57.7 feed
07:24:53 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['2', '3']} b 0.502 0.498 57.8 feed
07:25:23 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['3', '3']} b 0.482 0.518 57.7 feed
07:25:54 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['3', '3']} b 0.494 0.506 57.8 feed
07:26:24 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['4', '3']} b 0.481 0.518 57.8 feed
07:26:55 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['4', '3']} b 0.490 0.510 57.7 feed
07:27:26 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['5', '3']} b 0.512 0.488 57.8 feed
07:27:56 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['5', '4']} b 0.525 0.475 57.8 feed
07:28:27 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['5', '4']} b 0.504 0.496 57.8 feed
07:28:57 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['5', '5']} b 0.498 0.502 57.8 feed
07:29:28 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['6', '5']} b 0.482 0.518 57.8 feed
07:29:58 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['6', '5']} b 0.497 0.502 57.8 feed
07:30:29 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['6', '6']} b 0.508 0.492 57.8 feed
07:31:00 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['6', '6']} b 0.501 0.499 57.8 feed
07:31:30 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['6', '7']} b 0.501 0.499 57.9 feed
07:32:01 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['6', '8']} b 0.503 0.497 57.8 feed
07:32:32 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['7', '8']} b 0.501 0.499 57.9 feed
07:33:02 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['7', '8']} b 0.507 0.493 57.8 feed
07:33:33 5 12 {'sets': [[6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [6, 6], 'sets_won_synthetic': True, 'point_score': ['7', '9']} b 0.497 0.503 57.7 feed
07:34:03 6 13 {'sets': [[6, 0], [6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [7, 6], 'sets_won_synthetic': True, 'point_score': ['23', '26']} 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.