Reset del progetto su fondamenta verificate dopo la scoperta che l'intera libreria "validata OOS" era artefatto di feed contaminato (print fantasma del feed Cerbero TESTNET + storico Binance/USDT). - Storico ricostruito da Deribit MAINNET (ccxt pubblico, tokenless) e CERTIFICATO (certify_feed.py): BTC/ETH puliti su TUTTA la storia (mediana 2-6 bps vs Coinbase USD), integrita' OHLC + coerenza resample (maxΔ 0.00) + cross-venue OK. Alt esclusi (illiquidi/divergenti: LTC/DOGE 50-82% barre flat; XRP/BNB non certificabili). - Verdetto sul feed pulito: FADE / PAIRS / XS01 / TSM01 morti (ogni portafoglio Sharpe -2.3..-3.0, DD ~40%); solo SH01 e frammenti HONEST con segnale residuo, da ri-validare in isolamento. - Cleanup "restart pulito": strategie, stack live (src/live, src/portfolio, runner/executor, yml, docker), ~100 script ricerca/gate, waste/games/ portfolios, dati non certificati + cache e 60+ diari -> archiviati in Old/ (preservati, non cancellati). Diario consolidato in un unico documento. - Skeleton ricerca tenuto: Strategy ABC + indicatori + src/fractal + src/backtest/engine + load_data; tool dati certificati (rebuild_history, certify_feed, audit_feed, multi_source_check). - Universo dati ATTIVO: solo BTC/ETH (5m/15m/1h); guardrail fisico (load_data su alt -> FileNotFoundError). Esecuzione DISABILITATA, conto flat. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
3.2 KiB
2026-06-09 — Gioco "Blind Traders": 100 agenti ciechi
Setup
100 agenti LLM (haiku) ricevono due serie anonime X e Y — in realta' BTC e ETH 1h/15m/5m, mai etichettate — e devono proporre UNA regola che "anticipi" i movimenti per un PnL netto positivo (fee 0.10% RT) con >=10 trade/mese. Non sanno cosa siano i dati. L'orchestratore (engine deterministico) valuta ogni strategia, assegna un punteggio su PNL + %win, da' 90 epoche di elaborazione (hill-climb dei parametri) e ogni 10 epoche blocca il 10% meno profittevole -> restano i 10 piu' profittevoli.
Infrastruttura in scripts/games/:
engine.py— dati anonimizzati, 6 famiglie segnale (zscore/breakout/ma_cross/ rsi/momentum/pairs), backtester causale fee-aware, scoring (>=10 tpm o squalifica).agent_brief.py— digest ANONIMO (stat aggregate + finestra normalizzata) + menu.arena.py— torneo a 3 finestre: TRAIN (hill-climb), VALID (cull+rank dell'orchestratore), TEST (OOS puro, mai ottimizzato). Anti-overfit.run_game.py— carica le 100 spec degli agenti e lancia il torneo.
Risultato emergente
I 100 agenti ciechi, leggendo SOLO le statistiche anonime (autocorrelazione negativa, "after_big_move_continues_pct" ~30-40% => le mosse estreme rientrano), hanno riscoperto da soli che il mercato e' mean-reverting: 100/100 reversion, 67 hanno scelto il detector pairs, 30 zscore. Esattamente la lezione storica del progetto (edge = reversione; pairs ETH/BTC il piu' robusto) — senza sapere che fosse crypto.
Classifica finale (top 10) — tutti PAIRS su 15m
Vincitore agente #91 (15m, pairs market-neutral sul log-ratio X/Y):
- TEST/OOS puro: PnL +3126%, win 77%, 108.9 trade/mese, Sharpe 20.3
- Full-period: PnL +8052%, win 70%, 94 tpm, Sharpe 12.2 (9604 trade)
- params: lookback 66, entry 1.67σ, exit 1.0σ, max_bars 35
- ipotesi (cieca): "Y altamente reversivo, X/Y log-ratio strong mean-reversion (-0.43 autocorr), bassa correlazione cross-asset -> pairs market-neutral".
Tutti i 10 finalisti: pairs 15m, TEST Sharpe medio 19.9, tpm 66-109 (>>10).
Caveat onesti
- Numeri OOS ottimistici: PnL additivo a notional fisso, niente slippage sulle 2 gambe, finestra OOS calma, 15m molti trade. Coerente col caveat PR01 del progetto (Sharpe reale atteso ~4-5, non 20). Il valore del gioco e' il metodo (scoperta cieca + selezione anti-overfit), non il livello assoluto di Sharpe.
- La convergenza su pairs conferma robustezza ma riduce la diversita': i 10 finalisti sono varianti della stessa idea (ETH/BTC spread). Per un portafoglio servirebbe diversificare (gia' fatto altrove: fade + honest + shape).
Re-run "sobrio" con slippage (0.05%/lato)
GAME_SLIP=0.0005 -> i pairs pagano +0.20% RT extra (4 lati). Lo slippage spinge
l'ottimizzatore verso meno churn: tpm dei finalisti 66-109 -> 40-47, Sharpe
top-10 ~20 -> ~13.5. Vincitore #43 (15m pairs): TEST PnL +2091%, win 77%,
46.9 tpm, Sharpe 15.6. La gerarchia (pairs 15m domina) e la robustezza
reggono lo stress; lo Sharpe reale atteso resta ~4-5 (OOS calmo + PnL additivo).
Log: data/games/game_slip.log.
Artefatti: data/games/tournament_result.json, data/games/specs/agent_*.json,
engine.set_slippage() (env GAME_SLIP).