| 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 | Ben Shelton | Carlos 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.
| 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).
| Adjustment | Ben Shelton | Carlos Alcaraz | Net |
|---|---|---|---|
| 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.
| 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(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 |