mirror of
https://github.com/jaxperro/winning-wallet-finder.git
synced 2026-07-27 15:57:47 +00:00
3d0bc7f001
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>
32 lines
1.2 KiB
Bash
Executable File
32 lines
1.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# Massive ingest of the wallet data we still need, from the FAST subgraph
|
|
# (accounts + market_positions). The CLOB token map is already sufficient
|
|
# (1.27M tokens covering every resolved condition), so it's NOT re-run here —
|
|
# run `python3 clob_tokens.py` separately if you want to refresh it.
|
|
#
|
|
# Both steps are parallel (16 id-shards) and resumable (per-shard cursors), so
|
|
# killing and re-running continues from the last checkpoint.
|
|
#
|
|
# nohup ./run_full.sh > run_full.log 2>&1 < /dev/null & disown
|
|
# tail -f run_full.log
|
|
set -u
|
|
cd "$(dirname "$0")"
|
|
|
|
until python3 -c "import duckdb;duckdb.connect('pmkt.duckdb',read_only=True).close()" 2>/dev/null; do
|
|
sleep 5
|
|
done
|
|
|
|
echo "[run] $(date '+%F %T') 1/2 accounts (parallel, resumable) …"
|
|
python3 ingest.py -p accounts
|
|
|
|
echo "[run] $(date '+%F %T') 2/2 market_positions (parallel, resumable, the big one) …"
|
|
python3 ingest.py -p market_positions
|
|
|
|
echo "[run] $(date '+%F %T') DONE"
|
|
python3 - <<'PY'
|
|
import duckdb
|
|
c = duckdb.connect("pmkt.duckdb", read_only=True)
|
|
for t in ("conditions", "market_data", "accounts", "market_positions"):
|
|
print(f" {t:18} {c.execute('select count(*) from '+t).fetchone()[0]:,}")
|
|
PY
|