TennisEdge's AI model finds no betting value in A. Kalinskaya vs M. Kessler (Toronto on 2026-08-04) — the market is efficient, with A. Kalinskaya favoured at 1.57.
Independent estimates of who wins, each from a different method. The blend is what the bot prices against the market.
| Method | A. Kalinskaya | M. Kessler |
|---|---|---|
| Elo ratings-based, surface-weighted |
62.4% | 37.6% |
| Machine learning 29-feature gradient-boosted model |
51.0% | 49.0% |
| Serve / return point-by-point simulation |
47.9% | 52.1% |
| Blend what the bot actually prices off |
62.4% | 37.6% |
| Market implied de-vigged from the opening odds |
60.3% | 39.7% |
We publish how well these score against the closing market, including where they lose: how accurate are tennis predictions?
| Player | Surface | Elo | Record | Matches |
|---|---|---|---|---|
| A. Kalinskaya | hard | 1880 | 126–78 | 204 |
| M. Kessler | hard | 1792 | 101–54 | 155 |
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 July 31, 2026.
| L | J. Pegula | 2 - 0 | July 31, 2026 |
| W | J. Tjen | 1 - 2 | July 30, 2026 |
| W | D. Kasatkina | 0 - 2 | July 28, 2026 |
| L | B. Bencic | 2 - 1 | July 3, 2026 |
| W | D. Parry | 1 - 2 | July 1, 2026 |
| W | C. Brace | 2 - 0 | Aug. 3, 2026 |
| L | R. Zarazua | 2 - 0 | July 29, 2026 |
| L | A. Sabalenka | 2 - 0 | July 1, 2026 |
| W | O. Oliynykova | 0 - 2 | June 29, 2026 |
| L | M. Keys | 0 - 2 | June 25, 2026 |
All Aug. 4, 2026 results & picks →
═══ A. Kalinskaya (A, #24, 27y) vs M. Kessler (B, #50, 27y) — WTA Toronto, hard, 1/32-finals ═══
MODELS vs MARKET
Book: A 1.57 (63.7% raw) / B 2.38 (42.0% raw) — overround 5.7%, normalized A 60.3%
ELO: A 62.4% (≈ market, +2.1pp)
ML: A 51.0% (B 49.0% — a break-even coin flip)
Model: A 62.4%
No Betfair exchange price (alt_markets all null), no Pinnacle reference.
A-side edge vs book: 62.4% − 63.7% = −1.3% → negative, dead on arrival.
B-side edge vs book (ML only): 49.0% − 42.0% = +7.0%, but ELO gives B just 37.6%.
RECENT FORM (last 5)
Kalinskaya (hard, Washington run — 3 matches at this level last week):
07-31 Lost J. Pegula (2086, Elite) 6-3 7-5 — narrow loss to a top-tier opponent, positive shape
07-30 Won J. Tjen (1792, Strong) 6-1 3-6 7-6 — GRIND over Strong
07-28 Won D. Kasatkina (1755, Strong) 6-4 6-1 — DOM over Strong, best result in the window
07-03 Lost B. Bencic (1876, Elite) — grass, 3 sets
07-01 Won D. Parry (1730, Strong) — grass, 3 sets w/ TB
Kessler:
08-03 Won C. Brace (1548, Avg/Weak) 6-3 6-3 — DOM but over a weak field entry
07-29 Lost R. Zarazua (1500, Weak) 6-4 6-1 — straight-set loss to a 1500 in Memphis QUALIFYING
07-01 Lost A. Sabalenka (1915, Elite) — expected
06-29 Won O. Oliynykova (1405, Weak) 6-0 6-0
06-25 Lost M. Keys (1837, Elite) 6-3 6-1
SHAPE / PATH (Step 1b)
Kalinskaya: SHARPENING/STABLE — DOM over Kasatkina (1755) then a 6-3 7-5 loss to Pegula (2086);
margins vs bracket are good and she is on the same hard-court swing. Match-sharp (3 hard matches
in 7 days), first Toronto match but zero rust risk.
Kessler: FADING — the 6-4 6-1 loss to Zarazua (1500 ELO) in a QUALIFYING draw six days ago is
heavy under-performance vs bracket; her window is littered with straight-set losses to sub-1700
opposition (Volynets 3-6 3-6, Cristian 1-6 1-6, Putintseva 1-6 1-6). The Toronto R1 6-3 6-3 over
Brace (1548) is one clean win over a weak opponent, not evidence of a level jump.
ELO/rank check: both credible. Kalinskaya #24 with the higher ELO — agreement. Kessler #50 but
with a materially weaker ELO/results profile — ELO if anything flatters her recent level.
FATIGUE (Step 2)
A: 3 matches/7d, 253 min, last played 07-31 → 3 days rest, no extreme spot. Age 27, baseline.
B: 2 matches/14d, 132 min, won 6-3 6-3 YESTERDAY. Two-set win = no 3-set-hangover haircut
(~neutral, the −4.5pp applies only to 3-set winners). No extreme spot either side.
Verdict: roughly equal. Cumulative-minutes gap is context only, never an edge.
NARRATIVE (Step 3)
Let-down: none for either (no Final in the recent window for A; Kessler's Strasbourg Final is
2.5 months old). Venue momentum: no prior Toronto data in window for either.
Surface transition: NONE — both are on hard and both played hard court within the last week.
MARKET CHOICE (Step 4b)
alt_markets: none at analysis time
AH: not quoted. Totals: not quoted. betfair_ml: not quoted.
No exchange price → ML requires edge ≥ 8% vs the book quote (Pricing Discipline #4). Only the
B-side clears any positive number (+7.0%) and it falls short of the 8% book-priced bar, on a lone
model that is sitting at 51/49 — the classic break-even-ML failure mode — while the qualitative
read points the other way (Kessler lost straight sets to a 1500 last week).
refutation_check: n/a (PASS — no web access per Step 4c)
GATES
G1 edge-origin: FAIL — no side clears its numeric bar pre-narrative: A is −1.3% vs the book,
B is +7.0% vs a required 8% (no exchange price), and the 3–5% probe tier is unavailable
because it demands an executable Betfair price which does not exist here.
G2 consensus: n/a (stake tier only) — would be lone-signal/capped anyway: ELO and market agree
on A, ML alone likes B, and the form read contradicts ML.
G3 fatal-risk: n/a (ML market; G3 blocks margin bets only). Flag for the record: Kessler is the
one with a live win at this venue, so an A-side thesis carries this-event evidence against it.
VERDICT: PASS
ELO (62.4%) sits within ~2pp of the market's normalized 60.3% — that is consensus, not an edge,
and against the actual 1.57 quote the A side is priced through. The only contrarian number is a
coin-flip ML on Kessler, and it is contradicted by the single most informative recent scoreline
in this match-up: a 6-4 6-1 loss to a 1500-ELO opponent in a qualifying draw six days ago.
Backing a FADING player because a 51/49 model twitched is exactly the manufactured thesis the
calibration anchor warns about. No executable exchange price, no priced alt markets, no edge.