ATP + WTA · Kalshi + PrizePicks

Tennis HQ — projections, power rankings & backtest

5-week Pinnacle CLV backtest · surface specialists · tomorrow's projected winners · updated 2026-06-21
🚨 Backtest verdict: model is anti-correlated with skill.
Across 1217 graded picks (5/16–6/21), shadow-grade win rate is 32.1% with $-73.71 hypothetical P&L at $2 stakes. Mean CLV vs Pinnacle close is 16.16pp — looks elite on its face — but the signal is INVERTED: win rate at positive CLV = 42.9%; win rate at negative CLV = 65.6%. When we "beat" the close, we lose. When we lose the close, we win.
Calibration: ECE 4.36pp · Brier 0.2417 · barely better than random (0.25). 🔒 Real money stays gated. The dashboard's "0 picks today" isn't a bug — the gates work.
Shadow grade P&L
$-73.71
on 1217 graded $2 picks
Inverted CLV
42.9% / 65.6%
pos / neg CLV win rate
Calibration ECE
4.36pp
target < 5pp · current 4.36
Pinnacle close history
370
picks matched (of 1802)

Three play types — what works, what doesn't

Different markets = different math. The backtest says NONE of these are real-money safe yet. Paper-only.
Kalshi match winner (ML)
CURRENT — paper only
Sim hallucinates +30pp edges on longshots. Backtest: 30pp+ "edges" lost −$145. Gates correctly SKIP these. Don't unblock until sim improves.
PrizePicks props
CURRENT — paper
Aces, total games, BPs Won, sets. Total Games OVER for heavy favorites is the most stable signal. Demon lines too aggressive — fade them.
Parlays (2-3 leg)
PAPER · cross-tournament
Same-match correlated combos: ML + Total Games OVER for heavy favorites (ρ ≈ −0.20, suppresses EV). Cross-tournament 2-leg fav parlays only at ≥62% ML probability per leg.

Surface map — what each surface rewards

Static priors from Sackmann match history. Use these to validate sim outputs against intuition.
Clay+ Heavy spinLong rallies, return-game leverage, fewer aces. Higher total games. Specialist tilt is biggest here.
Grass+ Big serveShort points, ace rate 1.25× hard. Lower total games. Returners suffer.
Hard~ NeutralBalanced. Most ATP/WTA matches. Sim baseline assumption.
Indoor+ Power serveFaster than outdoor hard, +10% serve hold. Short careers' specialists thrive.
Aces — surface multG 1.25 · H 1.0 · C 0.85 · I 1.10PP Aces baseline ATP 4.5/match, WTA 2.5
BPs Won conversionATP .41 · WTA .45Strong returners on clay = the PP BPs OVER play

Tomorrow's projected winners · 156 matches simulated

10k Monte Carlo trials per match. Confidence tier from sim probability. Today's slate is mostly Wimbledon qualifying → most projections are coin-flips (correct behavior; the LOW_N regression caps confidence).
Fabian Marozsa v Alex MolcanAlex Molcan68%grass · exp ~23 gamesHIGH
Anton Matusevi v Rei SakamotoRei Sakamoto68%grass · exp ~38 gamesHIGH
Yu Hsiou Hsu v Stefanos SakelStefanos Sak67%grass · exp ~38 gamesHIGH
Dane Sweeny v Franco RoncadeFranco Ronca67%grass · exp ~38 gamesHIGH
Yu Hsiou Hsu v Stefanos SakelStefanos Sak65%grass · exp ~24 gamesHIGH
Stefano Travag v Luka MikrutLuka Mikrut65%grass · exp ~40 gamesHIGH
Anton Matusevi v Rei SakamotoRei Sakamoto64%grass · exp ~24 gamesMED
Otto Virtanen v Pedro MartinezOtto Virtane64%grass · exp ~40 gamesMED
Nikolas Sanche v Soon Woo KwonNikolas Sanc64%grass · exp ~40 gamesMED
Dane Sweeny v Franco RoncadeFranco Ronca64%grass · exp ~24 gamesMED
Vilius Gaubas v Michael MmohMichael Mmoh64%grass · exp ~39 gamesMED
Maya Joint v Emiliana ArangMaya Joint62%grass · exp ~23 gamesMED

Power rankings · composite (surface ELO + form + top-10 bonus)

