| Pinnacle P(Learner Tien) | 0.533 |
|---|---|
| Pinnacle P(Frances Tiafoe) | 0.467 |
| 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 | Learner Tien | Frances Tiafoe | 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 |
|---|---|---|---|---|
| Learner Tien | counterpuncher | 12 | 0.713 | 3.6 |
| Frances Tiafoe | all_court | 177 | 0.827 | 8.0 |
Matchup adjustment: +0.00pp toward Frances Tiafoe 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 | Learner Tien | Frances Tiafoe | Net |
|---|---|---|---|
| Match fatigue (14d load) | -3.00pp (load 6.0) | -1.25pp (load 2.5) | -1.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(Learner Tien) | P(Frances Tiafoe) | Exp games | Source |
|---|---|---|---|---|---|---|---|---|
| 02:17:59 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.426 | 0.574 | 36.8 | feed |
| 02:18:29 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['15', '15']} | b | 0.441 | 0.559 | 36.8 | feed |
| 02:19:00 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['15', '30']} | b | 0.445 | 0.555 | 36.7 | feed |
| 02:19:31 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['15', '30']} | b | 0.425 | 0.575 | 36.8 | feed |
| 02:20:01 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['30', '30']} | b | 0.432 | 0.568 | 36.8 | feed |
| 02:20:32 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['30', '30']} | b | 0.425 | 0.575 | 36.8 | feed |
| 02:21:02 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['40', '30']} | b | 0.419 | 0.581 | 36.8 | feed |
| 02:21:33 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.429 | 0.571 | 36.8 | feed |
| 02:22:04 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['A', '40']} | b | 0.440 | 0.560 | 36.8 | feed |
| 02:22:34 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['A', '40']} | b | 0.425 | 0.575 | 36.8 | feed |
| 02:23:05 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['A', '40']} | b | 0.427 | 0.573 | 36.8 | feed |
| 02:23:47 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.441 | 0.559 | 36.7 | feed |
| 02:24:18 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.443 | 0.557 | 36.8 | feed |
| 02:24:48 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.444 | 0.556 | 36.7 | feed |
| 02:25:19 | 3 | 7 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 4], 'sets_won_synthetic': True, 'point_score': ['A', '40']} | b | 0.434 | 0.566 | 36.7 | feed |
| 02:26:03 | 3 | 8 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 5], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.231 | 0.769 | 37.7 | feed |
| 02:26:34 | 3 | 8 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 5], 'sets_won_synthetic': True, 'point_score': ['0', '15']} | b | 0.204 | 0.796 | 37.8 | feed |
| 02:27:04 | 3 | 8 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 5], 'sets_won_synthetic': True, 'point_score': ['0', '40']} | b | 0.212 | 0.787 | 37.8 | feed |
| 02:27:35 | 3 | 8 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [3, 5], 'sets_won_synthetic': True, 'point_score': ['15', '40']} | b | 0.194 | 0.806 | 37.8 | feed |
| 02:28:06 | 3 | 9 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.443 | 0.557 | 38.7 | feed |
| 02:28:36 | 3 | 9 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.427 | 0.573 | 38.8 | feed |
| 02:29:07 | 3 | 9 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.421 | 0.579 | 38.8 | feed |
| 02:29:37 | 3 | 9 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.425 | 0.575 | 38.8 | feed |
| 02:30:08 | 3 | 9 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['15', '0']} | b | 0.428 | 0.572 | 38.8 | feed |
| 02:30:38 | 3 | 9 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['15', '0']} | b | 0.427 | 0.573 | 38.7 | feed |
| 02:31:09 | 3 | 9 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['15', '15']} | b | 0.429 | 0.571 | 38.8 | feed |
| 02:31:39 | 3 | 9 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['15', '30']} | b | 0.410 | 0.590 | 38.8 | feed |
| 02:32:10 | 3 | 9 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['30', '30']} | b | 0.429 | 0.571 | 38.7 | feed |
| 02:32:40 | 3 | 9 | {'sets': [[6, 0], [0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['40', '30']} | b | 0.415 | 0.585 | 38.9 | feed |
| 02:33:11 | 4 | 10 | {'sets': [[6, 0], [0, 6], [0, 6]], 'current_set_games': [4, 6], 'sets_won_synthetic': True, 'point_score': ['16', '14']} | b | 0.000 | 1.000 | 0.0 | feed |