Taylor Fritz vs Christopher O'Connell

hard atp masters_1000 best of 3 tennis_atp_cincinnati_open · commence 2026-08-20 00:20:00+00:00 · completed winner: a

P(Taylor Fritz) = 1.000  |  P(Christopher O'Connell) = 0.000
live composite (last tick)

Sharp anchor — Pinnacle pre-match

Pinnacle P(Taylor Fritz) 0.878
Pinnacle P(Christopher O'Connell) 0.122
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 Taylor FritzChristopher O'Connell 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
Taylor Fritz big_server 205 0.865 10.4
Christopher O'Connell unknown

Style matchup signal: style matchup low_data: missing archetype or surface

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)

AdjustmentTaylor FritzChristopher O'ConnellNet
Match fatigue (14d load) -1.50pp (load 3.0) -1.00pp (load 2.0) -0.50pp

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 (160 ticks)

Time Set Game Score Server P(Taylor Fritz) P(Christopher O'Connell) Exp games Source
01:42:15 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.751 0.249 31.6 feed
01:42:45 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.758 0.242 31.6 feed
01:43:16 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.753 0.247 31.6 feed
01:43:47 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.740 0.260 31.8 feed
01:44:17 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.760 0.240 31.8 feed
01:44:48 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '15']} b 0.744 0.256 31.5 feed
01:45:18 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '15']} b 0.739 0.261 31.9 feed
01:45:49 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '15']} b 0.740 0.260 31.8 feed
01:46:19 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '30']} b 0.759 0.241 31.6 feed
01:46:50 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '30']} b 0.750 0.250 32.0 feed
01:47:20 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '40']} b 0.771 0.229 31.4 feed
01:47:51 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['0', '40']} b 0.757 0.243 31.7 feed
01:48:21 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['30', '40']} b 0.746 0.254 31.6 feed
01:48:52 2 7 {'sets': [[6, 0]], 'current_set_games': [4, 3], 'sets_won_synthetic': True, 'point_score': ['30', '40']} b 0.746 0.254 31.6 feed
01:49:22 2 8 {'sets': [[6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['0', '0']} b 0.787 0.213 31.9 feed
01:49:53 2 8 {'sets': [[6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['15', '15']} b 0.791 0.209 31.8 feed
01:50:23 2 8 {'sets': [[6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['15', '30']} b 0.775 0.225 32.0 feed
01:50:54 2 8 {'sets': [[6, 0]], 'current_set_games': [5, 3], 'sets_won_synthetic': True, 'point_score': ['15', '40']} b 0.782 0.218 32.0 feed
01:51:24 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} b 1.000 0.000 0.0 feed
02:01:46 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} b 1.000 0.000 0.0 feed
02:02:46 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} b 1.000 0.000 0.0 feed
02:03:46 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} b 1.000 0.000 0.0 feed
02:04:46 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} b 1.000 0.000 0.0 feed
02:05:46 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} b 1.000 0.000 0.0 feed
02:06:46 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} b 1.000 0.000 0.0 feed
02:07:46 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} b 1.000 0.000 0.0 feed
02:09:10 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} b 1.000 0.000 0.0 feed
02:10:10 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} b 1.000 0.000 0.0 feed
02:11:10 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} b 1.000 0.000 0.0 feed
02:12:10 3 9 {'sets': [[6, 0], [6, 0]], 'current_set_games': [6, 3], 'sets_won_synthetic': True, 'point_score': ['7', '12']} b 1.000 0.000 0.0 feed

Showing last 30 of 160 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.