| Pinnacle P(Taylor Fritz) | 0.878 |
|---|---|
| Pinnacle P(Christopher O'Connell) | 0.122 |
| 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 | Taylor Fritz | Christopher O'Connell | 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 |
|---|---|---|---|---|
| Taylor Fritz | big_server | 205 | 0.865 | 10.4 |
| Christopher O'Connell | unknown | — | — | — |
Style matchup signal: style matchup low_data: missing archetype or surface
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 | Taylor Fritz | Christopher O'Connell | Net |
|---|---|---|---|
| Match fatigue (14d load) | -1.50pp (load 3.0) | -1.00pp (load 2.0) | -0.50pp |
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(Taylor Fritz) | P(Christopher O'Connell) | Exp games | Source |
|---|---|---|---|---|---|---|---|---|
| 01:42:15 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.751 | 0.249 | 31.6 | feed |
| 01:42:45 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.758 | 0.242 | 31.6 | feed |
| 01:43:16 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.753 | 0.247 | 31.6 | feed |
| 01:43:47 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.740 | 0.260 | 31.8 | feed |
| 01:44:17 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.760 | 0.240 | 31.8 | feed |
| 01:44:48 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '15']} | b | 0.744 | 0.256 | 31.5 | feed |
| 01:45:18 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '15']} | b | 0.739 | 0.261 | 31.9 | feed |
| 01:45:49 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '15']} | b | 0.740 | 0.260 | 31.8 | feed |
| 01:46:19 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '30']} | b | 0.759 | 0.241 | 31.6 | feed |
| 01:46:50 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '30']} | b | 0.750 | 0.250 | 32.0 | feed |
| 01:47:20 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '40']} | b | 0.771 | 0.229 | 31.4 | feed |
| 01:47:51 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '40']} | b | 0.757 | 0.243 | 31.7 | feed |
| 01:48:21 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['30', '40']} | b | 0.746 | 0.254 | 31.6 | feed |
| 01:48:52 | 2 | 7 | {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['30', '40']} | b | 0.746 | 0.254 | 31.6 | feed |
| 01:49:22 | 2 | 8 | {'sets': [[6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.787 | 0.213 | 31.9 | feed |
| 01:49:53 | 2 | 8 | {'sets': [[6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['15', '15']} | b | 0.791 | 0.209 | 31.8 | feed |
| 01:50:23 | 2 | 8 | {'sets': [[6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['15', '30']} | b | 0.775 | 0.225 | 32.0 | feed |
| 01:50:54 | 2 | 8 | {'sets': [[6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['15', '40']} | b | 0.782 | 0.218 | 32.0 | feed |
| 01:51:24 | 3 | 9 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} | b | 1.000 | 0.000 | 0.0 | feed |
| 02:01:46 | 3 | 9 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} | b | 1.000 | 0.000 | 0.0 | feed |
| 02:02:46 | 3 | 9 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} | b | 1.000 | 0.000 | 0.0 | feed |
| 02:03:46 | 3 | 9 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} | b | 1.000 | 0.000 | 0.0 | feed |
| 02:04:46 | 3 | 9 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} | b | 1.000 | 0.000 | 0.0 | feed |
| 02:05:46 | 3 | 9 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} | b | 1.000 | 0.000 | 0.0 | feed |
| 02:06:46 | 3 | 9 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} | b | 1.000 | 0.000 | 0.0 | feed |
| 02:07:46 | 3 | 9 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} | b | 1.000 | 0.000 | 0.0 | feed |
| 02:09:10 | 3 | 9 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} | b | 1.000 | 0.000 | 0.0 | feed |
| 02:10:10 | 3 | 9 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} | b | 1.000 | 0.000 | 0.0 | feed |
| 02:11:10 | 3 | 9 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} | b | 1.000 | 0.000 | 0.0 | feed |
| 02:12:10 | 3 | 9 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} | b | 1.000 | 0.000 | 0.0 | feed |