| Pinnacle P(Frances Tiafoe) | 0.576 |
|---|---|
| Pinnacle P(Alex Michelsen) | 0.424 |
| 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 | Frances Tiafoe | Alex Michelsen | 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 |
|---|---|---|---|---|
| Frances Tiafoe | all_court | 177 | 0.827 | 8.0 |
| Alex Michelsen | all_court | 54 | 0.799 | 5.0 |
Matchup adjustment: +0.00pp toward Alex Michelsen 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 | Frances Tiafoe | Alex Michelsen | Net |
|---|---|---|---|
| Match fatigue (14d load) | -3.00pp (load 7.6) | -3.00pp (load 6.6) | +0.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(Frances Tiafoe) | P(Alex Michelsen) | Exp games | Source |
|---|---|---|---|---|---|---|---|---|
| 20:14:24 | 3 | 1 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 1], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.101 | 0.899 | 37.0 | feed |
| 20:14:55 | 3 | 1 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 1], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.102 | 0.898 | 36.9 | feed |
| 20:15:25 | 3 | 1 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 1], 'sets_won_synthetic': True, 'point_score': ['15', '15']} | b | 0.111 | 0.889 | 37.0 | feed |
| 20:15:56 | 3 | 1 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 1], 'sets_won_synthetic': True, 'point_score': ['30', '15']} | b | 0.107 | 0.893 | 37.1 | feed |
| 20:16:27 | 3 | 1 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 1], 'sets_won_synthetic': True, 'point_score': ['30', '15']} | b | 0.109 | 0.891 | 36.9 | feed |
| 20:16:58 | 3 | 1 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 1], 'sets_won_synthetic': True, 'point_score': ['30', '30']} | b | 0.105 | 0.895 | 36.9 | feed |
| 20:17:28 | 3 | 1 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 1], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.113 | 0.887 | 37.2 | feed |
| 20:17:59 | 3 | 1 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 1], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.112 | 0.888 | 37.1 | feed |
| 20:18:29 | 3 | 1 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 1], 'sets_won_synthetic': True, 'point_score': ['A', '40']} | b | 0.112 | 0.888 | 37.2 | feed |
| 20:19:00 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.054 | 0.946 | 35.2 | feed |
| 20:19:30 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.052 | 0.948 | 34.9 | feed |
| 20:20:01 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['15', '0']} | b | 0.051 | 0.950 | 34.8 | feed |
| 20:20:32 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['15', '15']} | b | 0.049 | 0.951 | 34.8 | feed |
| 20:21:26 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['30', '15']} | b | 0.059 | 0.942 | 34.9 | feed |
| 20:21:56 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['30', '30']} | b | 0.058 | 0.943 | 35.0 | feed |
| 20:22:27 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['40', '30']} | b | 0.058 | 0.943 | 35.0 | feed |
| 20:22:57 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.054 | 0.946 | 34.8 | feed |
| 20:23:28 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.049 | 0.952 | 34.7 | feed |
| 20:23:58 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['A', '40']} | b | 0.051 | 0.949 | 34.9 | feed |
| 20:24:29 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['A', '40']} | b | 0.059 | 0.942 | 35.1 | feed |
| 20:25:00 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.054 | 0.946 | 34.9 | feed |
| 20:25:30 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['40', 'A']} | b | 0.060 | 0.940 | 35.0 | feed |
| 20:26:01 | 3 | 2 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [0, 2], 'sets_won_synthetic': True, 'point_score': ['40', 'A']} | b | 0.051 | 0.949 | 34.8 | feed |
| 23:22:39 | 6 | 13 | {'sets': [[6, 0], [6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [7, 6], 'sets_won_synthetic': True, 'point_score': ['27', '28']} | b | 1.000 | 0.000 | 0.0 | feed |
| 23:23:39 | 6 | 13 | {'sets': [[6, 0], [6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [7, 6], 'sets_won_synthetic': True, 'point_score': ['27', '28']} | b | 1.000 | 0.000 | 0.0 | feed |
| 23:24:39 | 6 | 13 | {'sets': [[6, 0], [6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [7, 6], 'sets_won_synthetic': True, 'point_score': ['27', '28']} | b | 1.000 | 0.000 | 0.0 | feed |
| 23:25:39 | 6 | 13 | {'sets': [[6, 0], [6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [7, 6], 'sets_won_synthetic': True, 'point_score': ['27', '28']} | b | 1.000 | 0.000 | 0.0 | feed |
| 23:26:40 | 6 | 13 | {'sets': [[6, 0], [6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [7, 6], 'sets_won_synthetic': True, 'point_score': ['27', '28']} | b | 1.000 | 0.000 | 0.0 | feed |
| 23:27:39 | 6 | 13 | {'sets': [[6, 0], [6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [7, 6], 'sets_won_synthetic': True, 'point_score': ['27', '28']} | b | 1.000 | 0.000 | 0.0 | feed |
| 23:28:39 | 6 | 13 | {'sets': [[6, 0], [6, 0], [6, 0], [0, 6], [0, 6]], 'current_set_games': [7, 6], 'sets_won_synthetic': True, 'point_score': ['27', '28']} | b | 1.000 | 0.000 | 0.0 | feed |