Performance audit
Am I good, and am I safe, answered for any Polymarket wallet from public data. No account, no API key, nothing to install.
Scoring a forecast requires knowing what someone believed before the outcome, which is why every other tool asks traders to log a probability against each position and then wait dozens of trades to learn anything. That step is unnecessary here. Every fill on Polymarket settles on Polygon with a price and a timestamp attached, so the record already exists: the price paid is the probability revealed.
Am I good
Each row is a band of entry prices. Paid is the average price actually paid, which is the probability the wallet revealed by buying. Happened is how often those positions paid out. A well-calibrated trader has the two columns tracking each other.
| Entry band | Positions | Paid | Happened | Gap |
|---|---|---|---|---|
| 0–10% | 34 | 5% | 0% | −5pp |
| 10–25% | 109 | 18% | 16% | −2pp |
| 25–40% | 277 | 34% | 29% | −5pp |
| 40–60% | 417 | 48% | 47% | −0pp |
| 60–75% | 32 | 64% | 63% | −2pp |
| 75–90% | 5 | 84% | 80% | −4pp |
| 90–100% | 3 | 95% | 100% | +5pp |
A positive gap means the wallet was under-confident in that band, it won more often than the price it paid implied. Negative means over-confident.
Am I safe
The resolved record
Every settled position, rebuilt from on-chain fills. Realised −$268.0K across 877 positions, with $53.8K of entry fees paid.
| Market | Paid | Result | Size | P&L |
|---|---|---|---|---|
| Monterrey Open: Diane Parry vs Ann Li — Diane Parry | 0.4143 | won | 13,797 | $8.1K |
| Winston-Salem Open: Ignacio Buse vs Benjamin Bonzi — Benjamin Bonzi | 0.2600 | lost | 7,185 | −$1.9K |
| Winston-Salem Open: James Duckworth vs Arthur Fery — Arthur Fery | 0.5900 | won | 10,000 | $4.1K |
| Winston-Salem Open: Ignacio Buse vs Benjamin Bonzi — Ignacio Buse | 0.4502 | won | 40,471 | $22.2K |
| Augsburg: Cezar Cretu vs Sandro Kopp — Cezar Cretu | 0.4433 | won | 23,353 | $13.0K |
| Roehampton 2: Charles Broom vs Oliver Tarvet — Charles Broom | 0.4258 | won | 2,665 | $1.5K |
| Augsburg: Benito Sanchez Martinez vs Facundo Mena — Benito Sanchez Martinez | 0.5953 | lost | 2,436 | −$1.5K |
| Augsburg: Benito Sanchez Martinez vs Facundo Mena — Facundo Mena | 0.4180 | won | 25,784 | $15.0K |
| US Open, Qualification ATP: Yunchaokete Bu vs Federico Cina — Yunchaokete Bu | 0.1000 | lost | 10,000 | −$1.0K |
| US Open, Qualification ATP: Hugo Gaston vs Colton Smith — Hugo Gaston | 0.2600 | won | 9,184 | $6.8K |
| US Open, Qualification ATP: Yunchaokete Bu vs Federico Cina — Federico Cina | 0.4295 | won | 12,330 | $7.0K |
| US Open, Qualification ATP: Liam Draxl vs Tristan Schoolkate — Tristan Schoolkate | 0.5000 | won | 12,000 | $6.0K |
| US Open, Qualification ATP: Dalibor Svrcina vs Mackenzie McDonald — Mackenzie McDonald | 0.1091 | lost | 18,072 | −$2.0K |
| US Open, Qualification WTA: Elvina Kalieva vs Vendula Valdmannova — Vendula Valdmannova | 0.5300 | lost | 193 | −$102 |
| US Open, Qualification WTA: Tamara Zidansek vs Bianca Andreescu — Bianca Andreescu | 0.2549 | lost | 9,708 | −$2.5K |
| US Open, Qualification WTA: Tamara Zidansek vs Bianca Andreescu — Tamara Zidansek | 0.3566 | won | 15,148 | $9.7K |
| US Open, Qualification ATP: Vilius Gaubas vs Harry Wendelken — Vilius Gaubas | 0.2161 | lost | 28,823 | −$6.2K |
| US Open, Qualification ATP: Vilius Gaubas vs Harry Wendelken — Harry Wendelken | 0.3913 | won | 32,118 | $19.5K |
| US Open, Qualification ATP: Dalibor Svrcina vs Mackenzie McDonald — Dalibor Svrcina | 0.4426 | won | 23,020 | $12.8K |
| US Open, Qualification ATP: Zsombor Piros vs Christopher O'Connell — Christopher OConnell | 0.5537 | lost | 1,139 | −$631 |
| US Open, Qualification ATP: Arthur Gea vs Nishesh Basavareddy — Arthur Gea | 0.4300 | lost | 14,000 | −$6.0K |
| US Open, Qualification ATP: Jacob Fearnley vs Jurij Rodionov — Jacob Fearnley | 0.5478 | lost | 11,491 | −$6.3K |
| US Open, Qualification ATP: Shintaro Mochizuki vs Francesco Passaro — Shintaro Mochizuki | 0.5600 | lost | 12,000 | −$6.7K |
| Winston-Salem Open: Juan Manuel Cerundolo vs Ignacio Buse — Juan Manuel Cerundolo | 0.1785 | lost | 13,000 | −$2.3K |
| Winston-Salem Open: Juan Manuel Cerundolo vs Ignacio Buse — Ignacio Buse | 0.4387 | won | 52,940 | $29.7K |
| US Open, Qualification ATP: Toby Samuel vs Cristian Garin — Cristian Garin | 0.3400 | lost | 30,000 | −$10.2K |
| Augsburg: Cezar Cretu vs Marvin Moeller — Cezar Cretu | 0.4101 | won | 4,704 | $2.8K |
| US Open, Qualification ATP: Aziz Dougaz vs Andrea Guerrieri — Aziz Dougaz | 0.5200 | lost | 2,721 | −$1.4K |
| US Open, Qualification WTA: Julieta Pareja vs Lucrezia Stefanini — Lucrezia Stefanini | 0.4500 | won | 6,269 | $3.4K |
| Augsburg: Sandro Kopp vs Martin Krumich — Martin Krumich | 0.3541 | lost | 17,605 | −$6.2K |
| Roehampton 2: Inaki Montes vs George Loffhagen — Inaki Montes | 0.4259 | lost | 3,272 | −$1.4K |
| Augsburg: Daniel Masur vs Facundo Mena — Daniel Masur | 0.4200 | lost | 907 | −$381 |
| Augsburg: Benito Sanchez Martinez vs Hynek Barton — Hynek Barton | 0.4019 | lost | 12,000 | −$4.8K |
| Philadelphia: Oksana Selekhmeteva vs Capucine Jauffret — Capucine Jauffret | 0.4653 | lost | 3,007 | −$1.4K |
| Philadelphia: Oksana Selekhmeteva vs Capucine Jauffret — Oksana Selekhmeteva | 0.4271 | won | 17,210 | $9.9K |
| Monterrey Open: Cristina Bucsa vs Darja Vidmanova — Cristina Bucsa | 0.3787 | lost | 25,445 | −$9.6K |
| US Open, Qualification WTA: Moyuka Uchijima vs Lucie Havlickova — Lucie Havlickova | 0.4000 | won | 1,820 | $1.1K |
| US Open, Qualification ATP: Nicolai Budkov Kjaer vs Christopher O'Connell — Nicolai Budkov Kjaer | 0.3579 | lost | 20,000 | −$7.2K |
| US Open, Qualification ATP: Zsombor Piros vs Daniil Glinka — Daniil Glinka | 0.4000 | lost | 20,000 | −$8.0K |
| US Open, Qualification ATP: Kei Nishikori vs Michael Antonius — Kei Nishikori | 0.6100 | won | 148 | $58 |
| US Open, Qualification ATP: Arthur Gea vs Clement Chidekh — Clement Chidekh | 0.4187 | lost | 750 | −$314 |
| US Open, Qualification ATP: Francesco Passaro vs Tom Gentzsch — Tom Gentzsch | 0.5200 | lost | 13,210 | −$6.9K |
| Winston-Salem Open: Daniel Altmaier vs Ignacio Buse — Ignacio Buse | 0.5597 | won | 12,358 | $5.4K |
| Winston-Salem Open: Botic van de Zandschulp vs Luciano Darderi — Luciano Darderi | 0.4314 | lost | 14,088 | −$6.1K |
| Winston-Salem Open: Rinky Hijikata vs Benjamin Bonzi — Rinky Hijikata | 0.5300 | lost | 14,000 | −$7.4K |
| US Open, Qualification ATP: Kyrian Jacquet vs Aziz Dougaz — Kyrian Jacquet | 0.3100 | lost | 10,000 | −$3.1K |
| US Open, Qualification WTA: Mai Hontama vs Andrea Lazaro Garcia — Andrea Lazaro Garcia | 0.3400 | won | 15,000 | $9.9K |
| US Open, Qualification WTA: Lucia Bronzetti vs Polina Iatcenko — Lucia Bronzetti | 0.4066 | lost | 15,000 | −$6.1K |
| US Open, Qualification ATP: Daniel Rincon vs Jordan Lee — Jordan Lee | 0.3607 | lost | 5,808 | −$2.1K |
| US Open, Qualification ATP: Kyrian Jacquet vs Aziz Dougaz — Aziz Dougaz | 0.4900 | won | 866 | $442 |
| US Open, Qualification WTA: Kristina Liutova vs Tatiana Prozorova — Tatiana Prozorova | 0.4000 | lost | 17,000 | −$6.8K |
| US Open, Qualification ATP: Pedro Martinez vs Daniil Glinka — Pedro Martinez | 0.4600 | lost | 15,000 | −$6.9K |
| Winston-Salem Open: Mattia Bellucci vs Luciano Darderi — Luciano Darderi | 0.4456 | won | 6,366 | $3.5K |
| US Open, Qualification WTA: Laura Samson vs Tamara Zidansek — Laura Samson | 0.1000 | lost | 15,000 | −$1.5K |
| US Open, Qualification WTA: Laura Samson vs Tamara Zidansek — Tamara Zidansek | 0.5200 | won | 10,000 | $4.8K |
| Roehampton 2: Fabrizio Andaloro vs Emile Hudd — Fabrizio Andaloro | 0.1200 | lost | 1,751 | −$210 |
| Will Paris Saint-Germain FC win on 2026-08-28? — No | 0.4820 | won | 10,373 | $5.4K |
| Spread: FC Bayern München (-1.5) — VfB Stuttgart | 0.4936 | lost | 6,517 | −$3.2K |
| LoL: Team Vitality vs Fnatic (BO3) - LEC Regular Season — Fnatic | 0.4204 | lost | 10,146 | −$4.3K |
| Counter-Strike: M80 vs FURIA - Map 2 Winner — M80 | 0.2517 | lost | 16,507 | −$4.2K |
Swipe the table sideways to see every column.
Polymarket only. Kalshi is a regulated exchange with a private database, its per-account endpoints require the account holder's own credentials, so there is no equivalent public record to read. Method →