| Pinnacle P(Taylor Fritz) | 0.620 |
|---|---|
| Pinnacle P(Brandon Nakashima) | 0.380 |
| 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 | Brandon Nakashima | 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 |
| Brandon Nakashima | aggressive_baseliner | 127 | 0.856 | 7.9 |
Matchup adjustment: +0.00pp toward Brandon Nakashima 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 | Taylor Fritz | Brandon Nakashima | Net |
|---|---|---|---|
| Match fatigue (14d load) | -2.50pp (load 5.0) | -3.00pp (load 9.9) | +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(Brandon Nakashima) | Exp games | Source |
|---|---|---|---|---|---|---|---|---|
| 22:04:45 | 3 | 5 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 2], 'sets_won_synthetic': True, 'point_score': ['30', '30']} | b | 0.505 | 0.495 | 37.8 | feed |
| 22:05:15 | 3 | 5 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 2], 'sets_won_synthetic': True, 'point_score': ['40', '30']} | b | 0.494 | 0.506 | 37.8 | feed |
| 22:05:46 | 3 | 5 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 2], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.497 | 0.502 | 37.8 | feed |
| 22:06:17 | 3 | 5 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 2], 'sets_won_synthetic': True, 'point_score': ['40', 'A']} | b | 0.495 | 0.505 | 37.8 | feed |
| 22:06:47 | 3 | 5 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 2], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.510 | 0.490 | 37.8 | feed |
| 22:07:18 | 3 | 5 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 2], 'sets_won_synthetic': True, 'point_score': ['A', '40']} | b | 0.499 | 0.500 | 37.8 | feed |
| 22:07:48 | 3 | 5 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 2], 'sets_won_synthetic': True, 'point_score': ['A', '40']} | b | 0.492 | 0.508 | 37.7 | feed |
| 22:08:19 | 3 | 6 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.526 | 0.474 | 38.8 | feed |
| 22:08:49 | 3 | 6 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 3], 'sets_won_synthetic': True, 'point_score': ['15', '0']} | b | 0.513 | 0.487 | 38.8 | feed |
| 22:09:20 | 3 | 6 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 3], 'sets_won_synthetic': True, 'point_score': ['30', '0']} | b | 0.481 | 0.519 | 38.8 | feed |
| 22:09:51 | 3 | 6 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 3], 'sets_won_synthetic': True, 'point_score': ['40', '0']} | b | 0.484 | 0.516 | 38.8 | feed |
| 22:10:21 | 3 | 6 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 3], 'sets_won_synthetic': True, 'point_score': ['40', '15']} | b | 0.497 | 0.503 | 38.8 | feed |
| 22:10:52 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.434 | 0.566 | 39.8 | feed |
| 22:11:22 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.430 | 0.570 | 39.7 | feed |
| 22:11:53 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.427 | 0.573 | 39.8 | feed |
| 22:12:23 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.427 | 0.573 | 39.7 | feed |
| 22:12:54 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.433 | 0.567 | 39.8 | feed |
| 22:13:25 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['15', '15']} | b | 0.417 | 0.583 | 39.8 | feed |
| 22:13:55 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['30', '15']} | b | 0.434 | 0.566 | 39.7 | feed |
| 22:14:26 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['30', '15']} | b | 0.425 | 0.575 | 39.8 | feed |
| 22:14:56 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['40', '15']} | b | 0.427 | 0.573 | 39.8 | feed |
| 22:15:27 | 3 | 8 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 5], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.205 | 0.794 | 40.8 | feed |
| 22:15:58 | 3 | 8 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 5], 'sets_won_synthetic': True, 'point_score': ['15', '0']} | b | 0.211 | 0.788 | 40.8 | feed |
| 22:16:28 | 3 | 8 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 5], 'sets_won_synthetic': True, 'point_score': ['15', '0']} | b | 0.218 | 0.782 | 40.8 | feed |
| 22:16:59 | 3 | 8 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 5], 'sets_won_synthetic': True, 'point_score': ['15', '15']} | b | 0.215 | 0.785 | 40.8 | feed |
| 22:17:29 | 3 | 8 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 5], 'sets_won_synthetic': True, 'point_score': ['15', '15']} | b | 0.205 | 0.795 | 40.8 | feed |
| 22:18:00 | 3 | 8 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 5], 'sets_won_synthetic': True, 'point_score': ['30', '15']} | b | 0.227 | 0.773 | 40.8 | feed |
| 22:18:30 | 3 | 8 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 5], 'sets_won_synthetic': True, 'point_score': ['40', '15']} | b | 0.210 | 0.790 | 40.8 | feed |
| 22:19:01 | 3 | 8 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 5], 'sets_won_synthetic': True, 'point_score': ['40', '15']} | b | 0.224 | 0.776 | 40.7 | feed |
| 22:19:32 | 4 | 9 | {'sets': [[6, 0], [0, 6], [0, 6]], 'current_set_games': [3, 6], 'sets_won_synthetic': True, 'point_score': ['17', '15']} | b | 0.000 | 1.000 | 0.0 | feed |