Current surface: grass. Top 25 each side. Composite = 0.65·overall ELO + 0.35·surface ELO + form bonus + top-10 rank bonus. Restricted to official top 300 to avoid small-sample artifacts.
ATP top 25
RkPlayerCtyCompELOGRASSFormOff rk
1Jannik SinnerITA2051.621671695WARM1
2Carlos AlcarazESP1923.620701717RETURNING2
3Rafael JodarESP1913.018931893WARM23
4Alexander ZverevGER1898.319941594WARM3
5Daniil MedvedevRUS1808.018841585WARM8
6Arthur FilsFRA1791.018921546WARM21
7Novak DjokovicSRB1788.619291636RETURNING7
8Tommy PaulUSA1778.518511587WARM28
9Felix Auger AliassimeCAN1777.318541517WARM4
10Adolfo Daniel VallejoPAR1775.317551755WARM72
11Alex De MinaurAUS1775.018511590NEUTRAL6
12Daniel Merida AguilarESP1767.717481748WARM82
13Yibing WuCHN1766.817471747WARM101
14Ben SheltonUSA1764.818161561WARM5
15Flavio CobolliITA1759.518331557WARM10
16Casper RuudNOR1758.518661502WARM14
17Lorenzo MusettiITA1753.518321607NEUTRAL16
18Dino PrizmicCRO1753.218131499HOT70
19Jiri LeheckaCZE1750.118141574WARM12
20Alejandro TabiloCHI1739.817981575WARM31
21Joao FonsecaBRA1737.318371495WARM25
22Alexander BlockxBEL1730.518201508WARM37
23Jakub MensikCZE1730.118251497WARM17
24Toby SamuelGBR1728.817091709WARM150
25Learner TienUSA1727.218471506NEUTRAL19
WTA top 25
RkPlayerCtyCompELOGRASSFormOff rk
1Aryna SabalenkaBLR1963.920891588WARM1
2Elena RybakinaKAZ1925.920401580WARM2
3Alexandra ShubladzeRUS1898.618791879WARM184
4Jeline VandrommeBEL1883.018631863WARM176
5Jessica PegulaUSA1881.719791583WARM4
6Iga SwiatekPOL1876.419571658NEUTRAL3
7Elina SvitolinaUKR1869.319961550WARM8
8Lisa PigatoITA1866.518461846WARM132
9Mirra AndreevaRUS1861.019951513WARM6
10Coco GauffUSA1850.819801519WARM7
11Akasha UrhoboUSA1843.418231823WARM180
12Tyra Caterina GrantUSA1840.518201820WARM157
13Dayeon BackKOR1825.718061806WARM279
14Kaitlin QuevedoUSA1824.718251825NEUTRAL107
15Victoria MbokoCAN1815.119371515WARM9
16Laura SamsonCZE1810.318101810NEUTRAL137
17Alice TubelloFRA1810.117901790WARM222
18Belinda BencicSUI1804.319041561WARM11
19Carol Young Suh LeePOC1801.317811781WARM192
20Jennifer RuggeriITA1801.117811781WARM213
21Marta KostyukUKR1800.219591449WARM12
22Anastasia ZolotarevaRUS1798.017781778WARM233
23Kristina LiutovaRUS1796.517771777WARM229
24Luisina GiovanniniARG1793.418431843RETURNING173
25Angela Fita BoludaESP1793.217731773WARM195

Surface specialists · Δ ELO (surface − overall, top 5 per surface)

Positive Δ = plays meaningfully better than overall game on this surface. Min 10 matches on the surface, top 200 rank.

CLAY

ATP
Zdenek Kolar+28
rk 162 · form NEUTRAL
Gustavo Heide+25
rk 182 · form RETURNING
Jan Choinski+20
rk 105 · form COLD
Juan Carlos Prado Angelo+19
rk 161 · form RETURNING
Gonzalo Bueno+18
rk 180 · form RETURNING
WTA
Katarzyna Kawa+26
rk 143 · form HOT
Despina Papamichail+8
rk 168 · form NEUTRAL
Teodora Kostovic+5
rk 182 · form NEUTRAL
Anna Bondar+5
rk 75 · form WARM
Simona Waltert-3
rk 90 · form WARM

GRASS

ATP
Shintaro Mochizuki+55
rk 129 · form RETURNING
Nicolas Jarry+29
rk 189 · form RETURNING
Billy Harris+26
rk 144 · form COLD
Adrian Mannarino+19
rk 46 · form COLD
Roberto Bautista Agut-25
rk 116 · form COLD
WTA
Tatjana Maria-18
rk 52 · form NEUTRAL
Beatriz Haddad Maia-64
rk 108 · form COLD
Viktoriya Tomova-107
rk 167 · form NEUTRAL
Ajla Tomljanovic-111
rk 109 · form NEUTRAL
Xin Yu Wang-127
rk 31 · form NEUTRAL

HARD

