A prediction market quotes one number, and that number is doing two jobs: a forecast, and the premium people pay to hold it. Sonde separates them. Every live market gets the crowd's price and the model's price, side by side, and the distance between them — the sounding — is the only thing worth trading.
Reading the board…one of the board's headline markets
crowd · —the price leg · what the book is paying right now
model · —the estimate leg · four named terms, no black box
·live markets on the board
·traded across them in 24h
·disagreements of 5pts or more
·refused: too thin to score
Why you'd need this
Four people, one board, incompatible questions.
A prediction market board answers one question well — what is the consensus — and four questions badly. Sonde exists because these four reads are obvious and nobody ships them together.
Edge hunter
Wants the disagreement, not the consensus
Sort the whole board by the gap instead of by volume. Every market carries the crowd's number, the model's number, and a confidence that says whether the gap is a signal or a thin book pretending to be one.
Reads the gap column
Narrative trader
Wants the heat before the price
Markets do not move alone; they move in families. The heatmap scores every narrative on live volume, weekly motion, book depth and how often the model disagrees inside it, so a category warming up is visible before its individual markets reprice.
Reads the heatmap
Wallet follower
Wants the size, not the opinion
Anyone's positions are public. Paste an address and you get their real open book, entry prices, unrealised P&L and how their decided positions actually landed — read live from Polymarket, not reconstructed from a screenshot.
Reads the wallet
Everyone else
Wants a record before risking money
Battles put you on the record against the model on the loudest disagreements. Your votes are graded against where the market actually goes, so you find out whether you are any good at this before it costs you.
Builds a record
None of this needs a new venue. It needs the existing one to stop being read as a single indivisible number.
How it works
One quote, four terms, one verdict.
A sonde is an instrument you drop into something to bring back a reading. This is the whole pass over one market, with real arithmetic: a longshot quoted at 4 cents, four months out, on a book a few hundred thousand deep.
1
Read the quote, not the last print
The crowd price is the mid of the best bid and best ask on the YES token, because that is the number you can actually transact against. The last trade is kept, but only as evidence about who is the aggressor.
crowd = (bestBid + bestAsk) / 2 = 0.040
2
Correct the tail
Prediction markets pay too much for longshots and too little for favourites. The correction is one constant applied in logit space, so it is exactly zero at even money and grows with the distance from it.
σ(1.05 × logit(0.040)) − 0.040 = −0.3pts
3
Carry a quarter of the week's move
A move that happened is information that has not finished arriving. A quarter of the 7d move carries, damped near the bounds where there is no room left, and damped again when there is no time left for it to play out.
0.25 × move7d × room × timeWeight
4
Pull toward the near side as it ends
Close to resolution, the near side gets nearer. The pull decays with a ten day half-life, so a market a year out receives none of it and a market resolving tomorrow receives most of it.
(target − crowd) × 0.10 × exp(−daysLeft / 10)
5
Take the book skew, but only from a tight book
A print away from the mid on a one-cent spread is someone paying up. The same print on a seven-cent spread is just the spread. Above five cents the term is switched off rather than guessed at, and it is capped at 2pts regardless.
clamp(0.35 × (lastTrade − mid), ±0.02)
6
Refuse what cannot be scored
Confidence is built from depth, 24h volume, spread, Polymarket's own competitiveness score and the horizon. Under 35 it is quarantine: no verdict, no edge, no place on the board. A market nobody traded today is a memory, not a price.
What the estimator cannot do. It has no news, no language model, no private feed and no view of the world beyond the numbers above. It is a calibration layer over a crowd: at its best where the crowd is sloppy, useless where the crowd knows something it does not. That blind spot is exactly what the analyst leg is for — and it is kept strictly beside the arithmetic, never inside it.
What we found in the board
Both prices already exist inside the quote.
A prediction market price is not a probability. It is a probability multiplied by what people will pay to hold that probability — the longshot premium, the impatience of momentum traders, the cost of capital until resolution. Those are separate things, trading as one number, and they are separable from data the exchange already publishes.
// gamma-api.polymarket.com/markets?limit=1&order=volume24hr
crowd 0.040 bestBid 0.039 · bestAsk 0.041
move7d -0.010 oneWeekPriceChange
daysLeft 121.4 endDate − now
liquidity 184,704 resting size on the book
volume24h 41,208 actually traded
→ model 0.037 · gap −0.3pts · confidence 61
01 · The premium
A quote is never just a forecast
It carries the price of holding the position to resolution. Nobody quotes the two apart, and every terminal shows you their product.
02 · The evidence
Depth is not the same as agreement
Spread, resting size and 24h volume say how much the quote should be believed. Most boards sort on volume alone and hand you the loudest market, not the most reliable one.
03 · The identity
crowd = model + premium + noise
Name the premium terms and what remains is the noise. That subtraction is the whole product; everything else on this site is a view of it.
That last line is the whole idea. The forecast and the premium are already separated inside every quote on the board. They are multiplied together into one number, and nobody is trading them apart. Sonde does not have to invent the decomposition — it has to expose one that is already there.
The problem
A board sorted by volume hands you the loudest market, not the best one.
Volume ranks by attention. Attention is exactly where the crowd is thickest and the edge is thinnest. Sonde ranks by the disagreement between the quote and the model, then refuses to rank at all where the evidence is too thin to support a verdict.
01 · Read
Every live market, one row each
The board is built from Polymarket's own events endpoint, one row per event so a five-legged Fed market cannot take over the page. Siblings stay one click away.
02 · Estimate
Four named terms, no black box
Tail correction, momentum carry, resolution pull, book skew. Each reports its own contribution in points, and they sum to the whole disagreement.
03 · Route
The verdict goes to one leg only
Model above the crowd → the YES leg is cheap. Model below → the NO leg is cheap. Inside the noise → nobody. Too thin to score → quarantine, credited to nobody.
ObservedSondeConfidenceVerdict
Crowd under the model+5pts or more≥55→ YES leg
Crowd over the model−5pts or more≥55→ NO leg
Either, on weak evidence±2.5 to 5pts35–55→ a lean, sized as one
Agreementunder ±2.5ptsany→ nobody
Thin book, or nothing traded in 24hany<35→ quarantine
The estimator
Four terms, summed in probability space.
Verbatim from lib/model.ts. Probability space rather than logit space on purpose: every term can then be reported in the unit a trader reasons in, and the four of them add up to the disagreement with nothing left over.
The same function the terminal runs, running in your browser. Move the inputs and watch the verdict change. Note what a thin book does: the disagreement can be enormous and the answer is still no.
The same function runs here, on the market pages and on the terminal. Nothing is fitted to a backtest and nothing is fetched to compute it — move an input and the verdict is recomputed in your browser.
estimator · live
verdict
Aligned
The model and the crowd agree inside the noise. There is nothing here to trade.
Favourite–longshot−0.6
Momentum carry±0.0
Resolution pull±0.0
Book skew±0.0
crowd 4.0% · model 3.4% · gap −0.6 · confidence 71
Below 35 confidence the verdict is always quarantine; below 55 a disagreement is a lean rather than an edge. The four terms above sum to exactly the disagreement — there is no residual and no fifth term you cannot see.
The analyst leg
Two prices, and a third opinion that knows things.
The estimator has never heard of the question it is pricing. It sees a number, a spread, a date and a week of movement, and that is the whole of its world. So on every market page there is a second reader: Claude Opus 5, given the same market — the resolution criteria verbatim, the book, the history, and the estimator's own four terms — and asked what the arithmetic cannot answer.
01 · What it gets
The question, not the chart
The exchange's resolution criteria, both prices, every model term with its points, the depth and lean of the book, a 30-day price summary and who is holding which side. One deterministic prompt, so the request stays cacheable.
02 · What it returns
A schema, not an essay
A structured read: its own probability, whose number it lands nearer, two to four concrete drivers with the side each favours, the one event that would change its mind, and what it cannot see from here. Validated before it renders.
03 · What it never does
Move a number
The crowd price, the model price, the gap, every verdict and every ranking are computed without it. No key, a rate limit, a refusal or a bad night from the model changes nothing about the board — you simply lose the paragraph.
It costs money to run, so it is the one thing on this site that never happens on its own: a POST you trigger by hand, capped at an hourly allowance per server, and each read reused for fifteen minutes. Without an ANTHROPIC_API_KEY the panel says so in plain language and the rest of the page carries on.
Markets and events from gamma-api, books and price history from clob, positions and holders from data-api. Responses are memoised for a minute so a refresh does not turn into a fan-out, and a stale snapshot is served with its age rather than an empty page.
markets
gamma-api
gamma-api.polymarket.com
statusreading…
latency·
detail·
order books
clob
clob.polymarket.com
statusreading…
latency·
detail·
positions
data-api
data-api.polymarket.com
statusreading…
latency·
detail·
coverage
markets on the board·
scored by the estimator·
quarantined (too thin)·
disagreements ≥ 5pts·
24h volume analysed·
resting liquidity seen·
snapshot age·
How to use it
Seven moves, start to finish.
Everything below works right now, with no account, no wallet and no key. Where something is derived rather than official, the step says so.
1
Open the terminal works now
The dashboard is the whole board in one screen: totals, the widest disagreements, the hottest narratives and the wallets holding size in today's markets.
/dashboard
2
Sort the board by the gap works now
On Markets, switch the sort from volume to gap. Quarantined markets sink to the bottom by construction — they are shown, never ranked.
/markets?sort=gap
3
Paste any Polymarket link works now
Drop a polymarket.com/event/… URL into the search box and every leg of that event comes back scored, whether or not it is on the board.
/api/markets/from-url?url=…
4
Read a wallet works now
Smart money takes any 0x address and returns that wallet's live positions, entries, unrealised P&L and how its decided positions landed. Read-only, and public data throughout.
/smart-money?address=0x…
5
Take a side local to your browser
Battles are the loudest live disagreements. Your votes are stored in your own browser and graded against where the market actually goes. There is no account, so there is also no shared tally to game.
vote → localStorage → graded on the next price
6
Ask the analyst needs a key
On any market page, the analyst leg reads the question itself and answers with its own probability and the drivers behind it. It runs on request, never on load, and says so plainly when the server has no key.
POST /api/analysis/<market id>
7
Rank the wallets derived, not official
Polymarket publishes no leaderboard endpoint, so Leaderboard builds one: the holders of today's most-traded markets, each priced from the same positions API. It is a ranking of wallets with size on today's board, not an all-time table, and the page says so on the page.
holders(top 8 markets) → positions → rank
What this does not do
The uncomfortable half.
The estimator is not an AI. No language model, no news ingestion, no sentiment feed. It is four published terms and a confidence floor, chosen because they are auditable, not because they are the strongest possible forecast. Everything ranked, scored or quarantined on this site comes from those terms alone.
The analyst leg is a language model, with everything that implies. It has no live news in the call, its knowledge ends before today, and it can be confidently wrong in fluent prose. It is labelled as generated wherever it appears, it is never an input to a price, a verdict or a ranking, and it only runs when you ask it to.
The constants are priors, not fits. The tail correction, the momentum fraction and the resolution pull come from the published literature on prediction market calibration, not from a backtest of this board. Nothing here has been optimised against out-of-sample results, because we do not have them yet.
A disagreement is not an edge. Where the crowd knows something the four terms cannot see — a news event, a court date, an insider — the model is confidently wrong, and confidence will not save you. It measures the evidence behind the quote, not the evidence behind the world.
Battles have no shared tally. Votes are local to your browser, which makes them honest and also makes them worthless as a public reputation. Clearing your site data clears your record.
The leaderboard is derived. It samples the holders of the most-traded live markets. A profitable wallet that is flat today does not appear at all, and that is a property of the method, not a bug.
Win rate is a proxy. Polymarket exposes open positions, not a settled trade history, so "decided" means a position now marked at 0 or 1. It excludes everything already redeemed and closed.
Upstream is a dependency. Three public endpoints, none of them promised to us. When one is down the terminal says so and serves the last good snapshot with its age attached, rather than a plausible number of unknown vintage.
Nothing here is investment advice. It is arithmetic over a public order book, published so you can check it.