(Tooling I wrote to study market making on prediction markets.)
[NOTE: this blog post is written in collaboration with LLMs.]
Polymarket is a binary prediction market with a CLOB (centralized limit order-book) and the rest of its mechanisms living on Polygon. It provides YES/NO contracts on real-world events, each settling at $1 or $0. Allegedly SIG and Jump and few others institutional market makers have dedicated a desk to prediction markets. Now the question here: on a fully pseudonymous chain where any wallet can post any order, can we figure out who is actually running a systematic bilateral book — and can you identify them purely from the public fill record?
A prior analysis of the pre-2024 cohort identified 8 operators who were the dominant liquidity providers of that era. Their scale:
Dec 31, 2025 – Feb 10, 2026 · 41 days
| Label | Wallet | Prior tier | Fills | Volume (USDC) |
|---|---|---|---|---|
| a42f_acc | 0xa42f127d7e… | A — Elite | 186,146 | $8.9M |
| e007_acc | 0xe00740bce9… | B — Serious | 334,912 | $5.3M |
| 4ffe_acc | 0x4ffe49ba2a… | A — Elite | 274,719 | $41.4M |
| b548_acc | 0xb548b896c7… | B — Serious | 181,305 | $2.3M |
| 5f6a_acc | 0x5f6aedef48… | C — Active | 217,565 | $2.3M |
| 330e_acc | 0x330efa1eae… | B — Serious | 223,408 | $2.3M |
| e041_MM | 0xe041d09715… | D — Casual | 138,888 | $11.5M |
| fdb8_MM | 0xfdb826a0fb… | D — Casual | 71,933 | $4.8M |
None of these 8 wallets appear anywhere in the 2024–2026 dataset. The entire cohort turned over. This analysis maps who replaced them.
Every fill lands on-chain. Two years of that data lives in polymarket_polygon_trades (600M rows). One row looks like this:
{
"wallet": "0xC5d563A36AE12...",
"title": "Will a Democrat win the Virginia Presidential Election?",
"outcome": "No",
"side": "BUY",
"price": 0.10,
"size": 3.00,
"participant_role": "maker",
"timestamp": "2024-09-19T03:39:41Z"
}
Two years of continuous bilateral flow across 390k+ markets leaves a signature.
To find that signature: screen all 394,737 wallets on fill-level activity to isolate candidates that look like they’re running a bilateral book; run FIFO P&L on the top 300 survivors; then rank on a weighted composite. The screen and the score:
# Activity screen → 8,476 candidates
fills_per_day ≥ 50
buy_sell_ratio ≤ 0.65 # bilateral, not directional
n_tokens ≥ 10 # breadth across markets
notional ≥ $10k
maker_pct ≥ 0.50 # passive fills dominate
# Composite score (top 300 after FIFO P&L)
score = 0.25 × pnl_rank + 0.20 × maker_pct + 0.15 × fills_per_day
+ 0.10 × balance + 0.10 × n_tokens + 0.10 × notional
+ 0.10 × hhi_inv # 1/HHI — rewards breadth over single-market concentration
# Tiers
A = rank 1–8 B = rank 9–28 C = rank 29–108
Jan 1, 2024 – Feb 23, 2026 · 784 days
The Professional Class
The 8,476 wallets active between January 2024 and February 2026 stratify into four tiers, segmented by fill volume. The table shows median P&L, passive-posting rate, and scale for each.
| Tier | n | Median P&L | Mean maker_pct | Mean fills/day |
|---|---|---|---|---|
| A — Professional | 8 | $22,370.74 | 0.911 | 15,611 |
| B — Serious | 20 | $4,561.65 | 0.906 | 2,574 |
| C — Active | 80 | $7.68 | 0.899 | 1,280 |
| D — Casual | 8,368 | −$1,444.47 | 0.577 | 392 |
Jan 1, 2024 – Feb 23, 2026 · 784 days
Median P&L from FIFO over each wallet's top-50 tokens. D tier median reflects the 192 bottom FIFO candidates; the remaining 8,176 wallets had no FIFO computation.
Jan 1, 2024 – Feb 23, 2026 · 784 days
The P&L gradient is not linear, and the largest step is at the bottom. Tiers A and B are consistently profitable. Tier C is effectively breakeven at the median. The bottom tier — 8,368 wallets — is net negative: among the D-tier wallets with FIFO data, the median loss was $1,444. Most wallets engaging on the maker side are losing money doing it.
The behavioral separator is maker_pct: the fraction of fills where a wallet posts the resting order rather than crossing the spread, derived directly from an on-chain field. Tiers A, B, and C all average roughly 0.90. Tier D averages 0.577. That is not a small gap. The professional class primarily posts; the casual tier primarily crosses. Posting collects the spread; crossing pays it. A maker_pct of 0.90 means nine out of ten fills are on the passive side. A maker_pct of 0.577 means nearly half are not.
Tiers A and B share nearly identical maker_pct — 0.911 versus 0.906 — so passive behavior alone does not separate them. What separates them is throughput: A operates at roughly 6× B's fill rate, and the P&L ratio tracks it, with A's median approximately 5× B's. Being passive at scale is what defines the professional tier.
The next question is how this hierarchy was identified — specifically, what behavioral signals distinguish the wallets in each tier and how the tier boundaries were constructed.
Finding the Candidates
Identifying market makers on a pseudonymous chain is a classification problem with no ground truth — no registration records, no disclosed strategies, only a transaction log.
Market makers leave a recognizable behavioral trace: two-sided activity across many markets, sustained over time, at high daily cadence. Five criteria operationalize this, applied to every wallet with at least 100 fills between January 2024 and January 2026.
| Criterion | Wallets passing | Rationale |
|---|---|---|
buy_sell_balance > 0.5 | 380,042 | minority side ≥ 25% of fills |
n_fills ≥ 1,000 | 29,378 | sustained activity floor |
n_tokens ≥ 10 | 372,867 | diversified, not event-concentrated |
duration ≥ 7 days | 349,481 | persistent presence |
fills/day ≥ 50 | 44,656 | regular daily cadence |
| ALL combined | 8,476 | final screened set |
Jan 1, 2024 – Feb 23, 2026 · 784 days
The tightest single filter is fills/day ≥ 50. Of 394,737 qualifying wallets, only 44,656 pass this threshold alone. The other four criteria each eliminate a meaningful fraction, but cadence is the sharpest discriminator. All five combined reduce the population by 97.9% — from 394,737 to 8,476 candidates.
None of these criteria touch profitability. That is deliberate. Screening on P&L first would discard active wallets with negative short-term returns, which are not necessarily poor market makers — they may simply have held inventory through an adverse period. The activity screen casts a wide net; the FIFO P&L accounting in the next section separates the profitable from the rest.
The FIFO Verdict
The top 300 by activity score proceed to FIFO computation. Pulling full trade tape for all 8,476 screened wallets would be prohibitively expensive; 300 is the practical ceiling, and the tape is cached after the first pull so re-runs cost nothing.
Jan 1, 2024 – Feb 23, 2026 · 784 days
| Metric | Value |
|---|---|
| Positive P&L | 69 wallets (23.0%) |
| Negative P&L | 231 wallets (77.0%) |
| Median | −$501.99 |
| p75 | −$8.01 |
| p90 | +$1,230.99 |
| p99 | +$58,534.97 |
| Best | +$109,540.26 |
| Worst | −$18,136,416.35 |
Jan 1, 2024 – Feb 23, 2026 · 784 days · top-300 FIFO candidates
The result: 69 wallets profitable, 231 negative — 77% in the red. On first read, this looks like a failed screen. It is not. Pass-1 was designed to identify active, bilateral, multi-token participants, not profitable ones. Profitability was deliberately excluded from Pass-1 because including it would be circular: select for P&L, then score by P&L. Instead, P&L rank enters as a scoring component at this stage, applied within the 300 to rank quality inside the activity-filtered pool. The design check is clean: all 8 Tier A wallets are in the 69 positive. The screen found the right people; the scoring separated them from the rest.
The positive tail is sparse and skewed. p90 sits at +$1,231 — 270 of the 300 fall below that figure. p99 reaches +$58,535. The single best wallet cleared +$109,540 across 727 days and 20.5 million fills. This is the characteristic shape of spread-capture performance: most operators cluster near breakeven or absorb net adverse selection; a small number maintain consistent positive edge and pull away from the field.
The −$18,136,416 worst case is not noise and should not be dismissed as one. A loss of that magnitude implies concentrated directional exposure, not failed market making. The wallet passed the bilateral gate on raw volume — enough fills on both sides, enough tokens to clear the breadth threshold — but the fill pattern is consistent with a large binary-outcome bettor, not a spread capturer. When resolutions go against the position repeatedly at scale, FIFO loss accumulates with no spread income to buffer it. In tier scoring, this wallet's rank is simply 1 of 300; rank is ordinal, so the dollar magnitude does not flow through to the score or distort tier boundaries.
The Separator
maker_pct is the fraction of a wallet's fills executed on the passive (resting-order) side, read directly from an explicit field in the CTF exchange's on-chain order-filled event log — no heuristic required.
Jan 1, 2024 – Feb 23, 2026 · 784 days
The distribution is bimodal. The large primary mode sits near 0.45–0.50: these wallets cross the spread roughly as often as they rest on it, paying roughly as much as they collect. The smaller secondary mode approaches 1.0: these wallets almost never cross — they post and wait. Posting and waiting earns the spread. Crossing pays it. The two modes correspond to two different structural P&L positions.
Mean maker_pct by tier: A = 0.911, B = 0.906, C = 0.899, D = 0.577. Tiers A through C are clustered within 0.012 of each other. Tier D is 0.32 lower. This gap is not a symptom of unprofitability — it is the mechanism. A wallet at 0.577 spends nearly half its activity paying spread rather than collecting it. That is a structural drag on every fill it executes.
Inside Tier A
| Rank | Wallet | Score | Realized P&L | maker_pct | fills/day | n_tokens |
|---|---|---|---|---|---|---|
| 1 | 0x51373c6B56… | 0.658 | $47,998.38 | 0.844 | 8,570 | 50,005 |
| 2 | 0x1cFC260BfA… | 0.652 | $12,623.72 | 0.989 | 802 | 24,537 |
| 3 | 0x7F69983eB2… | 0.649 | $25,857.57 | 0.704 | 111,929 | 17,188 |
| 4 | 0xC8ab97a908… | 0.642 | $18,883.91 | 0.930 | 1,385 | 24,698 |
| 5 | 0x8e8D8163c3… | 0.639 | $1,228.35 | 0.991 | 639 | 18,700 |
| 6 | 0x2370d48501… | 0.633 | $48,233.79 | 0.943 | 648 | 4,239 |
| 7 | 0x2104D2eB66… | 0.630 | $11,490.77 | 0.980 | 854 | 1,598 |
| 8 | 0x9e41715A30… | 0.625 | $109,540.26 | 0.912 | 59 | 953 |
Jan 1, 2024 – Feb 23, 2026 · 784 days
Tier A is not a monotype. Ranks 2 and 3 illustrate this cleanly. Rank 2 posts with a maker_pct of 0.989 — it almost never crosses the spread — and executes 802 fills per day across 24,537 tokens. It is a precision passive operation: post, rest, collect. Rank 3 runs at maker_pct 0.704 and 111,929 fills per day — 139 times Rank 2's fill rate. It crosses the spread far more frequently but compensates through volume. Both wallets score within 0.003 of each other. They are the same tier expressing two different strategies: one optimizes edge per fill, the other optimizes fills at a lower edge. That both land in Tier A suggests the scoring function is correctly capturing profitability per unit of activity, not just raw throughput.
One entry does not fit either archetype. Rank 8: maker_pct = 0.912, 59 fills per day, realized P&L = $109,540.26 — the highest in Tier A by a factor of two, on the lowest fill rate in the table. Nothing in the Rank 2 vs. Rank 3 comparison prepares you for that ratio. The next section examines it directly.
The Anomaly
Rank 8 has the highest realized P&L in the cohort: $109,540.26. It also has the fewest fills per day: 59. These two facts are not supposed to coexist. Every other Tier A wallet earns through volume. Rank 3 runs at 111,929 fills/day. The Tier A average is 15,611. Rank 8 runs at 59.
The arithmetic is precise. 59 fills/day × 727 days = 42,893 total fills across 953 tokens: 45 fills per token over two years, or one fill per token every 16 days. $109,540 from 42,893 fills is $2.55 per fill. Spread-capture earns $0.01 per fill. Rank 8 earns 255× that. This is not spread capture.
The wallet posts directional positions as passive limit orders and holds until resolution. Maker rate: 91.2%. The 953-token footprint looks like a diversified book. It is not. These are sparse, concentrated positions — thin enough in aggregate to satisfy a token-breadth filter. The n_tokens ≥ 10 criterion was designed to exclude event-concentrated bettors. Rank 8 satisfies it while being, functionally, a directional trader using resting orders as its execution mechanism.
The Tier A classification is correct. P&L rank is weighted at 25% in the scoring model; Rank 8 leads it by $61K over the next wallet. Token breadth is satisfied. The model is self-consistent. The archetype is different: not spread capture, but outcome prediction expressed through the limit order book.
That anomaly is structural. The next finding is temporal.
The Turnover
The 8 prior-era operators shown in the introduction — 6,000–8,000 fills per day each, tens of millions in volume — were cross-referenced against the 2024–2026 dataset as a direct generalization check. If active under the same wallets, they would appear near the top of the current roster.
Jan 1, 2024 – Feb 23, 2026 · 784 days
Eight established operators. Uniformly absent.
The uniform absence is the signal. One wallet going quiet has a dozen explanations. All eight simultaneously has fewer. The conditions that made this profitable in the prior era no longer applied to these wallets by 2024. The mechanism is not in the data — spread compression as the platform scaled, alpha decay in models calibrated to a thinner market, capital rotation to better-returning venues. Any of these could account for it. The data does not distinguish. What it does say, unambiguously: the entire professional cohort from that period stopped operating under these wallets before the current window opened.
The current Tier A is not a continuation. These wallets share no lineage with the prior operators. Different addresses, different behavioral signatures, possibly different firms. The platform has also changed — more volume, more markets, deeper liquidity — which may itself have altered the economics of who can extract edge and how.
This analysis began by asking who the professionals are on Polymarket. The answer, as of 2026, is a cohort with no overlap with the professionals from two years prior. Prediction market liquidity provision turns over its full professional tier in approximately two years. The current Tier A wallets are the best operators visible in today's data — and they are operating in a market that already consumed one generation of operators before them.
Scoring Architecture
Tier assignment is the output of a two-pass pipeline. Pass 1 narrows the candidate pool before running the expensive FIFO computation; Pass 2 scores the narrowed pool on a combined set of behavioral and P&L features.
Pass 1 — Activity Screen: All 8,476 screened wallets are scored on six behavioral features — maker_pct, trades_per_day, buy_sell_balance, n_tokens, total_notional_usdc, hhi_inv — using equal-weight min-max normalization. The top 300 by this preliminary score proceed to FIFO computation. No P&L in Pass 1.
Pass 2 — Final Score: The 300 FIFO-scored candidates are scored on seven components. Tier boundaries are rank-based: A = top 8, B = top 28, C = top 108. The cutoffs are defined by rank, not by score gaps.
| Component | Weight | Rationale |
|---|---|---|
pnl_rank | 25% | Percentile rank of FIFO P&L — the ultimate quality signal |
maker_pct | 20% | True passive rate — cleanest strategy-archetype separator |
trades_per_day | 15% | Sustained daily cadence, not sporadic spikes |
buy_sell_balance | 10% | Consistently bilateral — not a net directional player |
n_tokens | 10% | Active across many outcome tokens |
total_notional_usdc | 10% | Capital deployed — separates retail-scale from institutional |
hhi_inv | 10% | Inverse HHI — diverse token footprint |
Jan 1, 2024 – Feb 23, 2026 · 784 days
FIFO accounting: Each wallet's top-50 tokens by trade volume. Each SELL is matched against the chronologically prior BUY on the same token. SELL records store size as USDC received; token quantity is recovered as size / price before matching. The full trade tape (20,509,699 fills across 300 wallets) is cached after the initial pull — re-runs are free.
Jan 1, 2024 – Feb 23, 2026 · 784 days
01_mm_scoring.py · 2026-02-22 21:19 UTC · n=8,476 wallets total · FIFO candidates: n=300 · 2024-01-01 → 2026-02-23 (784 days)