ATP
Hugo Gaston+46
rk 119 · form WARM
Luca Van Assche+36
rk 98 · form WARM
Toby Samuel+30
rk 150 · form WARM
Gauthier Onclin+6
rk 186 · form HOT
Clement Chidekh+5
rk 200 · form NEUTRAL
WTA
Talia Gibson+54
rk 63 · form HOT
Hanne Vandewinkel+51
rk 97 · form HOT
Xiaodi You+1
rk 170 · form WARM
Kimberly Birrell-6
rk 74 · form WARM
Victoria Jimenez Kasintseva-7
rk 124 · form WARM

INDOOR

WTA
Linda Klimovicova-124
rk 165 · form NEUTRAL
Kimberly Birrell-177
rk 74 · form NEUTRAL
Ye Xin Ma-178
rk 189 · form WARM
Carole Monnet-194
rk 191 · form NEUTRAL
Elvina Kalieva-210
rk 135 · form WARM

Cheat sheet — today's filtered top edges

Filters applied: no model_claim flag, no longshot_insufficient_edge, ask 5–95¢, |edge| ≤ 30pp. These are the "cleanest" candidates the system would surface if gates were loosened.

Top Kalshi edges

1Marco CecchinatoELITE_LOW_N
Marco Cecchinato vs Marcelo Tomas Barrios Vera on hard — model 45% vs market 15% (+30.0pp). ELITE_LOW_N, ask 15¢.
2Andres AndradeELITE_LOW_N
Andres Andrade vs Colton Smith on hard — model 49% vs market 20% (+29.4pp). ELITE_LOW_N, ask 20¢. Form: Andres Andra=COLD | Colton Smith=WARM.
3Gonzalo BuenoSTRONG_LOW_N
Gonzalo Bueno vs Jerome Kym on hard — model 45% vs market 16% (+29.0pp). STRONG_LOW_N, ask 16¢.
4Adam WaltonELITE_LOW_N
Adam Walton vs Nick Kyrgios on hard — model 64% vs market 93% (+-28.5pp). ELITE_LOW_N, ask 93¢.
5Florent BaxELITE_LOW_N
Florent Bax vs Chris Rodesch on hard — model 45% vs market 17% (+28.0pp). ELITE_LOW_N, ask 17¢.

Top PrizePicks edges

1Martin LandaluceELITE_LOW_N
Martin Landaluce LESS 0.5 Total Tie Breaks vs Jan-Lennard Struff — proj 0.2 (+50.0% edge). Surface: clay.
2Rei SakamotoELITE_LOW_N
Rei Sakamoto LESS 0.5 Total Tie Breaks vs Anton Matusevich — proj 0.2 (+49.9% edge). Surface: clay.
3Jack DraperSTRONG_LOW_N
Jack Draper LESS 0.5 Total Tie Breaks vs Brandon Nakashima — proj 0.2 (+49.9% edge). Surface: clay.

Fade signals

Clara TausonRETURNINGRETURNING form tag — fade or fade-against.
Gabriel DialloCOLDCOLD form tag — fade or fade-against.
Raphael CollignonRETURNINGRETURNING form tag — fade or fade-against.
Maya JointRETURNINGRETURNING form tag — fade or fade-against.
Antonia RuzicCOLDCOLD form tag — fade or fade-against.
Francisco ComesanaCOLDCOLD form tag — fade or fade-against.

Calibration — predicted vs actual (10pp buckets)

If the model is well-calibrated, gap is ≈ 0 in every bucket. Green = within 5pp, amber within 10pp, red > 10pp.
BucketnPredicted meanActual rateGap (pp)
0.2–0.30200.2830.350+6.68
0.3–0.401540.3580.279-7.93
0.4–0.505210.4510.432-1.95
0.5–0.604870.5450.495-4.99
0.6–0.701240.6400.581-5.98
0.7–0.80140.7180.857+13.93
0.8–0.9010.8231.000+17.68

Where it bleeds — market price bucket (FLB signal)

The favorite-longshot bias hits hardest in the 30-50% market price bucket. Shadow-graded picks at $2 stakes.
Mkt PnWin rateP&L @ $2Mean CLV (pp)
<10%920.100$107.2232.53
10-30%6090.223$32.4421.47
30-50%7540.334$-129.8311.79
50-70%1920.541$-6.916.21
70-90%550.472$-29.213.48
>90%1000.585$-47.421.92

Where it bleeds — edge bucket

EdgenWin rateP&L @ $2
0-2pp1430.330$-59.68
2-4pp1130.384$-31.07
4-8pp2220.434$-8.84
8-15pp3310.362$-7.95
15-30pp6350.287$178.84
30pp+3580.258$-145.00
All data CA-legal (Kalshi + PrizePicks). Predictions are research-only, paper-trade until CLV vs Pinnacle proves real edge.
Built from tennis_* JSON artifacts. Live tactical dashboard →