How this works
What this system is (and is not)
The watcher looks for trading patterns on Polymarket that co-occur in ways chance struggles to explain: positions opened shortly before a price break, sized well above a wallet's own habit, at long odds, concentrated in one subject, by wallets that share funding lineage on-chain. It joins two things most people look at separately: the full historical trade record of the platform, and the USDC funding history of the wallets doing the trading.
Every alert is a hypothesis, never an accusation. Nothing here asserts that anyone traded on non-public information — only that observed patterns are unusual against the population and against the actor's own history. Plenty of legitimate things look unusual: genuine expertise, fast public news, luck.
This page explains the approach. It deliberately does not publish the thresholds, weights or lookback windows the engine uses. A published threshold is one that can be traded just under, and the specifics are the part of this system that took the work.
When things run
Ingestion and detection run continuously on the server. Heavy statistics run once a night. Nothing waits for a person.
Practical latency: a price break on a watched market is detected within minutes of happening; a new position by a watched actor's wallet is evaluated within about a minute of the trade. Scores and tiers move once a day (the nightly run), not in real time.
The pipeline, start to finish
- Ingest. Every trade on the platform, plus price history and the market catalog.
- Detect breaks. A sudden, held price step against the market's own baseline. Thin, illiquid moves are flagged low-confidence and excluded downstream.
- Screen. For each confirmed break: who held the correct side before it happened? Deliberately wide — lucky gamblers flood through here by design.
- Score behaviour. Several independent signals over the wallet's whole record, judged against a population baseline built from real market odds, combined into one behaviour score.
- Chain layer. Only for wallets whose behaviour already cleared the bar: USDC funding lineage on Polygon — who funded them, who else the same funder funded, hand-off timing between wallets.
- Assemble actors. Wallets connected by qualifying funding evidence become one Actor and its trading history is scored as a whole. A burner rotation scores as one career, not five innocuous fragments.
- Tier and watch. Actors are banded by composite score. The upper tiers go under standing surveillance.
- Alert. A new position by a watched actor that matches the actor's established pattern on every axis at once lands in the Alerts panel.
Tiers
| tier | meaning | watch |
|---|---|---|
| T1 | Noise or not enough evidence. Kept only as context. | none |
| T2 | Interesting record — could be skill, could be luck. A high win-rate alone can NEVER promote past Tier 2; being good at forecasting is not suspicious. | none |
| T3 | Strong behavioural pattern. Under passive watch: every new position is evaluated. | passive |
| T4 | "Corroborated": behaviour AND on-chain funding evidence point at the same actor. Tier 4 is structurally impossible on one axis alone; without both, the actor is held at T3. | live |
The composite rewards agreement between the two kinds of evidence: behaviour and chain reinforce each other, and the top tier only exists when both are present.
The behaviour score
Built from multiple signals over the wallet's full history, each stored with its inputs so a case file can show its work. In broad strokes they ask:
- How close before price breaks do this wallet's entries land, and how consistently?
- Does it trade one narrow subject (one agency, one company, one conflict) rather than everything?
- Does it win more than random bettors at the same odds would? This one is deliberately capped: on its own it can never push an actor past Tier 2.
- Are the flagged positions out of proportion to the wallet's own normal?
- Does it take specific long-shot outcomes rather than broad hedged books?
The signals are combined so that several independent moderate signals outweigh one strong one. The baseline is rebuilt nightly by resampling actual market odds: "would random bettors at these odds produce this record?"
The chain score
Two families of on-chain evidence: flagged wallets that share a funding source in their USDC transfer history, and hand-offs where one wallet goes quiet and another funded from the same lineage picks up the same pattern.
Exchange hot wallets fund thousands of accounts, so shared funding through them means nothing. Funding links are discounted by how many wallets the funder feeds, and clustering only follows funders with a small number of downstream wallets. The link gets discounted, never the wallet.
Chain lookups run ONLY for wallets whose behaviour score already cleared the bar — a hard guard in code, not a convention. No behavioural signal, no chain surveillance.
Actors, membership, decay
An Actor is a group of wallets connected by qualifying chain evidence (often a group of one). Its behaviour score is computed over the members' combined history — the reason a burner rotation can out-score every individual wallet in it.
Membership confidence decays over time unless re-reinforced by fresh evidence, so stale links fade instead of accumulating. Actor ids are stable across recomputes; merged actors forward to their survivor rather than disappearing.
The alert rule — why alerts fire, and why they mostly don't
Checked every 60 seconds against every new buy from a watched actor's member wallets. Every condition must hold at once:
| condition | why |
|---|---|
| actor already under watch | A random wallet doing something odd once is not a signal. |
| trade is in the actor's concentrated subject | Pattern continuation, not a stray bet. |
| size is large relative to the actor's OWN history | Judged against the actor, not a global number. $2k is nothing for a whale and everything for a $50 bettor. |
| long odds at entry | Buying an outcome the market considers unlikely. Confidence at long odds is the interesting shape. |
Zero alerts for days or weeks is the EXPECTED state. The rule is strict on purpose: it fires on conjunctions, not on any single unusual thing. If it fired daily it would be measuring noise.
Screen flags (the tags on hits)
| flag | means |
|---|---|
| early | position opened shortly before the break |
| low_entry_price | a long shot at entry |
| unusual_size | far above the wallet's own prior positions, or an outsized first-ever position |
| fresh_wallet | wallet's first-ever Polymarket activity was very shortly before this entry |
| young_wallet | a new wallet, but not brand new |
| large_absolute | large in raw dollars (informational only — absolute dollars are weak evidence) |
A screen hit is NOT an accusation either — it means "this wallet held the right side before the move." Most hits are luck. The scoring stage exists to prove that.
What counts as a price break
A step against the market's own baseline that is large, fast, and HELD — a spike that reverts is not a break. Markets below a liquidity floor, or with almost no new takers after the move, are flagged low-confidence and excluded from screening. Missing a marginal break is acceptable; a false one poisons everything downstream, so the detector is tuned conservative.