Frances Tiafoe vs Alex Michelsen

hard atp grand_slam best of 5 tennis_atp_us_open · commence 2026-09-08 17:00:00+00:00 · completed winner: a

P(Frances Tiafoe) = 1.000  |  P(Alex Michelsen) = 0.000
live composite (last tick)

BO5 — elevated retirement risk

Best-of-5 matches (ATP men's Slams) historically retire at a materially higher rate than best-of-3. Per-player retirement frequency over their last 30 matches:
Frances Tiafoe: 1/30 (3.3%)
most recent: 2026-08-07
Alex Michelsen: 0/30 (0.0%)

Sharp anchor — Pinnacle pre-match

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 ELO radar

Surface Frances TiafoeAlex 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.

Style matchup (display-only · v0 priors · NOT in headline)

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).

Composite adjustments (live)

AdjustmentFrances TiafoeAlex MichelsenNet
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.

Composite signal weights

SignalWeight
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.

Live trajectory (200 ticks)

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

Showing last 30 of 200 ticks.

Tennis variance: best-of-3 single-match outcomes are noisy. Composite + trajectory shown for transparency, not as a tout. Use closing-line comparison (vs Pinnacle anchor above) as the canonical edge metric.