Open Net Worth
Open Net Worth is an open-source personal AI wealth assistant you run yourself: one ledger for your whole financial life, worked by an AI agent you control.
翻訳待ち
No updates detected yet. GitHub releases will appear here.
The onchain lie detector - what the crowd says on Polymarket vs. what six classes of capital actually did onchain. Built on the Nansen API for the Meridian Buildathon.
翻訳待ち
Loading the full README. The saved excerpt is shown below.
The onchain lie detector. What the crowd says on Polymarket, wired up against what six distinct classes of capital actually did onchain. The gap between the needles is the product.
Built for the Nansen Meridian Buildathon (14–27 September 2026) on the Nansen API.
Prediction markets are the cleanest measure of stated belief ever built — real money, continuously priced, publicly visible. Onchain flow is the cleanest measure of revealed belief. Nansen is the only place both halves exist behind one API key. Polygraph puts them on the same instrument and reads the disagreement.Read the full README ↗The onchain lie detector. What the crowd says on Polymarket, wired up against what six distinct classes of capital actually did onchain. The gap between the needles is the product.
Built for the Nansen Meridian Buildathon (14–27 September 2026) on the Nansen API.
Live: https://polygraph-ochre.vercel.app
Prediction markets are the cleanest measure of stated belief ever built — real money, continuously priced, publicly visible. Onchain flow is the cleanest measure of revealed belief. Nansen is the only place both halves exist behind one API key. Polygraph puts them on the same instrument and reads the disagreement.
A sample of what it printed against live data while it was being built:
The crowd is buying SOL. The best-performing wallets are selling it.
DECEPTION · gap 66/100 · HIGH confidence
A real polygraph doesn't have one needle. It records several channels — pulse, respiration, skin conductance — side by side on one moving strip, and the operator reads the relationship between channels, not any single line. A subject can control one channel. Controlling all of them at once is the hard part.
Same structure here. One channel for what the crowd says. Six for what different classes of capital did:
| Channel | Who that is |
|---|---|
| Top PnL | wallets with the best realised profit history |
| Smart Traders | Nansen's Smart Money label |
| Whales | balance sheets large enough to move the book |
| Public Figures | named, publicly attributable wallets |
| Fresh Wallets | newly created addresses — the closest proxy for retail |
| Exchanges | net flow to CEX wallets (sign inverted: inflow is supply arriving to be sold) |
When the crowd's needle and informed capital's needle deflect in opposite directions, the band between them is shaded red. That band is the whole thesis.
Anyone can draw two divergent lines and imply that one side is the smart side. Polygraph scores the crowd against ground truth instead of assuming it is wrong.
Every Polymarket binary settles at $1.00 or $0.00, so a resolved market's terminal price is the answer. The backfill pulls the full price history of ~900 resolved BTC/ETH/SOL markets, samples each one's price at 15/35/55/75% of its lifetime, and scores those forecasts against how the market actually settled.
3,580 observations across 900 resolved markets:
| Crowd priced | Actually resolved true | n |
|---|---|---|
| 0–10% | 2% | 1,979 |
| 10–20% | 27% | 276 |
| 20–30% | 35% | 168 |
| 30–40% | 56% | 179 |
| 40–50% | 60% | 229 |
| 50–60% | 50% | 283 |
| 60–70% | 60% | 123 |
| 70–80% | 69% | 124 |
| 80–90% | 71% | 105 |
| 90–100% | 89% | 114 |
Monotone, close to the diagonal, Brier ≈ 0.08. The Polymarket crowd is genuinely well calibrated, with mild underconfidence in the 20–50% band.
That is the opposite of the lazy "retail is dumb money" framing, and it makes the divergence panel more interesting rather than less: when a demonstrably well-calibrated crowd and the highest-PnL wallets onchain point in opposite directions, one of two informed parties is wrong, and it is worth knowing which.
Live data killed three assumptions. They are documented because the corrections are most of the actual work.
1. The wallet-level join doesn't exist.
The original design cross-referenced individual Polymarket bettors against their own onchain bags — a "hypocrisy leaderboard". It doesn't work: Polymarket positions are held by proxy contracts on Polygon whose owner EOAs hold nothing on Ethereum, and profiler/address/labels is credit-gated. Abandoned before any product code was written.
2. Barrier markets are not a probability distribution. Three different questions get asked about the same asset, and only one is a CDF point:
"Will ETH be above $2,800 on the 16th?" P(close ≥ K) ← a real CDF point
"Will ETH reach $2,800 in September?" P(max ≥ K) ← upside barrier
"Will ETH dip to $2,250 in September?" P(min ≤ K) ← downside barrier
P(max ≥ 2750) = 0.63 and P(min ≤ 2250) = 0.69 are perfectly consistent with each other and with spot at $2,400 — they describe the running maximum and the running minimum, which are different random variables. Normalising all three onto one axis produced a curve that went the wrong way and a median that meant nothing.
Fixed by splitting them: if a close-settled ladder exists, take the median from it. Otherwise read direction from the barriers doing what barriers are actually good for — comparing the priced chance of rising X% against the priced chance of falling X% at matched distances from spot.
3. Picking the most populated expiry gives a permanent "flat". Polymarket lists a daily close ladder for every major asset, so "expires today" always wins on market count — and a ladder expiring in six hours necessarily implies a median within a fraction of a percent of spot. The crowd looked flat every time, by construction. Now the longest horizon with real structure wins, and conviction is scaled by √time so a small move over a short horizon still registers.
Every reading carries a confidence band that is degraded by thin ladders, high strike-inversion rates, barrier-only readings, and cohorts that reported no flow. A DECEPTION verdict requires HIGH confidence — anything weaker is capped at TENSION no matter how large the raw gap.
Calling deception off one cohort and four strikes is exactly how an analytics product loses its credibility, so the code will not do it.
Known limits are printed in the UI, not buried.
This is the beginning of the README. Read the rest at the original. Read the full README ↗