The Phase 2+ target design for the consensus signal: replace the naive count >= 2 agreement rule with a skill-weighted logarithmic opinion pool over the fresh, point-in-time forecasts of independent skilled wallets, then trade only when the residual edge survives fees and slippage. Synthesis of three R&D lenses (2026-06-01). Full spec: docs/superpowers/specs/2026-06-01-best-consensus-algo-design.md.
SUPERSEDED — the consensus MECHANISM was rejected on a leakage-clean backtest (2026-06-01)
A purged
--xrefco-occurrence backtest (xref-consensus-rejected-fresh-copy-wins, EVENT-only, verified twice, negative control ≈0) found that requiring ≥K top traders to agree monotonically HURTS ROI: copying the first cohort BUY (K1) = +7.59% (all 3 folds positive) while K2 (+5.3–6.6%) / K3 (negative) are progressively worse. Consensus is structurally late — the first informed entry is the well-priced one; agreement is the market catching up. The goal (copy skilled traders) is validated, but the cross-reference mechanism this whole design is built on is refuted: the right answer is no consensus gate — copy the first mover, fast. Read that note before investing in the machinery below.
Design target, not validated — and the fancy version may lose to a simple baseline
This is a proposed algorithm. It has not been backtested, and its inputs must be re-derived leakage-free first (see consensus-validation-leakage). Honest caveat below: the edge is thin/concentrated (maybe 1–2 wallets), and the forecast-combination literature warns a simple equal-weight log-pool of
edge_lower > 0wallets may beat the fancy version — so that simple pool is a required baseline arm in any backtest, not an afterthought.
For Agents
One-line spec: output
p_agg= calibrated geometric mean of odds (log opinion pool) over fresh (built frompm_tradestrade_time, market-time-decayed) forecasts of independent skilled wallets; independence via effective-N (Kish design-effect + eigenvalue participation ratio over a co-entry/Jaccard wallet-dependence matrix); weights = EB-shrunkedge_lowerwith a hard per-wallet CAP (to neutralize the one +30σ wallet) and a boundedtanhstake-conviction term;edge = p_agg − cur_price; trade only when residual edge survives fees + √-impact slippage and skilled money isn’t split (disagreement → abstain). Full spec:docs/superpowers/specs/2026-06-01-best-consensus-algo-design.md.
What it replaces
The current production signal is a count >= 2 agreement gate over wallets chosen by PnL-leaderboard intersection (see selector-vs-skill-gap). That conflates “two wallets happen to be on the same side” with “skilled, independent money agrees, and the price hasn’t already moved.” The design below fixes all three: who counts, how their views combine, and when to actually act.
The pipeline
1. Fresh, point-in-time forecasts (no live snapshots)
Each wallet’s forecast is built from pm_trades using trade_time and a market-time decay (decay in the market’s own time-to-resolution, not wall-clock), so the input is the state knowable at decision time. This is the same point-in-time discipline the validation work demands — it explicitly avoids the live-position leakage documented in consensus-validation-leakage.
2. Skill weighting — EB-shrunk edge_lower, capped
- Weight each wallet by its Empirical-Bayes-shrunk
edge_lower(the conservative Wilson-lower-minus-price edge fromshort_term_accuracy.rs, shrunk toward the population so small-sample wallets don’t dominate). - Apply a hard per-wallet cap on the weight. This is specifically to neutralize the one +30σ wallet — a single extreme-
edge_zwallet must not be able to swing the pool by itself, no matter how good its point estimate looks.
3. Independence — effective-N, not raw count
Counting wallets overstates information when they co-move. Compute an effective number of independent voices:
- Kish design-effect on the weights, and
- eigenvalue participation ratio over a wallet-dependence matrix built from co-entry / Jaccard overlap (how often wallets are in the same markets on the same side).
So five wallets that always trade together count as ~1, while three genuinely independent wallets count as ~3. Independence, not headcount, drives confidence.
4. Conviction — bounded tanh of stake
Fold in stake-conviction — how large the wallet’s stake is relative to its norm — through a bounded tanh transform, so a big bet adds weight but cannot run away (saturates). Bounded by design, consistent with the per-wallet cap philosophy.
5. Combine — logarithmic opinion pool (geometric mean of odds)
Combine the (independent, skill-and-conviction-weighted) forecasts with a logarithmic opinion pool — the geometric mean of the odds, not the arithmetic mean of the probabilities. The log pool is the principled aggregator for combining probabilistic forecasts: it is externally Bayesian and handles confident disagreement sensibly. Output a calibrated p_agg.
6. Act — only on residual edge, and only when money agrees
edge = p_agg − cur_price— the aggregate forecast minus the current market price.- Trade only when the residual edge survives fees + √-impact slippage (the 2026 PM taker fee
Θ·C·p·(1−p)plus a square-root market-impact slippage model), and - skilled money isn’t split — if the skilled wallets disagree, abstain. Confident disagreement among informed traders is a no-trade, not an averaged half-position.
Why sports noise dissolves for free
No keyword/category filter is needed to drop sports markets. Sports wallets have ~0 edge_z — they carry essentially no measured edge — so EB-shrunk edge_lower weighting drives their contribution to ~0 automatically. The skill weighting is the category filter. (This is a cleaner answer than the manual keyword filtering considered elsewhere.)
Honest caveats
The edge is thin and concentrated
The measured edge may rest on 1–2 wallets. A sophisticated pool over a near-singleton signal does not manufacture robustness — it can overfit the machinery to one wallet’s idiosyncrasies (which is exactly the trap that biased earlier
0x75cc3bparameterizations — see top-trader-edge). The per-wallet cap is a partial guard, but thin concentration is the dominant risk.
The forecast-combination puzzle — simple may win
A long literature finds simple combinations (equal-weight) frequently beat optimized ones out-of-sample. Therefore a simple equal-weight log-pool of all
edge_lower > 0wallets is a REQUIRED baseline arm of the backtest. If the fancy effective-N / EB-shrinkage / conviction version does not beat that simple pool leakage-free (per consensus-validation-leakage’s purged+embargoed CPCV + DSR + shuffled-label controls), ship the simple one.
Spec location
Full design: docs/superpowers/specs/2026-06-01-best-consensus-algo-design.md (in the polymarket_fetch repo).
Related
- xref-consensus-rejected-fresh-copy-wins — the verdict on this design’s core premise: a leakage-clean purged
--xrefbacktest rejects the consensus mechanism (more agreement → worse ROI; first mover +7.59% beats everything). Resolves the open “does consensus help?” question this doc posed — the answer is no consensus gate, copy the first mover fast. - consensus-validation-leakage — the inputs to this design must be re-derived leakage-free; its CPCV / DSR / shuffled-label controls are the gate this design must pass, and the simple-pool baseline arm is mandated there too
- selector-vs-skill-gap — the
count >= 2/ PnL-intersection status quo this replaces; theedge_lower/edge_z/ persistence machinery this design weights by - short-term-accuracy — source of
edge_lower,edge_z, Wilson lower bound, and the Monte-Carlo luck baseline this design draws on - copy-trade-algorithm — the no-edge verdict and “consensus = information, not instructions” demotion that motivates a principled rebuild
- top-trader-edge — the thin/concentrated edge (and the overfit-to-one-wallet trap) the caveats warn about
- polymarket-fetch — schema (
pm_trades), selectors, CLI surface this would slot into - TOPICS — project theme index