Files
winning-wallet-finder/live/clean_test.sh
T
jaxperro 3d0bc7f001 Add live/ skilled-wallet scanner + cache; document clean OOS finding
live/: operationalizes the LBS/Yale "skilled ~3%" result against the live
data-api. Enumerate recent liquid markets -> top traders -> candidate pool;
cache every wallet's resolved bets once in DuckDB (~26k wallets / 12.5M bets,
keyed by per-bet resolution time so any cutoff re-scores in seconds); 5-gate
skill funnel (n>=15, z>0, BH-FDR, split-half OOS, MM/bot cap); dashboard +
daily refresh.

Key finding: copying the high-win-rate "favorite-rider" cohort looks +23.6%
in-sample but loses -7.4% once selected on pre-June-1 data only (99% -> 68%
win rate) — selection bias, reproducing the paper's "lucky winners revert"
result on live data. Win rate != edge, again.

wide/: bulk subgraph->DuckDB scanner (survivorship-bias-free over all wallets),
but the public subgraph is frozen at Jan 2026 -> historical tool only.

Large local data (*.duckdb, candidates.json, *_scored.json, history/) gitignored.
README + FINDINGS updated with the current logic and the clean result.

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
2026-06-18 11:16:20 -06:00

14 lines
684 B
Bash
Executable File

#!/bin/bash
# Clean out-of-sample test:
# 1) re-select skilled wallets using ONLY bets resolved before June 1
# (selection cannot peek at the June 1+ test window)
# 2) copy the resulting FAVORITE-rider wallets' June 1+ entries, $1000, no lag
# This removes the selection contamination of the first backtest.
set -u
cd "$(dirname "$0")"
echo "[clean] $(date '+%F %T') re-scoring candidates on PRE-June-1 data only…"
SKILL_BEFORE=2026-06-01 SKILL_OUT=watch_prejune.json python3 skill.py 2000
echo "[clean] $(date '+%F %T') backtest: copy pre-June-1 favorites' June1+ entries"
BT_WATCH=watch_prejune.json python3 backtest_june.py favorite
echo "[clean] $(date '+%F %T') done"