TennisEdge's AI model finds no betting value in D. Vekic vs V. Golubic (Toronto on 2026-08-04) — the market is efficient, with D. Vekic favoured at 1.74.
Independent estimates of who wins, each from a different method. The blend is what the bot prices against the market.
| Method | D. Vekic | V. Golubic |
|---|---|---|
| Elo ratings-based, surface-weighted |
46.1% | 53.9% |
| Machine learning 29-feature gradient-boosted model |
43.6% | 56.4% |
| Serve / return point-by-point simulation |
37.9% | 62.1% |
| Blend what the bot actually prices off |
46.3% | 53.7% |
| Market implied de-vigged from the opening odds |
55.6% | 44.4% |
We publish how well these score against the closing market, including where they lose: how accurate are tennis predictions?
| Player | Surface | Elo | Record | Matches |
|---|---|---|---|---|
| D. Vekic | hard | 1697 | 72–72 | 144 |
| V. Golubic | hard | 1724 | 118–68 | 186 |
Our own ratings, computed from match results since 2018. Players with fewer than 5 rated matches are omitted rather than shown at a provisional starting value. Last updated March 17, 2026.
Level at 1–1 over 2 meetings. Full record.
| Date | Event | Surface | Winner | Score |
|---|---|---|---|---|
| Sept. 28, 2024 | WTA Beijing | hard | D. Vekic | 2 - 1 |
| June 14, 2023 | WTA Nottingham | grass | V. Golubic | 2 - 0 |
| L | A. Krueger | 2 - 1 | June 30, 2026 |
| L | A. Eala | 0 - 2 | June 17, 2026 |
| W | E. Raducanu | 2 - 0 | June 14, 2026 |
| W | K. Boulter | 0 - 2 | June 13, 2026 |
| W | Ka. Pliskova | 1 - 2 | June 12, 2026 |
| W | K. Birrell | 0 - 2 | Aug. 2, 2026 |
| L | K. Volynets | 2 - 1 | July 27, 2026 |
| L | J. Paolini | 2 - 0 | July 2, 2026 |
| W | I. Shymanovich | 1 - 2 | June 30, 2026 |
| L | E. Navarro | 2 - 0 | June 20, 2026 |
All Aug. 4, 2026 results & picks →
D. Vekic (A) vs V. Golubic (B) — WTA Toronto, hard, 1/32-finals (2026-08-04)
═══ MODELS vs MARKET ═══
ELO A 46.1% | B 53.9%
ML A 43.6% | B 56.4%
Blend A 46.3% | B 53.7%
Sim (raw) A 37.9% | B 62.1%
Betfair ML A 1.80 / B 2.20 -> devigged A 55.0% | B 45.0%
Pinnacle A 1.735 / B 2.18, no-vig A 55.7% (fetched 22:55Z 08-03, ~2h old)
Book quote A 1.74 / B 2.18 (context only; exchange is the baseline)
Headline: every model favours Golubic (53.9–62.1%), both sharp prices favour Vekic
(55.0–55.7%). A 9–17pp model-vs-market split. Value_pick B, value_edge 9.3%.
Blend B 53.7% vs commission-adj B (2.14) 46.7% = +6.9% raw. That is the bet case —
so the whole match turns on whether the model side survives input validation.
═══ SIM INPUT VALIDATION (Step 4b) — the sim fails it ═══
Baseline inputs: Vekic spw 0.569 / rpw 0.410 / hold 66.4% (45 matches)
Golubic spw 0.582 / rpw 0.421 / hold 61.7% (50 matches)
Two red flags on Golubic's serve number:
1. INTERNAL CONTRADICTION — the sim gives Golubic the HIGHER spw (.582 vs .569) yet
her own hold% is 4.7pp LOWER (61.7 vs 66.4). A serve input its own hold data
contradicts is not a usable anchor.
2. CONTAMINATED WINDOW — ~10 of Golubic's last 20 matches are grass (Ilkley,
Nottingham title run, Wimbledon), where serve numbers inflate hardest, against a
1490–1790 field. Vekic's 45-match window is the opposite: deflated by Osaka,
Krueger (1823), Eala (1832), Raducanu (1838), Boulter (1790). Classic
opponent-/surface-unadjusted SPW bias, in opposite directions.
Bounded re-run (logged, within +/-0.05 clamp), spw_b 0.582 -> 0.545, evidence above:
A 57.1% | B 42.9% (exp margin +0.9 to A, exp games 20.7)
At the max clamp (spw_b 0.532): A 63.8% | B 36.2%.
DECISIVE: a 3.7pp shade on ONE justifiable input swings the match 25pp and flips the
favourite. The sim's 62% for Golubic is not robust — it is the artifact. And the
corrected run lands on 57.1% for Vekic, i.e. essentially ON Betfair (55.0) and
Pinnacle (55.7). The one model that actually conditions on surface point dynamics
agrees with the market once its grass-inflated input is fixed. So "three models
agree against the market" is false; it is really ELO+ML (same recent-form window)
against two sharp prices plus the corrected simulation.
═══ RECENT FORM (5 most recent each) ═══
D. VEKIC (30, rank 89) — last match 2026-06-30, i.e. 35 DAYS AGO
06-30 Wimbledon (grass) R64 L A. Krueger 1823 (Strong) 6-3 6-7 4-6 competitive
06-17 Berlin (grass) R16 L A. Eala 1832 (Strong) 5-7 4-6 competitive
06-14 London (grass) FINAL W E. Raducanu 1838 (Strong) 6-0 7-6(6) GRIND, TITLE
06-13 London (grass) SF W K. Boulter 1790 (Strong) 6-1 6-3 DOM vs Strong
06-12 London (grass) QF W Ka. Pliskova 1717 (Strong) 6-4 4-6 6-3 GRIND
Shape when last seen: SHARPENING (DOM over Boulter 6-1 6-3, title over Raducanu,
then two narrow losses to Elite-bracket). Then five weeks dark -> shape is STALE,
not bad. Only 4 matches vs sub-1700 opposition in the whole window: her level was
being tested at a genuinely higher altitude than Golubic's.
V. GOLUBIC (33, rank 90) — last match 2026-08-02 (2 days), 1 match at this venue
08-02 Toronto (HARD) R64 W K. Birrell 1789 (Strong) 7-6 6-4 GRIND vs Strong
07-27 Memphis-Q (HARD) L K. Volynets 1500 (Avg) 5-7 6-2 6-7 UNDER-perf
07-02 Wimbledon (grass) R32 L J. Paolini 1774 (Strong) 6-7(0) 4-6 competitive
06-30 Wimbledon (grass) R64 W I. Shymanovich 1618 (Avg) 6-2 2-6 6-1 GRIND vs Avg
06-20 Nottingham (grass) SF L E. Navarro 1807 (Strong) 6-7 2-6
Shape: STABLE at best. Her 2026 HARD-COURT evidence is exactly two matches — a
3-set loss to a 1500 at a QUALIFYING event 8 days ago (clear under-performance vs
bracket), and a 7-6 6-4 grind over Birrell. Her strong block (Nottingham title
06-14, Ilkley) is grass vs 1490–1740 fields — a surface/level-inflated window that
is feeding both her ELO and the sim's serve number, and does not transfer to
Toronto hard.
═══ PATH / SHAPE (Step 1b) ═══
Golubic: match-sharp. 1 match at venue, on surface, beat a Strong opponent 2d ago.
Vekic: RUST RISK. 35 days since any match + grass->hard TRANSITION; this is her
first ball struck at the venue (no R1 fixture exists in the draw feed —
confirmed against the full Toronto 1/64 pending list). Age 30.
Match-sharp-beats-rusty is a real, correctly-signed edge for Golubic. But it is
PUBLIC, DATED information: a post-Wimbledon 5-week break before the US swing is
standard WTA scheduling, not a hidden injury tell, and the exchange has already
drifted Vekic 1.74 (book) -> 1.80 (Betfair) pricing exactly this. Market slowness
is where my edge must come from, and there is nothing slow here.
═══ FATIGUE (Step 2) ═══
Vekic: 0 matches/14d, 0 min, no last_match_date. "Well rested" = the rust, not a plus.
Golubic: 2 matches/14d, 6 sets, 212 min, back_to_back 0, last 08-02 (2 days rest).
No extreme spot on either side. Her last win was in TWO sets (7-6 6-4), so the
measured -4.5pp 3-set-hangover haircut does NOT apply (and it was 2 days ago, not
yesterday). Age 33 = slow recovery, but 212 min over 14d is a light load.
FATIGUE IS A NON-FACTOR BOTH WAYS. It appears nowhere in the reasoning below.
═══ NARRATIVE (Step 3) ═══
Let-down: none either side (both Finals 51d ago, outside the 0–7d window).
TITLE: Vekic — London 51d ago (grass). Golubic — Nottingham 51d ago (grass).
Both stale and both off-surface; neither informs a hard court in August.
Venue momentum (Toronto, 90d): Vekic 0-0; Golubic 1-0.
Surface transition: VEKIC (grass -> hard) + 35d layoff. Golubic none (2 hard courts).
ELO/ranking sanity: ranks 89 vs 90, ELO near-level -> no divergence, ELO credible
but uninformative. What ranking parity hides is surface-specific quality: Vekic's
first-strike hard-court profile vs Golubic's grass/clay counterpunching, and a
52-week rank does not separate them.
═══ MARKET CHOICE ═══
ML B @ Betfair 2.20 -> commission-adj 2.14 = 46.7% break-even, min_odds 1.05/p.
blend p 53.7% -> +6.9% | corrected sim p 42.9% -> -3.8% | adjudicated 46.5% -> -0.2%
The edge exists ONLY on the un-validated inputs. Not stakeable.
ML A @ Betfair 1.80 -> commission-adj 1.76 = 56.8% break-even. My Vekic 53.5% -> -3.3%.
Backing the rusty favourite is also a negative-edge bet. No side to take.
HANDICAP: market line_a -1.5 (A 1.89 / B 2.00). B +1.5 @ 2.00 -> eff 1.95 = 51.3% b/e.
Baseline sim B+1.5 ~67% (+15.7%) but corrected sim B+1.5 48.2% (-3.1%). The cover
edge swings 19pp on the same one input — pure instability, not value. Margin-rule
check also fails: a cover thesis needs 2+ margin-specific items, and the only real
margin input here is Vekic's TRANSITION, which Step 3 says WIDENS margin variance
in both directions and may not support a tight cover of that opponent. VETOED.
TOTAL 21.5: under @ 2.00 -> 51.3% b/e. Sim under 51.6% (base) / 52.5% (corrected)
= +0.3% to +1.2%. Far below the 5% bar. And a rusty player's first match on a new
surface fattens both tails of the games distribution. PASS.
AH: B +1.5 @ 2.00 (quoted; passed — not a dog ML >= 3.0, shadow record N/A)
refutation_check: not run — PASS decisions get no web access per Step 4c.
═══ GATES (Step 4a) ═══
GATES
G1 edge-origin: FAIL — the +6.9% is blend-vs-exchange, but it does not survive input
validation: correcting the sim's internally-contradicted, grass-inflated Golubic
SPW (justified, within clamp) moves B to 42.9% and the coherent distribution to
-3.8%. Adjudicated B 46.5% vs 46.7% executable = -0.2%. No robust 5% edge exists
before OR after narrative, so nothing is stakeable.
G2 consensus: TIER-ONLY (never fails) — would have been capped 0.5–1.0u anyway:
the supporting ELO/ML share one grass-contaminated window, and the live
this-event evidence (Memphis 3-set loss to a 1500) cuts against the pick.
G3 fatal-risk: N/A for ML (never blocks); HARD VETO applied to the handicap, whose
cover thesis rests on a transition that widens margins in both directions.
═══ VERDICT: PASS ═══
The tempting bet is Golubic 2.20: three models on her, she is match-sharp with a win
over a 1789 on this surface two days ago, and Vekic is 35 days cold and switching off
grass. I am passing because the numeric edge is an artifact and the qualitative edge is
already in the price. The sim's 62% collapses to 43% on a 3.7pp correction to a serve
number its own hold% contradicts and that was built on grass — and the corrected number
lands on Betfair and Pinnacle, which agree with each other to within 0.7pp. Strip that
out and my support is ELO+ML off the same inflated window, against Golubic's actual
hard-court record this year: a three-set loss to a 1500-ELO player at a qualifying
event, plus one grind. Meanwhile Vekic's rust is real but public, dated and visibly
priced (1.74 -> 1.80). Betting 2.20 here would be paying for a story the market has
already read. My honest line is Vekic ~53.5% / Golubic ~46.5% — the exchange, near
enough. No edge in any of the three markets. PASS.