| 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 | Ben Shelton | Stefanos 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.
| 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).
| Adjustment | Ben Shelton | Stefanos Tsitsipas | Net |
|---|---|---|---|
| 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.
| Signal | Weight |
|---|---|
| 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.
| 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 |