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% | 3 | 3% | 0% | −3pp |
| 10–25% | 10 | 18% | 20% | +2pp |
| 25–40% | 43 | 34% | 30% | −3pp |
| 40–60% | 70 | 50% | 43% | −7pp |
| 60–75% | 46 | 66% | 63% | −3pp |
| 75–90% | 11 | 80% | 73% | −7pp |
| 90–100% | 1 | 92% | 100% | +8pp |
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
66% of open capital sits in a single contract. A binary settles to one dollar or to nothing, so concentration here is not a question of style: a single adverse resolution takes that share of the book with it.
The resolved record
Every settled position, rebuilt from on-chain fills. Realised −$125.9K across 184 positions, with $2.7K of entry fees paid.
| Market | Paid | Result | Size | P&L |
|---|---|---|---|---|
| Winston-Salem Open: James Duckworth vs Arthur Fery — James Duckworth | 0.4200 | lost | 4,162 | −$1.7K |
| Set Handicap: Sakamoto (-1.5) vs Muller (+1.5) — Muller | 0.6000 | lost | 605 | −$363 |
| Winston-Salem Open: Lorenzo Sonego vs James Duckworth — James Duckworth | 0.4500 | won | 12,487 | $6.9K |
| US Open, Qualification ATP: Rei Sakamoto vs Alexandre Muller — Alexandre Muller | 0.3575 | lost | 17,573 | −$6.3K |
| US Open, Qualification ATP: Vilius Gaubas vs Marco Cecchinato — Marco Cecchinato | 0.3236 | lost | 26,649 | −$8.6K |
| Winston-Salem Open: Juan Manuel Cerundolo vs Sebastian Baez — Sebastian Baez | 0.5900 | lost | 8,855 | −$5.2K |
| Winston-Salem Open: Benjamin Bonzi vs Quentin Halys — Quentin Halys | 0.6199 | lost | 7,535 | −$4.7K |
| Winston-Salem Open: Daniil Medvedev vs Martin Damm — Daniil Medvedev | 0.7600 | lost | 5,595 | −$4.3K |
| Winston-Salem Open: Hugo Grenier vs Sebastian Baez — Hugo Grenier | 0.2083 | lost | 4,874 | −$1.0K |
| Winston-Salem Open: Botic van de Zandschulp vs Adolfo Vallejo — Adolfo Vallejo | 0.4200 | lost | 8,103 | −$3.4K |
| US Open, Qualification ATP: Alex Bolt vs Pablo Llamas Ruiz — Pablo Llamas Ruiz | 0.6548 | won | 5,020 | $1.7K |
| Winston-Salem Open: Daniel Altmaier vs Francisco Comesana — Francisco Comesana | 0.5109 | lost | 4,191 | −$2.1K |
| US Open, Qualification ATP: Otto Virtanen vs Ugo Blanchet — Ugo Blanchet | 0.3080 | lost | 188 | −$58 |
| Set Handicap: Svrcina (-1.5) vs Alves (+1.5) — Svrcina | 0.5538 | won | 3,727 | $1.7K |
| US Open, Qualification ATP: Dalibor Svrcina vs Felipe Meligeni Alves — Dalibor Svrcina | 0.7800 | won | 2,619 | $576 |
| Set Handicap: Wong (-1.5) vs Moeller (+1.5) — Wong | 0.5338 | lost | 785 | −$419 |
| US Open, Qualification ATP: Coleman Wong vs Elmer Moeller — Coleman Wong | 0.7416 | won | 6,683 | $1.7K |
| US Open, Qualification ATP: Kimmer Coppejans vs Jurij Rodionov — Jurij Rodionov | 0.5968 | won | 16,139 | $6.5K |
| Winston-Salem Open: Roman Safiullin vs Hugo Grenier — Roman Safiullin | 0.8136 | lost | 6,734 | −$5.5K |
| Set Handicap: Safiullin (-1.5) vs Grenier (+1.5) — Safiullin | 0.5800 | lost | 973 | −$564 |
| Winston-Salem Open: Martin Damm vs Abedallah Shelbayh — Martin Damm | 0.7108 | won | 11,558 | $3.3K |
| Quebec City: Taro Daniel vs Jacob Fearnley — Taro Daniel | 0.3334 | won | 20,964 | $14.0K |
| Quebec City: Jesper de Jong vs Hugo Gaston — Jesper de Jong | 0.6050 | lost | 16,867 | −$10.2K |
| Quebec City: Benjamin Bonzi vs Luca Van Assche — Luca Van Assche | 0.5656 | won | 21,518 | $9.3K |
| Cincinnati Open: Lorenzo Musetti vs Frances Tiafoe — Frances Tiafoe | 0.4700 | won | 8,904 | $4.7K |
| Cancun: Vit Kopriva vs Gauthier Onclin — Vit Kopriva | 0.5600 | won | 2,548 | $1.1K |
| Set Handicap: Auger-Aliassime (-1.5) vs Tiafoe (+1.5) — Auger-Aliassime | 0.4400 | lost | 1,023 | −$450 |
| Cincinnati Open: Frances Tiafoe vs Felix Auger-Aliassime — Felix Auger-Aliassime | 0.6597 | lost | 6,330 | −$4.2K |
| Cincinnati Open: Thiago Agustin Tirante vs Jakub Mensik — Thiago Agustin Tirante | 0.3317 | won | 18,200 | $12.2K |
| Cincinnati Open: Alexander Zverev vs Tommy Paul — Alexander Zverev | 0.6900 | lost | 3,075 | −$2.1K |
| Set Handicap: Mensik (-1.5) vs Tirante (+1.5) — Tirante | 0.5974 | won | 799 | $322 |
| Cincinnati Open: Juan Manuel Cerundolo vs Felix Auger-Aliassime — Felix Auger-Aliassime | 0.8000 | won | 5,574 | $1.1K |
| Kingston: Harold Mayot vs Gustavo Heide — Gustavo Heide | 0.5174 | lost | 19,239 | −$10.0K |
| Cincinnati Open: Thiago Agustin Tirante vs Martin Landaluce — Thiago Agustin Tirante | 0.5615 | won | 8,209 | $3.6K |
| Cincinnati Open: Miomir Kecmanovic vs Flavio Cobolli — Miomir Kecmanovic | 0.4600 | lost | 15,994 | −$7.4K |
| Cincinnati Open: Terence Atmane vs Tomas Etcheverry — Tomas Etcheverry | 0.3800 | lost | 400 | −$152 |
| Cincinnati Open: Christopher O'Connell vs Kamil Majchrzak — Christopher OConnell | 0.3800 | lost | 3,641 | −$1.4K |
| Cincinnati Open: Hamad Medjedovic vs Marco Trungelliti — Marco Trungelliti | 0.3460 | won | 27,362 | $17.9K |
| Set 1 Winner: Medjedovic vs Trungelliti — Trungelliti | 0.3889 | won | 1,276 | $780 |
| Set Handicap: Medjedovic (-1.5) vs Trungelliti (+1.5) — Trungelliti | 0.5800 | won | 1,339 | $562 |
| Cincinnati Open: Coleman Wong vs Daniel Altmaier — Coleman Wong | 0.5692 | lost | 9,052 | −$5.2K |
| Cincinnati Open: Tomas Machac vs Pablo Carreno Busta — Pablo Carreno Busta | 0.5176 | won | 11,732 | $5.7K |
| Cincinnati Open: Denis Shapovalov vs Adrian Mannarino — Adrian Mannarino | 0.3800 | lost | 28,973 | −$11.0K |
| Cincinnati Open: Cameron Norrie vs Dino Prizmic — Cameron Norrie | 0.6100 | won | 15,000 | $5.8K |
| National Bank Open: Learner Tien vs Ben Shelton — Ben Shelton | 0.6300 | won | 116 | $43 |
| National Bank Open: Rafael Jodar vs Brandon Nakashima — Brandon Nakashima | 0.3300 | won | 10,502 | $7.0K |
| Set Handicap: Paul (-1.5) vs Tien (+1.5) — Paul | 0.4000 | lost | 69 | −$28 |
| National Bank Open: Casper Ruud vs Joao Fonseca — Casper Ruud | 0.4321 | lost | 23,639 | −$10.2K |
| Set Handicap: Mensik (-1.5) vs Atmane (+1.5) — Atmane | 0.5700 | lost | 23 | −$13 |
| National Bank Open: Alexei Popyrin vs Thiago Agustin Tirante — Thiago Agustin Tirante | 0.4600 | won | 10,000 | $5.4K |
| Set Handicap: Nakashima (-1.5) vs Droguet (+1.5) — Nakashima | 0.5100 | lost | 20,000 | −$10.2K |
| National Bank Open: Brandon Nakashima vs Titouan Droguet — Brandon Nakashima | 0.7100 | won | 49 | $14 |
| National Bank Open: Luciano Darderi vs Juncheng Shang — Juncheng Shang | 0.5300 | lost | 8,855 | −$4.7K |
| National Bank Open: Daniil Medvedev vs Botic van de Zandschulp — Daniil Medvedev | 0.7500 | lost | 5,062 | −$3.8K |
| National Bank Open: Hubert Hurkacz vs Alejandro Tabilo — Hubert Hurkacz | 0.5900 | won | 20,000 | $8.2K |
| National Bank Open: Thiago Agustin Tirante vs Taylor Fritz — Thiago Agustin Tirante | 0.1673 | won | 4,590 | $3.8K |
| Set Handicap: Fritz (-1.5) vs Tirante (+1.5) — Tirante | 0.3900 | won | 56 | $34 |
| National Bank Open: Alex Michelsen vs Francisco Cerundolo — Alex Michelsen | 0.6100 | won | 16,719 | $6.5K |
| National Bank Open: Valentin Vacherot vs Mariano Navone — Mariano Navone | 0.3700 | won | 24,993 | $15.7K |
| National Bank Open: Nuno Borges vs Tomas Etcheverry — Tomas Etcheverry | 0.3600 | lost | 18,859 | −$6.8K |
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 →