| Pinnacle P(Coco Gauff) | 0.560 |
|---|---|
| Pinnacle P(Marta Kostyuk) | 0.440 |
| 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 | Coco Gauff | Marta Kostyuk | 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 |
|---|---|---|---|---|
| Coco Gauff | big_server | 168 | 0.726 | 4.3 |
| Marta Kostyuk | all_court | 122 | 0.644 | 3.4 |
Matchup adjustment: +0.00pp toward Marta Kostyuk 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 | Coco Gauff | Marta Kostyuk | Net |
|---|---|---|---|
| Match fatigue (14d load) | -2.75pp (load 5.5) | -2.00pp (load 4.0) | -0.75pp |
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(Coco Gauff) | P(Marta Kostyuk) | Exp games | Source |
|---|---|---|---|---|---|---|---|---|
| 02:43:48 | 2 | 3 | {'sets': [[6, 0]], 'current_set_games': [3, 0], 'sets_won_synthetic': True, 'point_score': ['40', 'A']} | b | 0.863 | 0.137 | 23.4 | feed |
| 02:44:18 | 2 | 4 | {'sets': [[6, 0]], 'current_set_games': [4, 0], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.928 | 0.072 | 23.1 | feed |
| 02:44:49 | 2 | 4 | {'sets': [[6, 0]], 'current_set_games': [4, 0], 'sets_won_synthetic': True, 'point_score': ['15', '0']} | b | 0.944 | 0.056 | 22.9 | feed |
| 02:45:20 | 2 | 4 | {'sets': [[6, 0]], 'current_set_games': [4, 0], 'sets_won_synthetic': True, 'point_score': ['30', '0']} | b | 0.934 | 0.066 | 23.0 | feed |
| 02:45:50 | 2 | 4 | {'sets': [[6, 0]], 'current_set_games': [4, 0], 'sets_won_synthetic': True, 'point_score': ['30', '15']} | b | 0.935 | 0.065 | 23.0 | feed |
| 02:46:21 | 2 | 4 | {'sets': [[6, 0]], 'current_set_games': [4, 0], 'sets_won_synthetic': True, 'point_score': ['40', '15']} | b | 0.945 | 0.055 | 22.9 | feed |
| 02:46:51 | 2 | 4 | {'sets': [[6, 0]], 'current_set_games': [4, 0], 'sets_won_synthetic': True, 'point_score': ['40', '15']} | b | 0.926 | 0.074 | 23.1 | feed |
| 02:47:22 | 2 | 5 | {'sets': [[6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.858 | 0.142 | 25.5 | feed |
| 02:47:53 | 2 | 5 | {'sets': [[6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.860 | 0.140 | 25.5 | feed |
| 02:48:23 | 2 | 5 | {'sets': [[6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.858 | 0.142 | 25.6 | feed |
| 02:48:54 | 2 | 5 | {'sets': [[6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.867 | 0.133 | 25.3 | feed |
| 02:49:24 | 2 | 5 | {'sets': [[6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.856 | 0.144 | 25.4 | feed |
| 02:49:55 | 2 | 5 | {'sets': [[6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['15', '15']} | b | 0.857 | 0.143 | 25.5 | feed |
| 02:50:25 | 2 | 5 | {'sets': [[6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['30', '15']} | b | 0.866 | 0.134 | 25.4 | feed |
| 02:50:56 | 2 | 5 | {'sets': [[6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['30', '15']} | b | 0.850 | 0.150 | 25.5 | feed |
| 02:51:26 | 2 | 5 | {'sets': [[6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['40', '15']} | b | 0.871 | 0.129 | 25.4 | feed |
| 02:51:57 | 2 | 6 | {'sets': [[6, 0]], 'current_set_games': [4, 2], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.785 | 0.215 | 28.0 | feed |
| 02:52:28 | 2 | 6 | {'sets': [[6, 0]], 'current_set_games': [4, 2], 'sets_won_synthetic': True, 'point_score': ['0', '15']} | b | 0.793 | 0.207 | 28.0 | feed |
| 02:52:58 | 2 | 6 | {'sets': [[6, 0]], 'current_set_games': [4, 2], 'sets_won_synthetic': True, 'point_score': ['15', '15']} | b | 0.781 | 0.219 | 28.0 | feed |
| 02:53:29 | 2 | 6 | {'sets': [[6, 0]], 'current_set_games': [4, 2], 'sets_won_synthetic': True, 'point_score': ['15', '30']} | b | 0.799 | 0.201 | 27.8 | feed |
| 02:54:00 | 2 | 6 | {'sets': [[6, 0]], 'current_set_games': [4, 2], 'sets_won_synthetic': True, 'point_score': ['15', '40']} | b | 0.777 | 0.223 | 28.0 | feed |
| 02:54:30 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [5, 2], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.865 | 0.135 | 27.5 | feed |
| 02:55:01 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [5, 2], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.855 | 0.145 | 27.5 | feed |
| 02:55:31 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [5, 2], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.857 | 0.143 | 27.7 | feed |
| 02:56:02 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [5, 2], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.866 | 0.134 | 27.4 | feed |
| 02:56:33 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [5, 2], 'sets_won_synthetic': True, 'point_score': ['0', '15']} | b | 0.862 | 0.138 | 27.5 | feed |
| 02:57:03 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [5, 2], 'sets_won_synthetic': True, 'point_score': ['0', '30']} | b | 0.860 | 0.140 | 27.5 | feed |
| 02:57:34 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [5, 2], 'sets_won_synthetic': True, 'point_score': ['0', '30']} | b | 0.847 | 0.153 | 27.6 | feed |
| 02:58:04 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [5, 2], 'sets_won_synthetic': True, 'point_score': ['0', '40']} | b | 0.886 | 0.114 | 27.5 | feed |
| 02:58:35 | 3 | 8 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 2], 'sets_won_synthetic': True, 'point_score': ['4', '12']} | b | 1.000 | 0.000 | 0.0 | feed |