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