| Pinnacle P(Lorenzo Musetti) | 0.507 |
|---|---|
| Pinnacle P(Frances Tiafoe) | 0.493 |
| 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 | Lorenzo Musetti | 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 |
|---|---|---|---|---|
| Lorenzo Musetti | all_court | 117 | 0.779 | 4.2 |
| 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 | Lorenzo Musetti | Frances Tiafoe | Net |
|---|---|---|---|
| Match fatigue (14d load) | -2.00pp (load 4.0) | -2.25pp (load 4.5) | +0.25pp |
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(Lorenzo Musetti) | P(Frances Tiafoe) | Exp games | Source |
|---|---|---|---|---|---|---|---|---|
| 01:11:18 | 2 | 9 | {'sets': [[0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['30', '30']} | b | 0.210 | 0.789 | 36.0 | feed |
| 01:11:48 | 2 | 9 | {'sets': [[0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['40', '30']} | b | 0.200 | 0.800 | 35.9 | feed |
| 01:12:19 | 2 | 9 | {'sets': [[0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['40', '30']} | b | 0.229 | 0.771 | 36.2 | feed |
| 01:12:50 | 2 | 9 | {'sets': [[0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.216 | 0.783 | 35.9 | feed |
| 01:13:20 | 2 | 9 | {'sets': [[0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.213 | 0.786 | 35.9 | feed |
| 01:13:51 | 2 | 9 | {'sets': [[0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['40', 'A']} | b | 0.240 | 0.760 | 36.1 | feed |
| 01:14:22 | 2 | 9 | {'sets': [[0, 6]], 'current_set_games': [4, 5], 'sets_won_synthetic': True, 'point_score': ['40', 'A']} | b | 0.201 | 0.799 | 35.8 | feed |
| 01:14:52 | 2 | 10 | {'sets': [[0, 6]], 'current_set_games': [5, 5], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.250 | 0.750 | 37.6 | feed |
| 01:15:23 | 2 | 10 | {'sets': [[0, 6]], 'current_set_games': [5, 5], 'sets_won_synthetic': True, 'point_score': ['0', '15']} | b | 0.237 | 0.762 | 37.5 | feed |
| 01:15:53 | 2 | 10 | {'sets': [[0, 6]], 'current_set_games': [5, 5], 'sets_won_synthetic': True, 'point_score': ['0', '30']} | b | 0.267 | 0.734 | 37.6 | feed |
| 01:16:24 | 2 | 10 | {'sets': [[0, 6]], 'current_set_games': [5, 5], 'sets_won_synthetic': True, 'point_score': ['15', '30']} | b | 0.247 | 0.753 | 37.6 | feed |
| 01:16:54 | 2 | 10 | {'sets': [[0, 6]], 'current_set_games': [5, 5], 'sets_won_synthetic': True, 'point_score': ['30', '30']} | b | 0.248 | 0.752 | 37.7 | feed |
| 01:17:25 | 2 | 10 | {'sets': [[0, 6]], 'current_set_games': [5, 5], 'sets_won_synthetic': True, 'point_score': ['30', '30']} | b | 0.248 | 0.752 | 37.7 | feed |
| 01:17:56 | 2 | 10 | {'sets': [[0, 6]], 'current_set_games': [5, 5], 'sets_won_synthetic': True, 'point_score': ['40', '30']} | b | 0.258 | 0.742 | 37.6 | feed |
| 01:18:26 | 2 | 10 | {'sets': [[0, 6]], 'current_set_games': [5, 5], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.254 | 0.746 | 37.7 | feed |
| 01:18:57 | 2 | 10 | {'sets': [[0, 6]], 'current_set_games': [5, 5], 'sets_won_synthetic': True, 'point_score': ['A', '40']} | b | 0.263 | 0.737 | 37.7 | feed |
| 01:19:27 | 2 | 10 | {'sets': [[0, 6]], 'current_set_games': [5, 5], 'sets_won_synthetic': True, 'point_score': ['A', '40']} | b | 0.253 | 0.748 | 37.7 | feed |
| 01:19:58 | 2 | 10 | {'sets': [[0, 6]], 'current_set_games': [5, 5], 'sets_won_synthetic': True, 'point_score': ['A', '40']} | b | 0.257 | 0.743 | 37.8 | feed |
| 01:20:28 | 2 | 11 | {'sets': [[0, 6]], 'current_set_games': [5, 6], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.221 | 0.779 | 38.1 | feed |
| 01:20:59 | 2 | 11 | {'sets': [[0, 6]], 'current_set_games': [5, 6], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.196 | 0.804 | 37.8 | feed |
| 01:21:29 | 2 | 11 | {'sets': [[0, 6]], 'current_set_games': [5, 6], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.221 | 0.779 | 38.1 | feed |
| 01:22:00 | 2 | 11 | {'sets': [[0, 6]], 'current_set_games': [5, 6], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.225 | 0.775 | 38.2 | feed |
| 01:22:30 | 2 | 11 | {'sets': [[0, 6]], 'current_set_games': [5, 6], 'sets_won_synthetic': True, 'point_score': ['15', '0']} | b | 0.224 | 0.776 | 38.1 | feed |
| 01:23:01 | 2 | 11 | {'sets': [[0, 6]], 'current_set_games': [5, 6], 'sets_won_synthetic': True, 'point_score': ['15', '0']} | b | 0.214 | 0.785 | 38.0 | feed |
| 01:23:32 | 2 | 11 | {'sets': [[0, 6]], 'current_set_games': [5, 6], 'sets_won_synthetic': True, 'point_score': ['30', '0']} | b | 0.204 | 0.795 | 37.8 | feed |
| 01:24:03 | 2 | 11 | {'sets': [[0, 6]], 'current_set_games': [5, 6], 'sets_won_synthetic': True, 'point_score': ['40', '0']} | b | 0.214 | 0.786 | 38.2 | feed |
| 01:24:33 | 2 | 11 | {'sets': [[0, 6]], 'current_set_games': [5, 6], 'sets_won_synthetic': True, 'point_score': ['40', '15']} | b | 0.225 | 0.775 | 38.0 | feed |
| 01:25:04 | 2 | 11 | {'sets': [[0, 6]], 'current_set_games': [5, 6], 'sets_won_synthetic': True, 'point_score': ['40', '15']} | b | 0.202 | 0.798 | 38.0 | feed |
| 01:25:34 | 2 | 11 | {'sets': [[0, 6]], 'current_set_games': [5, 6], 'sets_won_synthetic': True, 'point_score': ['40', '30']} | b | 0.228 | 0.772 | 38.1 | feed |
| 01:26:05 | 3 | 12 | {'sets': [[0, 6], [0, 6]], 'current_set_games': [5, 7], 'sets_won_synthetic': True, 'point_score': ['14', '11']} | b | 0.000 | 1.000 | 0.0 | feed |