Files
PythagorasGoal/Old/docs/diary/2026-06-09-blind-traders-game.md
T
Adriano Dal Pastro 14522262e6 chore(reset): v2.0.0 — storico certificato Deribit mainnet, ripartenza pulita
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>
2026-06-19 15:20:59 +00:00

3.2 KiB
Raw Blame History

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).