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 --xref co-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 > 0 wallets 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 from pm_trades trade_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-shrunk edge_lower with a hard per-wallet CAP (to neutralize the one +30σ wallet) and a bounded tanh stake-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 from short_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_z wallet 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 0x75cc3b parameterizations — 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 > 0 wallets 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).

  • xref-consensus-rejected-fresh-copy-winsthe verdict on this design’s core premise: a leakage-clean purged --xref backtest 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; the edge_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