# 2026-06-10 — Gioco "Blind Traders" sessione 3: GRID TRADERS (regola: STRATEGIA_GRIGLIA.md) ## Setup Terza sessione del gioco dei trader ciechi, con una regola nuova: ogni agente deve implementare la strategia descritta in `STRATEGIA_GRIGLIA.md` (grid trading a griglia geometrica). 100 agenti (haiku, via Workflow) ricevono SOLO un digest anonimo di due serie X/Y (in realtà BTC/ETH, mai rivelato) sul loro timing assegnato (25×15m, 20×30m, 20×1h, 15×2h, 12×4h, 8×1d) + 5 archetipi di stile a rotazione (prudente / aggressivo / asimmetrico-rialzista / asimmetrico-ribassista / data-driven), e propongono la CONFIGURAZIONE della griglia: `range_down/up %`, `grid_levels`, `sl_buf`, `tp_buf`, `max_bars`, serie. Infrastruttura nuova in `scripts/games/`: - **`grid_engine.py`** — backtest deterministico, causale, fee-aware della spec: griglia geometrica `ratio=((1+ru)/(1-rd))^(1/L)` costruita sul close di deploy, capitale 1/L per livello (§3.3), buy su attraversamento ↓ di un livello non riempito, sell del livello su attraversamento ↑ del successivo (§5.2), SL sotto il range e TP sopra che liquidano tutto (§6), redeploy a fine episodio (SL/TP/max_bars). **Vincolo break-even §4 implementato alla lettera**: passo ≤ 1.5×costo RT → il motore si rifiuta di partire (`refused`, fitness −2e6); `_normalize` dell'arena riduce i livelli al massimo legale. Fill intrabar lungo il percorso O→L→H→C / O→H→L→C; fee 0.10% RT per round-trip + slippage opzionale. - **`grid_arena.py`** — torneo identico alle sessioni 1-2: split 60/20/20 TRAIN/VALID/TEST, 90 epoche di hill-climb sul TRAIN, cull del 10% in VALID ogni 10 epoche → 10 superstiti; TEST = OOS puro mai ottimizzato. - **`grid_brief.py`** — digest anonimo con statistiche per dimensionare una griglia: escursione max/min rolling (w100/500/2000, mediana e p90) e probabilità di fuga da un range ±5/10/20% entro 500 barre. ## Esito `data/games/grid_result.json` (+ log `grid_tournament.log`). 100/100 spec da agenti reali (nessun sostituto random). - **Alla proposta, 80/100 agenti scelgono X (=BTC)**: dai soli numeri anonimi capiscono che la griglia sopravvive meglio sulla serie meno volatile (escape ±20% in 500 barre: BTC 34.5% vs ETH 53.2% a 1h). - **L'evoluzione ribalta la scelta: tutti i 10 superstiti finiscono su Y (=ETH)** — nel periodo VALID/TEST la vol più alta di ETH paga di più i round-trip, e il rischio trend è gestito non dal range stretto ma dalla FORMA della griglia (sotto). - **Convergenza fortissima della forma** (9/10 superstiti): griglia **asimmetrica ribassista** — range profondo sotto (−13/−20%), corto sopra (+4/+8%), **livelli al minimo (4)** → passo largo ~4.5-5.5%, SL buffer profondo (5-15%), max_bars lunghi. Tradotto: **compra i dip di ETH in 4 tranche distanziate ~5%, rivendi ogni tranche al rimbalzo di un passo, stop catastrofale a ~−25/−30%**. Il gioco ha ri-scoperto per la terza volta la mean-reversion (qui in forma di dip-buying a tranche), e ha imparato da solo la lezione anti-fee: meglio pochi passi larghi che griglie fitte. **Vincitore: agente #11, ETH 15m**, griglia −17.1%/+4.6% × 4 livelli, SL buf 12.4%, TP buf 4.8%, max 2143 barre. TEST(OOS): **PnL +891% (additivo), win 97%, 38.5 trade/mese, Sharpe 10.1**. FULL 2018-2026 (include bear 2018 e 2022): +4284%, Sharpe 9.6. Stress slippage TEST: 0.05%/lato → 871%, 0.10%/lato → 850% (il passo ~5.4% ⋙ costi). ## Caveat onesti (perché NON è un candidato deploy così com'è) 1. **Il PnL è additivo per-trade e non misura il drawdown UNREALIZED**: l'engine somma i round-trip realizzati; mentre la griglia tiene 4 tranche dentro un drawdown −17%, l'equity vera è sott'acqua (fino a ~−15% di episodio + SL −25/30% quando scatta). Il win-rate 97% è il profilo classico della griglia: tante micro-vincite, perdite rare ma grandi (stessa famiglia di rischio del short-vol/martingala). Per un gate serio servirebbe l'equity curve mark-to-market. 2. **Long-only su ETH con VALID/TEST 2023-2026** (regime rialzista/oscillante): l'asimmetria −17/+4.6 è anche un fit al regime. Il FULL positivo (bear inclusi) è incoraggiante ma il grosso del PnL resta nei periodi di reversione rialzista. 3. Le candele flat ETH 15m (14-30%/anno) e i fill intrabar "al livello" condividono i caveat noti del progetto (bias pro-stop-stretti dell'engine intrabar; qui gli stop sono larghi, quindi l'effetto è minore). ## Lezioni - La spec STRATEGIA_GRIGLIA.md è implementabile in modo causale e onesto; il suo vincolo break-even (§4) è esattamente la "lezione fee" del progetto, e il torneo l'ha confermato spingendo i livelli al minimo (passo massimo). - La griglia evoluta è un parente povero delle fade MR già in live: stesso edge (reversione ETH), ma incassato con inventory risk crescente invece che con TP/SL per-trade. Non sostituisce le MR; eventuale interesse solo come variante "a tranche" da gateare con equity mark-to-market (e confronto con MR01/MR02 a parità di rischio) PRIMA di pensarci per il PORT06. ## GATE "si puo' inserire?" (stessa sera) — NO-GO: edge = artefatto delle wick testnet `scripts/analysis/grid_game_gate.py`: engine **mark-to-market** dedicato (equity per barra = capitale + inventario al close, SL gap-aware, flat-skip, fee 0.10% RT), metriche standard del progetto + gate PORT06. Primo passaggio ingannevole: standalone WINNER 15m FULL Sharpe 5.61 DD 15.8%, corr max coi sleeve 0.34, plateau 16/16, e il criterio formale promuoveva il half-size (OOS Sh 10.07->10.12, DD 1.48->1.36). MA il breakdown annuale mostrava **+4946% nel 2022** (ETH −70%): impossibile. **Verifica avversariale decisiva**: il feed Deribit (testnet) e' pieno di **spike print** — ETH 15m ha 1064 barre con wick ≥6% sotto i close adiacenti che rientrano subito (fino a −19% in 15 minuti; BTC ha spike a −54% nel feb 2024). La griglia intrabar compra su quelle wick FINTE e rivende al rimbalzo: free money in sim, infillabile dal vivo. Stress **close-only** (fill solo su attraversamento del close): WINNER 15m CAGR 1544%->21%, Sharpe 5.61->0.92, OOS +2738%->+32%, trades 3803->1156; top3 1h CAGR -1.7%, OOS −18%. **~99% dell'edge vive nelle wick.** La versione onesta (Sharpe 0.92, DD 27%) e' molto sotto ogni sleeve deployato → **NON inseribile**, in nessuna size. Lezioni aggiuntive: - Il torneo ha massimizzato esattamente l'artefatto: la convergenza su ETH 15m range profondo era la firma del **wick harvesting**, non di un edge. - I motori intrabar dei giochi (`grid_engine`, e in misura minore i TP intrabar di `engine.py`) vanno SEMPRE stressati con una variante close-only prima di promuovere qualunque vincitore: aggiungere il check ai prossimi giochi. - Gli sleeve in produzione NON sono toccati da questo artefatto nello stesso modo: pairs entra/esce sui close, le fade hanno EXIT-16 close-confirm sullo SL, e soprattutto il ledger REAL-TRUTH usa i fill reali (che gli spike non fillano). Artefatti: `scripts/games/grid_{engine,arena,brief}.py`, spec agenti in `data/games/specs_grid/`, digest `data/games/grid_digests.json`, risultato `data/games/grid_result.json`, log `data/games/grid_tournament.log`, gate `scripts/analysis/grid_game_gate.py` (param `close_only` per lo stress anti-wick).