- Add copyback.py (in-sample copy backtest), oos.py (out-of-sample test),
huntwide.py (wide insider sweep) — completes the detect→hunt→validate→watch
pipeline.
- Rewrite README around Winning Wallet Finder: the z-score idea explained, how
the pieces fit, quickstart, data sources, live-watcher setup, honest verdict.
- Extend FINDINGS with the insider-detection results and the in-sample vs
out-of-sample copy verdict (+545% in-sample collapsed to one-wallet variance
out-of-sample).
- Refresh config.example.json to the current schema (discord/alchemy/watch).
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
The scanner measured win rate over /closed-positions only, but Polymarket
only redeems winning shares — losers sit unredeemed in /positions at
curPrice 0 and never enter closed-positions. That made win rates wildly
inflated (e.g. 90.6% vs a true 48.3%). Win rate now unions both endpoints
over a 90-day window. With the honest metric, ~no top wallet exceeds ~60%;
true rates cluster near 50%.
Also:
- backtest.py: replay a watchlist over a recent window, fill at historical
price, mark outcomes from resolution. A 7d run of 4 top wallets returned
-48%, confirming flat-size entry-copying is -EV at ~50% hit rates.
- copytrade.py: add max_position_usd cap (proportional adds could otherwise
balloon one position to the whole exposure limit) and Discord webhook
alerts on every would-be trade.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Watches a wallet list and copies trades onto your account: % -of-bankroll
sizing, proportional entry/exit mirroring, 5% price guard, and a no-backfill
rule for positions held before start. Paper mode by default; live trading is
gated behind config + --live + a typed confirmation, with hard risk caps
(per-trade, daily, total exposure, open positions, price bounds). Live
execution via py-clob-client (lazy import). Credentials/state gitignored.
Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>