Kalshi KXATPMATCH 2m · 1792rKalshi KXWTAMATCH 2m · 1688rKalshi KXFRENCHOPEN 2mKalshi KXFOPENMENSINGLE 2mKalshi KXATPGRANDSLAM 2m · 14rKalshi KXUSOPEN 2mKalshi KXATPSETWINNER 2m · 3562rKalshi KXATPTOTALSETS 2mKalshi KXATPSETSWEEP 2mKalshi KXATPGAMESPREAD 2mKalshi KXATPEXACTMATCH 2m · 1060rKalshi KXWTADOUBLES 2mKalshi KXATP1RANK 2m · 16relo last computed 2m · 20051rrankings last pulled 2m · 3745rrankings atp latest date 17drankings wta latest date 17dmirror atp schedule 0m · 312rh2h last computed 4dh2h n pairs missinglast player db run missingresults last_run missingpp_edges CSV 0mkalshi edges JSON 0mpaper trades PP 0mpaper trades Kalshi 0mdaily payload 0mPP movement 0mPP calibration 0m
Matches today
22
scheduled
ELITE edges
0
across Kalshi + PP
STRONG edges
0
tier 2
MED edges
0
tier 3
Paper locks
4
Kalshi + PP
Real Money YTD
-$10.00
paper-gate restored
Qualifying skipped
22
filtered out today
Last refresh
13:11
2026-05-21 UTC
🏆 Best Bet (main-draw)
No main-draw Kalshi pick survived qualifying filter today.
🎯 Safest (P ≥ 65%)
Shuai Zhang
70%
Heavy main-draw favorite · PAPER
Edge +44.2pp
Ask 26¢
Ask 26¢
💎 Biggest Payout (ELITE)
No ELITE main-draw longshot today.
| # | Match | Tournament | Round | Surface | Start | ELO A | ELO B | ELO diff | Kalshi event |
|---|---|---|---|---|---|---|---|---|---|
| 1 | Jaqueline Cristian vs Daria Kasatkina | Internationaux de Strasbourg presented by Mammotion | Quarterfinal | clay | May 21 10:40 | 1635 | 1639 | -4 | KXWTAMATCH-26MAY21CRIKAS |
| 2 | ? vs Sofia Costoulas | Roland Garros | Qualifying Final | clay | May 21 11:20 | — | 1665 | — | |
| 3 | ? vs Sofia Costoulas | Roland Garros | Qualifying Final | clay | May 21 11:20 | — | 1665 | — | |
| 4 | Petra Marcinko vs Jessica Bouzas Maneiro | Grand Prix Son Altesse Royale La Princesse Lalla Meryem | Quarterfinal | clay | May 21 12:00 | 1723 | 1643 | +80 | KXWTAMATCH-26MAY21MARBOU |
| 5 | Chak Lam Coleman Wong vs Juan Carlos Prado Angelo | Roland Garros | Qualifying Final | clay | May 21 12:20 | 1484 | 1693 | -209 | KXATPMATCH-26MAY21WONPRA |
| 6 | Chak Lam Coleman Wong vs Juan Carlos Prado Angelo | Roland Garros | Qualifying Final | clay | May 21 12:20 | 1484 | 1693 | -209 | KXATPMATCH-26MAY21WONPRA |
| 7 | Alexei Popyrin vs Casper Ruud | Gonet Geneva Open | Quarterfinal | clay | May 21 13:00 | 1547 | 1744 | -197 | KXATPSETWINNER-26MAY21POPRUU-1 |
| 8 | Jaime Faria vs Lukas Neumayer | Roland Garros | Qualifying Final | clay | May 21 13:10 | 1660 | 1639 | +21 | KXATPMATCH-26MAY21FARNEU |
| 9 | Jaime Faria vs Lukas Neumayer | Roland Garros | Qualifying Final | clay | May 21 13:10 | 1660 | 1639 | +21 | KXATPMATCH-26MAY21FARNEU |
| 10 | Tommy Paul vs Daniel Altmaier | Bitpanda Hamburg Open | Quarterfinal | clay | May 21 13:15 | 1748 | 1610 | +138 | KXATPSETWINNER-26MAY21PAUALT-2 |
| 11 | Alina Korneeva vs Julia Riera | Roland Garros | Qualifying Final | clay | May 21 13:15 | 1466 | 1664 | -197 | KXWTAMATCH-26MAY21KORRIE |
| 12 | Alina Korneeva vs Julia Riera | Roland Garros | Qualifying Final | clay | May 21 13:15 | 1466 | 1664 | -197 | KXWTAMATCH-26MAY21KORRIE |
| 13 | Ashlyn Krueger vs Mary Stoiana | Roland Garros | Qualifying Final | clay | May 21 13:20 | 1511 | 1620 | -108 | KXWTAMATCH-26MAY21KRUSTO |
| 14 | Ashlyn Krueger vs Mary Stoiana | Roland Garros | Qualifying Final | clay | May 21 13:20 | 1511 | 1620 | -108 | KXWTAMATCH-26MAY21KRUSTO |
| 15 | Anhelina Kalinina vs Anna Bondar | Grand Prix Son Altesse Royale La Princesse Lalla Meryem | Quarterfinal | clay | May 21 13:25 | 1767 | 1803 | -36 | KXWTAMATCH-26MAY21KALBON |
| 16 | ? vs Emma Navarro | Internationaux de Strasbourg presented by Mammotion | Quarterfinal | clay | May 21 13:25 | — | 1578 | — | |
| 17 | Jil Teichmann vs Yasmine Kabbaj | Grand Prix Son Altesse Royale La Princesse Lalla Meryem | Quarterfinal | clay | May 21 14:00 | 1645 | 1616 | +29 | KXWTAMATCH-26MAY21TEIKAB |
| 18 | Aleksandar Kovacevic vs Camilo Ugo Carabelli | Bitpanda Hamburg Open | Quarterfinal | clay | May 21 14:30 | 1447 | 1721 | -274 | KXATPMATCH-26MAY21KOVUGO |
| 19 | Victoria Mboko vs Leylah Fernandez | Internationaux de Strasbourg presented by Mammotion | Quarterfinal | clay | May 21 15:30 | 1704 | 1590 | +113 | KXWTAMATCH-26MAY21MBOFER |
| 20 | Alex Michelsen vs Learner Tien | Gonet Geneva Open | Quarterfinal | clay | May 21 16:00 | 1488 | 1466 | +23 | KXATPSETWINNER-26MAY21MICTIE-1 |
| 21 | Luciano Darderi vs Alex De Minaur | Bitpanda Hamburg Open | Quarterfinal | clay | May 21 16:00 | 1767 | 1652 | +115 | KXATPSETWINNER-26MAY21DARDE-2 |
| 22 | Arthur Rinderknech vs Alexander Bublik | Gonet Geneva Open | Quarterfinal | clay | May 21 17:30 | 1566 | 1724 | -159 | KXATPMATCH-26MAY21RINBUB |
| # | Match | Our pick | Our P | Mkt P | Ask | Edge | Tier | Decision | Vol 24h | Surface | Round | EV/$ |
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Shuai Zhang vs Emma Navarro | Shuai Zhang | 70.2% | 26.0% | 26¢ | +44.2pp | LOW | PAPER | 10897 | hard | Quarterfinal | +0.442 |
| 2 | Sofia Costoulas vs Hanyu Guo Qual | Sofia Costoulas | 52.5% | 14.0% | 14¢ | +38.5pp | LOW | SKIP | 87703 | hard | Qualification Final | +0.385 |
| 3 | Yasmine Kabbaj vs Jil Teichmann | Yasmine Kabbaj | 52.0% | 18.0% | 18¢ | +34.0pp | LOW | PAPER | 2601 | clay | Quarterfinal | +0.340 |
| 4 | Daria Kasatkina vs Jaqueline Cristian | Daria Kasatkina | 55.2% | 23.0% | 23¢ | +32.2pp | LOW | PAPER | 625101 | clay | Quarterfinal | +0.323 |
| 5 | Marina Bassols Ribera vs Aliaksandra Sasnovich Qual | Marina Bassols Ribera | 54.4% | 26.0% | 26¢ | +28.4pp | LOW | PAPER | 98 | clay | Qualifying Final | +0.284 |
| 6 | Rebecca Sramkova vs Maria Carle Qual | Maria Carle | 54.1% | 29.0% | 29¢ | +25.1pp | LOW | PAPER | 7 | clay | Qualifying Final | +0.251 |
| 7 | Tom Gentzsch vs Roman Safiullin Qual | Tom Gentzsch | 49.3% | 25.0% | 25¢ | +24.3pp | LOW | PAPER | 1257 | hard | Qualification Final | +0.243 |
| 8 | Ashlyn Krueger vs Mary Stoiana Qual | Mary Stoiana | 55.0% | 31.0% | 31¢ | +24.0pp | LOW | PAPER | 5471 | clay | Qualifying Final | +0.240 |
| 9 | Coleman Wong vs Juan Carlos Prado Angelo Qual | Coleman Wong | 45.0% | 22.0% | 22¢ | +23.0pp | LOW | PAPER | 111508 | clay | Qualifying Final | +0.230 |
| 10 | Leandro Riedi vs Pierre-Hugues Herbert Qual | Pierre-Hugues Herbert | 45.0% | 27.0% | 27¢ | +18.0pp | LOW | PAPER | 832 | hard | Qualification Final | +0.180 |
| 11 | Hugo Dellien vs Roberto Carballes Baena Qual | Roberto Carballes Baena | 54.8% | 38.0% | 38¢ | +16.8pp | LOW | PAPER | 873 | hard | Qualification Final | +0.167 |
| 12 | Darwin Blanch vs Luka Pavlovic Qual | Luka Pavlovic | 54.0% | 38.0% | 38¢ | +16.0pp | LOW | PAPER | 997 | clay | Qualifying Final | +0.160 |
| 13 | Emilio Nava vs Pedro Martinez Qual | Pedro Martinez | 50.7% | 35.0% | 35¢ | +15.7pp | LOW | PAPER | 2540 | hard | Qualification Final | +0.157 |
| 14 | Alina Korneeva vs Julia Riera Qual | Julia Riera | 58.6% | 43.0% | 43¢ | +15.6pp | LOW | PAPER | 3564 | clay | Qualifying Final | +0.156 |
| 15 | Lucia Bronzetti vs Katarina Zavatska Qual | Katarina Zavatska | 55.0% | 43.0% | 43¢ | +12.0pp | LOW | PAPER | 29 | clay | Qualifying Final | +0.120 |
| 16 | Linda Fruhvirtova vs Harmony Tan Qual | Harmony Tan | 50.2% | 39.0% | 39¢ | +11.2pp | LOW | PAPER | 108 | clay | Qualifying Final | +0.112 |
| 17 | Alex de Minaur vs Luciano Darderi | Alex de Minaur | 64.7% | 54.0% | 54¢ | +10.7pp | LOW | PAPER | 26650 | hard | Quarterfinal | +0.107 |
| 18 | Jessica Bouzas Maneiro vs Petra Marcinko | Jessica Bouzas Maneiro | 43.6% | 33.0% | 33¢ | +10.6pp | LOW | PAPER | 60482 | clay | Quarterfinal | +0.106 |
| 19 | Pablo Llamas Ruiz vs Vilius Gaubas Qual | Vilius Gaubas | 45.3% | 35.0% | 35¢ | +10.3pp | LOW | PAPER | 6768 | clay | Qualifying Final | +0.103 |
| 20 | Borna Gojo vs Jurij Rodionov Qual | Borna Gojo | 54.4% | 46.0% | 46¢ | +8.4pp | LOW | PAPER | 1550 | hard | Qualification Final | +0.084 |
| 21 | Casper Ruud vs Alexei Popyrin | Alexei Popyrin | 35.0% | 28.0% | 28¢ | +7.0pp | LOW | PAPER | 131233 | hard | Quarterfinal | +0.070 |
| 22 | Felix Gill vs Kyrian Jacquet Qual | Felix Gill | 52.8% | 46.0% | 46¢ | +6.8pp | LOW | PAPER | 3845 | clay | Qualifying Final | +0.068 |
| 23 | Anhelina Kalinina vs Anna Bondar | Anna Bondar | 52.6% | 46.0% | 46¢ | +6.6pp | LOW | PAPER | 12732 | clay | Quarterfinal | +0.066 |
| 24 | Guiomar Maristany Zuleta de Reales vs Kaitlin Quevedo Qual | Guiomar Maristany Zuleta de Reales | 52.7% | 48.0% | 48¢ | +4.7pp | LOW | PAPER | 1154 | clay | Qualifying Final | +0.047 |
| 25 | Alexander Bublik vs Arthur Rinderknech | Arthur Rinderknech | 43.6% | 39.0% | 39¢ | +4.6pp | LOW | PAPER | 10827 | clay | Quarterfinal | +0.046 |
| 26 | Alexis Galarneau vs Federico Cina Qual | Federico Cina | 49.4% | 46.0% | 46¢ | +3.4pp | LOW | PAPER | 236974 | hard | Qualification Final | +0.034 |
| 27 | Xiyu Wang vs Polina Kudermetova Qual | Polina Kudermetova | 45.0% | 42.0% | 42¢ | +3.0pp | LOW | PAPER | 180 | hard | Qualification Final | +0.030 |
| 28 | Lulu Sun vs Claire Liu Qual | Lulu Sun | 41.4% | 39.0% | 39¢ | +2.4pp | LOW | PAPER | 212 | clay | Qualifying Final | +0.024 |
| 29 | Jaime Faria vs Lukas Neumayer Qual | Jaime Faria | 51.3% | 49.0% | 49¢ | +2.3pp | LOW | PAPER | 14642 | clay | Qualifying Final | +0.023 |
| 30 | Victoria Mboko vs Leylah Fernandez | Leylah Fernandez | 41.2% | 39.0% | 39¢ | +2.2pp | LOW | PAPER | 30891 | clay | Quarterfinal | +0.022 |
| 31 | Susan Bandecchi vs Viktoria Hruncakova Qual | Viktoria Hruncakova | 45.0% | 43.0% | 43¢ | +2.0pp | LOW | SKIP | 78 | clay | Qualifying Final | +0.020 |
| 32 | Tommy Paul vs Daniel Altmaier | Tommy Paul | 68.1% | 69.0% | 69¢ | -0.9pp | LOW | SKIP | 103040 | hard | Quarterfinal | -0.009 |
| 33 | Camilo Ugo Carabelli vs Aleksandar Kovacevic | Camilo Ugo Carabelli | 70.1% | 71.0% | 71¢ | -0.9pp | LOW | SKIP | 14427 | clay | Quarterfinal | -0.009 |
| 34 | Learner Tien vs Alex Michelsen | Learner Tien | 49.7% | 50.0% | 50¢ | -0.3pp | LOW | SKIP | 19010 | hard | Quarterfinal | -0.003 |
| # | Player | Stat | PP line | Our proj | Edge % | Side | Tier | Opp | Surface | Demon | Payout |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Luciano Darderi🟨 WARM | Aces | 2.5 | 6.36 | +154.4% | MORE | LOW | Alex de Minaur | clay | — | 0.5x |
| 2 | Alexander Bublik🧊 COLD | Total Tie Breaks | 0.5 | 0.12 | +75.4% | LESS | LOW | Arthur Rinderknech | clay | — | 1.0x |
| 3 | Alex Michelsen🧊 COLD | Aces | 3.5 | 6.11 | +74.6% | MORE | LOW | Learner Tien | clay | — | 0.5x |
| 4 | Aleksandar Kovacevic🧊 COLD | Aces | 3.5 | 5.59 | +59.8% | MORE | LOW | Camilo Ugo Carabelli | clay | — | 0.5x |
| 5 | Leylah Fernandez🟨 WARM | Break Points Won | 3.0 | 4.55 | +51.5% | MORE | LOW | Victoria Mboko | clay | — | 1.0x |
| 6 | Yasmine Kabbaj | Total Games Won | 8.0 | 10.28 | +28.5% | MORE | LOW | Jil Teichmann | clay | — | 0.5x |
| 7 | Arthur Rinderknech | Aces | 8.5 | 6.23 | +26.6% | LESS | LOW | Alexander Bublik | clay | — | 0.5x |
| 8 | Aleksandar Kovacevic🧊 COLD | Total Games Won | 11.5 | 8.47 | +26.4% | LESS | LOW | Camilo Ugo Carabelli | clay | — | 0.5x |
| 9 | Jil Teichmann🧊 COLD | Total Games | 19.5 | 24.51 | +25.7% | MORE | LOW | Yasmine Kabbaj | clay | — | 0.5x |
| 10 | Camilo Ugo Carabelli | Break Points Won | 3.0 | 3.70 | +23.2% | MORE | LOW | Aleksandar Kovacevic | clay | — | 1.0x |
| 11 | Yasmine Kabbaj | Double Faults | 3.5 | 4.24 | +21.0% | MORE | LOW | Jil Teichmann | clay | — | 0.5x |
| 12 | Daniel Altmaier | Total Games Won | 12.0 | 9.62 | +19.9% | LESS | LOW | Tommy Paul | clay | — | 0.5x |
| 13 | Rebecca Sramkova | Total Games | 20.5 | 24.57 | +19.9% | MORE | LOW | Maria Carle | clay | — | 0.5x |
| 14 | Aliaksandra Sasnovich | Total Games | 20.5 | 24.34 | +18.7% | MORE | LOW | Marina Bassols Ribera | clay | — | 0.5x |
| 15 | Ashlyn Krueger | Total Games | 20.5 | 24.09 | +17.5% | MORE | LOW | Mary Stoiana | clay | — | 0.5x |
| 16 | Roman Safiullin🟨 WARM | Total Games | 21.5 | 25.19 | +17.1% | MORE | LOW | Tom Gentzsch | clay | — | 0.5x |
| 17 | Pablo Llamas Ruiz🟨 WARM | Total Games | 21.5 | 25.18 | +17.1% | MORE | LOW | Vilius Gaubas | clay | — | 0.5x |
| 18 | Leandro Riedi🟨 WARM | Total Games | 21.5 | 25.16 | +17.0% | MORE | LOW | Pierre-Hugues Herbert | clay | — | 0.5x |
| 19 | Lukas Neumayer🟨 WARM | Total Games Won | 12.5 | 10.37 | +17.0% | LESS | LOW | Jaime Faria | clay | — | 1.0x |
| 20 | Borna Gojo🟨 WARM | Total Games Won | 12.5 | 10.38 | +17.0% | LESS | LOW | Jurij Rodionov | clay | — | 1.0x |
| 21 | Vilius Gaubas | Total Games Won | 12.0 | 10.06 | +16.1% | LESS | LOW | Pablo Llamas Ruiz | clay | — | 1.0x |
| 22 | Emilio Nava | Total Games | 21.5 | 24.94 | +16.0% | MORE | LOW | Pedro Martinez | clay | — | 0.5x |
| 23 | Jurij Rodionov🟨 WARM | Total Games Won | 12.5 | 10.54 | +15.6% | LESS | LOW | Borna Gojo | clay | — | 1.0x |
| 24 | Victoria Mboko🟨 WARM | Break Points Won | 4.5 | 5.20 | +15.6% | MORE | LOW | Leylah Fernandez | clay | — | 1.0x |
| 25 | Jaime Faria🟨 WARM | Total Games Won | 12.5 | 10.58 | +15.4% | LESS | LOW | Lukas Neumayer | clay | — | 1.0x |
| 26 | Emma Navarro⏳ RTRN | Break Points Won | 4.5 | 5.17 | +14.9% | MORE | LOW | Shuai Zhang | clay | — | 1.0x |
| 27 | Marina Bassols Ribera🟨 WARM | Total Games Won | 9.5 | 10.91 | +14.8% | MORE | LOW | Aliaksandra Sasnovich | clay | — | 1.0x |
| 28 | Emma Navarro⏳ RTRN | Aces | 2.5 | 2.85 | +14.1% | MORE | LOW | Shuai Zhang | clay | — | 0.5x |
| 29 | Aliaksandra Sasnovich | Break Points Won | 5.5 | 4.73 | +14.0% | LESS | LOW | Marina Bassols Ribera | clay | — | 1.0x |
| 30 | Hugo Dellien⏳ RTRN | Total Games | 21.5 | 24.49 | +13.9% | MORE | LOW | Roberto Carballes Baena | clay | — | 0.5x |
| 31 | Linda Fruhvirtova🧊 COLD | Total Games | 21.5 | 24.49 | +13.9% | MORE | LOW | Harmony Tan | clay | — | 0.5x |
| 32 | Anhelina Kalinina🟨 WARM | Total Games | 21.5 | 24.42 | +13.6% | MORE | LOW | Anna Bondar | clay | — | 0.5x |
| 33 | Claire Liu🟨 WARM | Total Games | 21.5 | 24.30 | +13.0% | MORE | LOW | Lulu Sun | clay | — | 0.5x |
| 34 | Jil Teichmann🧊 COLD | Break Points Won | 5.5 | 4.79 | +12.9% | LESS | LOW | Yasmine Kabbaj | clay | — | 1.0x |
| 35 | Roberto Carballes Baena⏳ RTRN | Total Games Won | 11.5 | 10.05 | +12.6% | LESS | LOW | Hugo Dellien | clay | — | 1.0x |
| 36 | Roman Safiullin🟨 WARM | Total Games Won | 12.5 | 10.95 | +12.4% | LESS | LOW | Tom Gentzsch | clay | — | 1.0x |
| 37 | Learner Tien🧊 COLD | Total Games | 22.5 | 25.28 | +12.3% | MORE | LOW | Alex Michelsen | clay | — | 0.5x |
| 38 | Jaime Faria🟨 WARM | Total Games | 22.5 | 25.22 | +12.1% | MORE | LOW | Lukas Neumayer | clay | — | 0.5x |
| 39 | Darwin Blanch🟨 WARM | Total Games | 22.5 | 25.17 | +11.9% | MORE | LOW | Luka Pavlovic | clay | — | 0.5x |
| 40 | Susan Bandecchi🟨 WARM | Total Games | 21.5 | 24.03 | +11.8% | MORE | LOW | Viktoria Hruncakova | clay | — | 0.5x |
| 41 | Aleksandar Kovacevic🧊 COLD | Break Points Won | 2.5 | 2.74 | +9.5% | MORE | LOW | Camilo Ugo Carabelli | clay | — | 1.0x |
| 42 | Alexander Bublik🧊 COLD | Aces | 6.5 | 5.95 | +8.4% | LESS | LOW | Arthur Rinderknech | clay | — | 0.5x |
| 43 | Alina Korneeva🧊 COLD | Total Games | 21.5 | 23.23 | +8.0% | MORE | LOW | Julia Riera | clay | — | 0.5x |
| 44 | Lucia Bronzetti | Total Games | 21.5 | 23.08 | +7.4% | MORE | LOW | Katarina Zavatska | clay | — | 0.5x |
| 45 | Shuai Zhang🧊 COLD | Total Games Won | 10.0 | 10.72 | +7.2% | MORE | LOW | Emma Navarro | clay | — | 0.5x |
| 46 | Kyrian Jacquet⏳ RTRN | Total Games | 23.5 | 25.17 | +7.1% | MORE | LOW | Felix Gill | clay | — | 0.5x |
| 47 | Borna Gojo🟨 WARM | Total Games | 23.5 | 25.12 | +6.9% | MORE | LOW | Jurij Rodionov | clay | — | 0.5x |
| 48 | Julia Riera🟨 WARM | Break Points Won | 5.0 | 5.34 | +6.8% | MORE | LOW | Alina Korneeva | clay | — | 1.0x |
| 49 | Victoria Mboko🟨 WARM | Double Faults | 4.5 | 4.24 | +5.9% | LESS | LOW | Leylah Fernandez | clay | — | 1.0x |
| 50 | Tom Gentzsch🟨 WARM | Total Games Won | 9.5 | 10.05 | +5.8% | MORE | LOW | Roman Safiullin | clay | — | 1.0x |
| 51 | Mary Stoiana🟨 WARM | Total Games Won | 10.5 | 10.95 | +4.3% | MORE | LOW | Ashlyn Krueger | clay | — | 1.0x |
| 52 | Alexander Bublik🧊 COLD | Total Games | 23.5 | 24.49 | +4.2% | MORE | LOW | Arthur Rinderknech | clay | — | 0.5x |
| 53 | Camilo Ugo Carabelli | Total Games Won | 12.5 | 12.10 | +3.2% | LESS | LOW | Aleksandar Kovacevic | clay | — | 0.5x |
Kalshi tennis — 2 picks · $4.00 staked
Day 1 - paper only, grade EOD before scaling · locked 2026-05-21T13:10:45.965796+00:00
| # | Match | Pick | Our P | Ask | Edge | Tier | Surface | Stake | Status | P&L |
|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Coleman Wong vs Juan Carlos Prado Angelo | Coleman Wong | 45.0% | 22¢ | 23.0pp | ELITE | clay | $2.00 | OPEN | +0.00 |
| 2 | Leandro Riedi vs Pierre-Hugues Herbert | Pierre-Hugues Herbert | 45.0% | 27¢ | 18.0pp | ELITE | hard | $2.00 | OPEN | +0.00 |
PrizePicks tennis — 2 picks · $2.00 staked
Day 1 - paper only, grade EOD before scaling · locked 2026-05-21T13:10:45.902879+00:00
| # | Player | Stat | Line | Our proj | Side | Edge | Tier | Surface | Stake | Status | P&L |
|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | Leandro Riedi | Total Games | 21.5 | 25.16 | MORE | 17.0% | ELITE | clay | $1.00 | OPEN | +0.00 |
| 2 | Shuai Zhang | Total Games Won | 10.0 | 10.72 | MORE | 7.2% | MED | clay | $1.00 | OPEN | +0.00 |
Polymarket = retail/crypto sentiment. We can't bet there from CA, but the divergence vs Kalshi (sharp) reveals where the public is loading up. Generated 2026-05-21T06:10:58 · flagged threshold = ±3.0pp · 1 flagged futures / 0 flagged matches.
Grand-slam futures · ANY 2026 Slam (Kalshi KXATPGRANDSLAM vs Polymarket per-slam aggregate)
Polymarket "any-slam" probability computed naively as
1 - product(1 - p_slam). Positive divergence = public (Polymarket) more bullish than sharp (Kalshi). Sorted by |divergence|.| Player | Sharp (Kalshi) | Public (Poly) | Δ | Poly per-slam |
|---|---|---|---|---|
| Novak Djokovic · exact | 12.5% | 18.6% | +6.1pp · PUBLIC HIGHER | Fre 6%, Wim 10%, US 4% |
| Lorenzo Musetti · exact | 4.5% | 1.6% | -2.9pp · SHARP HIGHER | Fre 0%, Wim 1%, US 1% |
| Ben Shelton · exact | 4.5% | 7.2% | +2.7pp · PUBLIC HIGHER | Fre 1%, Wim 3%, US 4% |
| Alexander Zverev · exact | 12.0% | 14.5% | +2.5pp · PUBLIC HIGHER | Fre 7%, Wim 4%, US 4% |
| Daniil Medvedev · exact | 8.0% | 5.8% | -2.2pp · SHARP HIGHER | Fre 2%, Wim 2%, US 2% |
| Alex de Minaur · exact | 3.0% | 1.4% | -1.6pp · SHARP HIGHER | Fre 1%, Wim 1% |
| Felix Auger-Aliassime · exact | 2.0% | 0.5% | -1.5pp · SHARP HIGHER | Wim 1% |
| Karen Khachanov · exact | 2.0% | 0.7% | -1.3pp · SHARP HIGHER | Fre 0%, Wim 1% |
| Jannik Sinner · exact | 94.0% | 95.1% | +1.1pp · PUBLIC HIGHER | Fre 70%, Wim 66%, US 52% |
| Alexander Bublik · exact | 3.0% | 1.9% | -1.1pp · SHARP HIGHER | Fre 0%, Wim 0%, US 1% |
| Jack Draper · exact | 4.5% | 5.5% | +1.0pp · PUBLIC HIGHER | Fre 0%, Wim 3%, US 3% |
| Frances Tiafoe · exact | 0.5% | 1.4% | +0.9pp · PUBLIC HIGHER | Fre 0%, Wim 0%, US 1% |
| Taylor Fritz · exact | 4.5% | 5.0% | +0.5pp · PUBLIC HIGHER | Fre 1%, Wim 3%, US 2% |
| Casper Ruud · exact | 3.5% | 3.4% | -0.1pp · SHARP HIGHER | Fre 3%, Wim 0% |
Per-match overlaps
No active per-match overlaps right now (Polymarket tennis volume concentrates in Grand Slam futures).
Per-stat-type MAE (n_graded=17)
Bar width = MAE (lower = better). "INSUFFICIENT" = need more graded picks.
Total Games
n=4
Ours
PP
Us 6.45
PP 3.25
INSUFFICIENT_N
PP 3.25
INSUFFICIENT_N
Total Games Won
n=12
Ours
PP
Us 4.93
PP 4.50
NULL
PP 4.50
NULL
Total Tie Breaks
n=1
Ours
PP
Us 0.25
PP 0.50
INSUFFICIENT_N
PP 0.50
INSUFFICIENT_N
Per-tier MAE
Bar width = MAE (lower = better). "INSUFFICIENT" = need more graded picks.
ELITE
n=16
Ours
PP
Us 4.94
PP 3.75
NULL
PP 3.75
NULL
MED
n=0
Ours
PP
Us —
PP —
INSUFFICIENT_N
PP —
INSUFFICIENT_N
STRONG
n=1
Ours
PP
Us 6.23
PP 7.50
INSUFFICIENT_N
PP 7.50
INSUFFICIENT_N
No AAR available yet.
Expected:
Expected:
~/.claude/projects/.../memory/aar_tennis_<date>.mdNo actionable PP line movement yet.
Expected:
Expected:
pp_line_movement_tennis_2026-05-21.csv. Needs at least 2 PP snapshots in pp_snapshots_tennis/.ATP top 50
| Rk | Player | Country | Pts | ELO overall | ELO clay | ELO grass | ELO hard |
|---|---|---|---|---|---|---|---|
| 1 | Jannik Sinner | ITA | 14350 | 2175 | 1857 | 1695 | 2062 |
| 2 | Carlos Alcaraz | ESP | 12960 | 2070 | 1867 | 1717 | 1956 |
| 3 | Alexander Zverev | GER | 5805 | 1961 | 1816 | 1594 | 1863 |
| 4 | Novak Djokovic | SRB | 4700 | 1955 | 1738 | 1636 | 1846 |
| 5 | Felix Auger Aliassime | CAN | 4050 | 1864 | 1605 | 1517 | 1803 |
| 6 | Ben Shelton | USA | 4030 | 1848 | 1683 | 1561 | 1765 |
| 7 | Taylor Fritz | USA | 3770 | 1826 | 1581 | 1722 | 1749 |
| 8 | Alex De Minaur | AUS | 3755 | 1847 | 1652 | 1590 | 1806 |
| 9 | Daniil Medvedev | RUS | 3460 | 1878 | 1641 | 1585 | 1845 |
| 10 | Lorenzo Musetti | ITA | 3415 | 1828 | 1756 | 1607 | 1723 |
| 11 | Alexander Bublik | KAZ | 3355 | 1803 | 1724 | 1569 | 1703 |
| 12 | Flavio Cobolli | ITA | 2750 | 1796 | 1720 | 1557 | 1655 |
| 13 | Jiri Lehecka | CZE | 2715 | 1837 | 1647 | 1574 | 1754 |
| 14 | Andrey Rublev | RUS | 2590 | 1762 | 1658 | 1516 | 1683 |
| 15 | Karen Khachanov | RUS | 2220 | 1691 | 1586 | 1567 | 1639 |
| 16 | Valentin Vacherot | MON | 2147 | 1810 | 1702 | 1467 | 1738 |
| 17 | Arthur Fils | FRA | 2130 | 1912 | 1762 | 1546 | 1771 |
| 18 | Tommy Paul | USA | 1975 | 1842 | 1748 | 1587 | 1743 |
| 19 | Cameron Norrie | GBR | 1918 | 1776 | 1658 | 1529 | 1682 |
| 20 | Luciano Darderi | ITA | 1890 | 1714 | 1767 | 1466 | 1466 |
| 21 | Learner Tien | USA | 1870 | 1800 | 1466 | 1506 | 1789 |
| 22 | Frances Tiafoe | USA | 1865 | 1771 | 1604 | 1488 | 1719 |
| 23 | Alejandro Davidovich Fokina | ESP | 1820 | 1756 | 1572 | 1545 | 1703 |
| 24 | Arthur Rinderknech | FRA | 1736 | 1713 | 1566 | 1530 | 1631 |
| 25 | Casper Ruud | NOR | 1735 | 1792 | 1744 | 1502 | 1685 |
| 26 | Tomas Martin Etcheverry | ARG | 1660 | 1785 | 1693 | 1456 | 1636 |
| 27 | Francisco Cerundolo | ARG | 1620 | 1801 | 1726 | 1426 | 1698 |
| 28 | Jakub Mensik | CZE | 1600 | 1795 | 1589 | 1497 | 1747 |
| 29 | Joao Fonseca | BRA | 1435 | 1818 | 1638 | 1495 | 1795 |
| 30 | Corentin Moutet | FRA | 1413 | 1706 | 1600 | 1574 | 1640 |
| 31 | Tallon Griekspoor | NED | 1360 | 1681 | 1575 | 1564 | 1645 |
| 32 | Brandon Nakashima | USA | 1295 | 1706 | 1570 | 1590 | 1660 |
| 33 | Ugo Humbert | FRA | 1280 | 1712 | 1451 | 1517 | 1697 |
| 34 | Rafael Jodar | ESP | 1273 | 1874 | 1714 | — | 1765 |
| 35 | Alejandro Tabilo | CHI | 1248 | 1786 | 1696 | 1575 | 1637 |
| 36 | Alexander Blockx | BEL | 1200 | 1820 | 1689 | 1508 | 1713 |
| 37 | Denis Shapovalov | CAN | 1170 | 1690 | 1498 | 1472 | 1698 |
| 38 | Jaume Munar | ESP | 1155 | 1695 | 1563 | 1508 | 1635 |
| 39 | Zizou Bergs | BEL | 1140 | 1705 | 1570 | 1521 | 1631 |
| 40 | Holger Rune | DEN | 1110 | 1744 | 1663 | 1515 | 1710 |
| 41 | Tomas Machac | CZE | 1100 | 1737 | 1592 | 1500 | 1682 |
| 42 | Alex Michelsen | USA | 1090 | 1715 | 1488 | 1538 | 1702 |
| 43 | Sebastian Korda | USA | 1050 | 1806 | 1537 | 1556 | 1757 |
| 44 | Mariano Navone | ARG | 1046 | 1718 | 1716 | 1460 | 1507 |
| 45 | Adrian Mannarino | FRA | 1035 | 1589 | 1390 | 1584 | 1569 |
| 46 | Gabriel Diallo | CAN | 1000 | 1651 | 1554 | 1576 | 1615 |
| 47 | Marin Cilic | CRO | 980 | 1710 | 1539 | 1611 | 1635 |
| 48 | Ethan Quinn | USA | 977 | 1731 | 1594 | 1509 | 1683 |
| 49 | Fabian Marozsan | HUN | 975 | 1672 | 1566 | 1450 | 1608 |
| 50 | Jack Draper | GBR | 960 | 1806 | 1634 | 1594 | 1750 |
WTA top 50
| Rk | Player | Country | Pts | ELO overall | ELO clay | ELO grass | ELO hard |
|---|---|---|---|---|---|---|---|
| 1 | Aryna Sabalenka | BLR | 10110 | 2115 | 1808 | 1588 | 2045 |
| 2 | Elena Rybakina | KAZ | 8555 | 2063 | 1760 | 1580 | 1972 |
| 3 | Iga Swiatek | POL | 6948 | 1924 | 1780 | 1658 | 1852 |
| 4 | Coco Gauff | USA | 6749 | 1957 | 1787 | 1519 | 1871 |
| 5 | Jessica Pegula | USA | 6136 | 1997 | 1701 | 1583 | 1901 |
| 6 | Amanda Anisimova | USA | 5985 | 1916 | 1561 | 1638 | 1822 |
| 7 | Mirra Andreeva | RUS | 4181 | 1932 | 1800 | 1513 | 1797 |
| 8 | Jasmine Paolini | ITA | 3722 | 1815 | 1707 | 1585 | 1741 |
| 9 | Victoria Mboko | CAN | 3531 | 1936 | 1704 | 1515 | 1891 |
| 10 | Elina Svitolina | UKR | 3530 | 1922 | 1727 | 1550 | 1824 |
| 11 | Karolina Muchova | CZE | 3318 | 1951 | 1597 | 1494 | 1869 |
| 12 | Belinda Bencic | SUI | 3090 | 1898 | 1584 | 1561 | 1831 |
| 13 | Linda Noskova | CZE | 2999 | 1881 | 1589 | 1583 | 1763 |
| 14 | Ekaterina Alexandrova | RUS | 2669 | 1747 | 1593 | 1584 | 1662 |
| 15 | Marta Kostyuk | UKR | 2507 | 1924 | 1757 | 1449 | 1755 |
| 16 | Naomi Osaka | JPN | 2341 | 1819 | 1628 | 1514 | 1734 |
| 17 | Iva Jovic | USA | 2235 | 1829 | 1663 | 1601 | 1759 |
| 18 | Clara Tauson | DEN | 2030 | 1746 | 1560 | 1520 | 1679 |
| 19 | Madison Keys | USA | 1946 | 1836 | 1706 | 1558 | 1766 |
| 20 | Diana Shnaider | RUS | 1946 | 1782 | 1647 | 1565 | 1686 |
| 21 | Liudmila Samsonova | RUS | 1895 | 1697 | 1604 | 1619 | 1566 |
| 22 | Elise Mertens | BEL | 1858 | 1802 | 1580 | 1581 | 1714 |
| 23 | Leylah Fernandez | CAN | 1851 | 1790 | 1590 | 1546 | 1679 |
| 24 | Anna Kalinskaya | RUS | 1758 | 1784 | 1538 | 1546 | 1721 |
| 25 | Hailey Baptiste | USA | 1747 | 1785 | 1662 | 1488 | 1667 |
| 26 | Marie Bouzkova | CZE | 1651 | 1773 | 1699 | 1476 | 1648 |
| 27 | Sorana Cirstea | ROU | 1595 | 1866 | 1612 | 1429 | 1797 |
| 28 | Jaqueline Cristian | ROU | 1437 | 1770 | 1635 | 1432 | 1698 |
| 29 | Ann Li | USA | 1435 | 1745 | 1638 | 1478 | 1647 |
| 30 | Emma Raducanu | GBR | 1430 | 1753 | 1570 | 1577 | 1658 |
| 31 | Cristina Bucsa | ESP | 1406 | 1738 | 1475 | 1514 | 1684 |
| 32 | Qinwen Zheng | CHN | 1405 | 1819 | 1737 | 1497 | 1737 |
| 33 | Xin Yu Wang | CHN | 1401 | 1735 | 1546 | 1591 | 1616 |
| 34 | Maya Joint | AUS | 1380 | 1711 | 1688 | 1579 | 1641 |
| 35 | Emma Navarro | USA | 1377 | 1680 | 1578 | 1590 | 1613 |
| 36 | Jelena Ostapenko | LAT | 1369 | 1723 | 1632 | 1534 | 1621 |
| 37 | Sara Bejlek | CZE | 1360 | 1832 | 1797 | 1486 | 1653 |
| 38 | Anastasia Potapova | RUS | 1355 | 1787 | 1690 | 1484 | 1640 |
| 39 | Katerina Siniakova | CZE | 1342 | 1777 | 1549 | 1578 | 1693 |
| 40 | Janice Tjen | INA | 1317 | 1817 | 1662 | — | 1785 |
| 41 | Elisabetta Cocciaretto | ITA | 1290 | 1800 | 1584 | 1577 | 1689 |
| 42 | Alexandra Eala | PHI | 1285 | 1786 | 1478 | 1600 | 1748 |
| 43 | Lois Boisson | FRA | 1268 | 1791 | 1811 | 1483 | 1554 |
| 44 | Marketa Vondrousova | CZE | 1263 | 1728 | 1606 | 1578 | 1609 |
| 45 | Magdalena Frech | POL | 1263 | 1649 | 1534 | 1434 | 1613 |
| 46 | Laura Siegemund | GER | 1250 | 1680 | 1535 | 1541 | 1592 |
| 47 | Maria Sakkari | GRE | 1238 | 1707 | 1563 | 1486 | 1658 |
| 48 | Tereza Valentova | CZE | 1231 | 1845 | 1746 | 1517 | 1788 |
| 49 | Peyton Stearns | USA | 1211 | 1710 | 1636 | 1471 | 1621 |
| 50 | Mccartney Kessler | USA | 1204 | 1754 | 1516 | 1583 | 1688 |
| Source | DB / file | Last pulled | Age | Rows | Status |
|---|---|---|---|---|---|
| Kalshi KXATPMATCH | tennis_kalshi.sqlite | 2026-05-21T13:08:46.796393+00:00 | 2m | 1792 | fresh |
| Kalshi KXWTAMATCH | tennis_kalshi.sqlite | 2026-05-21T13:08:46.796393+00:00 | 2m | 1688 | fresh |
| Kalshi KXFRENCHOPEN | tennis_kalshi.sqlite | 2026-05-21T13:08:46.796393+00:00 | 2m | 0 | fresh |
| Kalshi KXFOPENMENSINGLE | tennis_kalshi.sqlite | 2026-05-21T13:08:46.796393+00:00 | 2m | 0 | fresh |
| Kalshi KXATPGRANDSLAM | tennis_kalshi.sqlite | 2026-05-21T13:08:46.796393+00:00 | 2m | 14 | fresh |
| Kalshi KXUSOPEN | tennis_kalshi.sqlite | 2026-05-21T13:08:46.796393+00:00 | 2m | 0 | fresh |
| Kalshi KXATPSETWINNER | tennis_kalshi.sqlite | 2026-05-21T13:08:46.796393+00:00 | 2m | 3562 | fresh |
| Kalshi KXATPTOTALSETS | tennis_kalshi.sqlite | 2026-05-21T13:08:46.796393+00:00 | 2m | 0 | fresh |
| Kalshi KXATPSETSWEEP | tennis_kalshi.sqlite | 2026-05-21T13:08:46.796393+00:00 | 2m | 0 | fresh |
| Kalshi KXATPGAMESPREAD | tennis_kalshi.sqlite | 2026-05-21T13:08:46.796393+00:00 | 2m | 0 | fresh |
| Kalshi KXATPEXACTMATCH | tennis_kalshi.sqlite | 2026-05-21T13:08:46.796393+00:00 | 2m | 1060 | fresh |
| Kalshi KXWTADOUBLES | tennis_kalshi.sqlite | 2026-05-21T13:08:46.796393+00:00 | 2m | 0 | fresh |
| Kalshi KXATP1RANK | tennis_kalshi.sqlite | 2026-05-21T13:08:46.796393+00:00 | 2m | 16 | fresh |
| elo last computed | tennis.sqlite | 2026-05-21T13:08:43+00:00 | 2m | 20051 | fresh |
| rankings last pulled | tennis.sqlite | 2026-05-21T13:08:46+00:00 | 2m | 3745 | fresh |
| rankings atp latest date | tennis.sqlite | 2026-05-04 | 421.18h | — | stale |
| rankings wta latest date | tennis.sqlite | 2026-05-04 | 421.18h | — | stale |
| mirror atp schedule | tennis.sqlite | 2026-05-21T13:10:19.805277+00:00 | 0m | 312 | fresh |
| h2h last computed | tennis.sqlite | 2026-05-17T10:11:57.514615+00:00 | 98.98h | — | stale |
| h2h n pairs | tennis.sqlite | 190184 | missing | — | missing |
| last player db run | tennis.sqlite | 1779369037 | missing | — | missing |
| results last_run | tennis_results.sqlite | [2026-05-21T13:10:22.033130+00:00] 2026-05-21T13:10:20.143665+00:00; dates=['20260520']; rows=540; resolved=524 | missing | — | missing |
| pp_edges CSV | pp_edges_tennis_2026-05-21.csv | 2026-05-21T13:10:44.421839+00:00 | 0m | — | fresh |
| kalshi edges JSON | tennis_kalshi_edges_2026-05-21.json | 2026-05-21T13:10:42.057447+00:00 | 0m | — | fresh |
| paper trades PP | paper_trades_pp_tennis_2026-05-21.json | 2026-05-21T13:10:46.436042+00:00 | 0m | — | fresh |
| paper trades Kalshi | paper_trades_kalshi_tennis_2026-05-21.json | 2026-05-21T13:10:46.915268+00:00 | 0m | — | fresh |
| daily payload | daily_tennis_2026-05-21.json | 2026-05-21T13:10:47.566535+00:00 | 0m | — | fresh |
| PP movement | pp_line_movement_tennis_2026-05-21.csv | 2026-05-21T13:10:47.111362+00:00 | 0m | — | fresh |
| PP calibration | pp_calibration_tennis.json | 2026-05-21T13:10:47.050987+00:00 | 0m | — | fresh |