| Pinnacle P(Alexander Zverev) | 0.863 |
|---|---|
| Pinnacle P(Botic van de Zandschulp) | 0.137 |
| 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 | Alexander Zverev | Botic van de Zandschulp | 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 |
|---|---|---|---|---|
| Alexander Zverev | all_court | 196 | 0.865 | 9.9 |
| Botic van de Zandschulp | all_court | 120 | 0.785 | 6.4 |
Matchup adjustment: +0.00pp toward Botic van de Zandschulp 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 | Alexander Zverev | Botic van de Zandschulp | Net |
|---|---|---|---|
| Match fatigue (14d load) | -3.00pp (load 6.6) | -3.00pp (load 8.3) | +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(Alexander Zverev) | P(Botic van de Zandschulp) | Exp games | Source |
|---|---|---|---|---|---|---|---|---|
| 02:05:57 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.929 | 0.071 | 37.8 | feed |
| 02:06:28 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.936 | 0.064 | 37.7 | feed |
| 02:06:58 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.928 | 0.072 | 37.9 | feed |
| 02:07:29 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.933 | 0.067 | 37.8 | feed |
| 02:07:59 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.931 | 0.069 | 38.0 | feed |
| 02:08:30 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['0', '15']} | b | 0.921 | 0.079 | 38.0 | feed |
| 02:09:00 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['0', '15']} | b | 0.930 | 0.070 | 37.9 | feed |
| 02:09:31 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['0', '30']} | b | 0.921 | 0.079 | 38.0 | feed |
| 02:10:02 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['15', '30']} | b | 0.931 | 0.069 | 37.8 | feed |
| 02:10:32 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['15', '30']} | b | 0.927 | 0.073 | 37.9 | feed |
| 02:11:03 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['30', '30']} | b | 0.919 | 0.081 | 38.0 | feed |
| 02:11:33 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['30', '40']} | b | 0.934 | 0.066 | 37.6 | feed |
| 02:12:04 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['30', '40']} | b | 0.931 | 0.069 | 38.1 | feed |
| 02:12:35 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.931 | 0.069 | 37.8 | feed |
| 02:13:05 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['40', 'A']} | b | 0.921 | 0.079 | 37.7 | feed |
| 02:13:36 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['40', 'A']} | b | 0.930 | 0.070 | 37.9 | feed |
| 02:14:07 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.934 | 0.066 | 37.7 | feed |
| 02:14:37 | 3 | 5 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [4, 1], 'sets_won_synthetic': True, 'point_score': ['40', 'A']} | b | 0.938 | 0.062 | 37.9 | feed |
| 02:15:08 | 3 | 6 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 1], 'sets_won_synthetic': True, 'point_score': ['0', '0']} | b | 0.971 | 0.029 | 36.6 | feed |
| 02:15:39 | 3 | 6 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 1], 'sets_won_synthetic': True, 'point_score': ['15', '0']} | b | 0.970 | 0.030 | 36.6 | feed |
| 02:16:09 | 3 | 6 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 1], 'sets_won_synthetic': True, 'point_score': ['15', '0']} | b | 0.960 | 0.040 | 36.9 | feed |
| 02:17:01 | 3 | 6 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 1], 'sets_won_synthetic': True, 'point_score': ['15', '15']} | b | 0.972 | 0.028 | 36.8 | feed |
| 02:17:32 | 3 | 6 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 1], 'sets_won_synthetic': True, 'point_score': ['15', '30']} | b | 0.963 | 0.037 | 36.8 | feed |
| 02:18:03 | 3 | 6 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 1], 'sets_won_synthetic': True, 'point_score': ['30', '30']} | b | 0.972 | 0.028 | 36.7 | feed |
| 02:18:35 | 3 | 6 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 1], 'sets_won_synthetic': True, 'point_score': ['30', '40']} | b | 0.969 | 0.031 | 36.6 | feed |
| 02:19:06 | 3 | 6 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 1], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.967 | 0.033 | 36.8 | feed |
| 02:19:37 | 3 | 6 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 1], 'sets_won_synthetic': True, 'point_score': ['40', '40']} | b | 0.967 | 0.033 | 36.7 | feed |
| 02:20:07 | 3 | 6 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 1], 'sets_won_synthetic': True, 'point_score': ['40', 'A']} | b | 0.966 | 0.034 | 36.9 | feed |
| 02:20:38 | 3 | 6 | {'sets': [[6, 0], [6, 0]], 'current_set_games': [5, 1], 'sets_won_synthetic': True, 'point_score': ['40', 'A']} | b | 0.969 | 0.031 | 36.7 | feed |
| 02:21:09 | 4 | 7 | {'sets': [[6, 0], [6, 0], [6, 0]], 'current_set_games': [6, 1], 'sets_won_synthetic': True, 'point_score': ['8', '19']} | b | 1.000 | 0.000 | 0.0 | feed |