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>
5.6 KiB
Diario — 2026-06-05 — SL su SH01: ricerca multi-agente (verdetto: NO-SL, cap del peso)
Innesco
Crash ETH del 2026-06-05 (1742→1546, −11%, con feed testnet FLAT ~2h e gap 1655→1600): SH01 ETH si è preso la coda intera, −15.6% in un trade (long 1727.8 → time_limit 1594.35, leva 2x) — il singolo trade peggiore del portafoglio live. SH01 non ha TP/SL per design (exit solo a orizzonte H=12). Domanda: esiste uno SL che taglia le code senza distruggere l'edge (win ~50%, edge tutto nell'asimmetria dei winner)?
Numeri storici per anno (config live W24 H12 th0.58, netto fee 0.10% RT, leva 3x)
Somma per-trade in pp (leva 3x); equity-level ≈ ×0.15.
| Anno | BTC | ETH |
|---|---|---|
| 2018 | −65.8 | +73.7 |
| 2019 | +87.7 | −19.3 |
| 2020 | +194.0 | −293.1 |
| 2021 | +301.3 | +67.4 |
| 2022 | +64.3 | +79.1 |
| 2023 | +17.4 | +20.6 |
| 2024 | +110.0 | +108.1 |
| 2025 | +76.8 | +539.7 |
| 2026 | +59.0 | −29.5 |
BTC = motore robusto (8/9 anni+). ETH = fragile (DD 61%, win 48.8%): la coda non protetta è un problema STRUTTURALE di ETH, non solo dell'episodio live.
Infrastruttura (riusabile)
scripts/analysis/sh01_exit_lab.py — harness onesto stile exit-lab:
- cache segnali walk-forward (
data/cache/sh01_exit_lab.pkl, 7248 BTC + 7386 ETH entries); - engine intrabar con fill GAP-AWARE: stop fillato a
worse(livello, open[j]), non "al livello" — chiude il bias PRO-stop-stretti documentato il 2026-06-04 (54% di fill ottimisti) e modella il caso reale del crash (gap 1655→1600 senza scambi intermedi); - modalità stop
intrabareclose(close-confirm stile EXIT-16),after_barper policy discrezionali, stresslag_close_exit(poll in ritardo); - parity ESATTA con
explore_lab.simulate(BTC +218.50%/1531 trade, ETH +80.13%/1257); - protocollo: TRAIN fino 2023-11-01 (selezione SOLO lì, plateau ≥3 celle), OOS una volta.
Baseline (orizzonte puro): BTC TRAIN +127%/dd23/shrp2.09/worst−5.5 | OOS +41%/8/2.18/−3.1. ETH TRAIN −26%/dd61/shrp−0.16/worst−14.9 | OOS +143%/7/3.60/−4.6.
Esito: 11 famiglie testate, 0 sopravvissute
Policy in scripts/analysis/sh01_exit_policies/ (01-10 dagli agenti + 11 dal
completeness-probe della sintesi):
| # | Famiglia | Verdetto |
|---|---|---|
| 01 | ATR fisso intrabar (k 1–5) | NO: 0/7 celle migliorative sul train |
| 02 | ATR fisso close-confirm (k 1–5) | NO: k=4 migliora ETH train (shrp −0.16→+0.62, DD 61→41, worst −8.4) MA ETH-OOS peggiora (shrp 3.60→2.32, worst −6.6) |
| 03 | % fisso (1–5%, 2 modi) | NO: BTC↓, ETH-OOS ret 52% del baseline |
| 04 | Chandelier trailing | NO: cella isolata; ETH-OOS tutto peggio (4ª bocciatura della famiglia trailing) |
| 05 | Breakeven ratchet | NO: 0 celle migliorative |
| 06 | Giveback (profit-protection) | NO: dormiente sulle code (worst invariato), taglia winner BTC |
| 07 | Loser time-stop (m,x) | NO: ETH-OOS shrp↓ DD↑, BTC↓ |
| 08 | Disaster-cap LARGO close-confirm (k 3–6) | NO: k=4 plateau sul train ma ETH-OOS DD 7→11-15%, ret 59-74%; FABBRICA short da stop a −44/−54% |
| 09 | Swing strutturale | NO: 0/18 celle |
| 10 | Stop condizionale vol-regime | NO: il migliore dei falliti (ETH-OOS shrp 3.28 vs 3.60) ma BTC train <95% |
| 11 | Disaster-cap LARGO intrabar (k 5–12) | NO: k=10 cella isolata; BTC-OOS shrp 2.18→0.92, worst −3.1→−11.4 (il fill gap-aware rende lo stop più tossico del no-stop) |
Pattern (5ª conferma della lezione exit-lab): ogni stop abbastanza stretto da toccare la coda ETH intacca il motore BTC; ogni stop abbastanza largo da risparmiare BTC non arriva mai alla coda ETH. Per un segnale win~50% con edge nell'asimmetria dei winner, OGNI SL taglia i winner-in-drawdown insieme ai loser. In più il fill gap-aware mostra che proprio nei crash (quando lo stop servirebbe) il fill è al gap, non al livello: lo stop intrabar largo PEGGIORA la coda OOS di BTC invece di proteggerla.
Decisione
-
NO SL su SH01 (né
slnésl_confirm_atrper SH_BTC/SH_ETH: corretto E sicuro — il fallback −2% del worker si applica solo seslè presente). -
La leva giusta è il PESO: cap della famiglia SHAPE nel weighting di PORT06 (
weighting.pysupporta giàcapsper famiglia, come PAIRS 0.33). Dimezzare la quota SHAPE ≈ dimezza l'impatto della prossima coda −15% sul conto, a costo ~nullo di Sharpe (SH01 è un diversificatore, corr +0.08 col MASTER). -
APPLICATO E DEPLOYATO (stesso giorno):
caps={"PAIRS": 0.33, "SHAPE": 0.0588}in_defs.py(SHAPE 11.8%→5.9%, ≈ mezzo sleeve equal; SH_BTC=SH_ETH=0.0294, somma pesi 1.0, verificato). Quantificato sul backtest PORT06:Config FULL Sharpe FULL DD CAGR OOS Sharpe OOS DD precedente (SHAPE 11.8%) 6.47 4.10% 61.2% 8.82 1.30% cap SHAPE 5.9% (scelto) 6.43 3.96% 62.1% 8.58 1.36% SHAPE rimosso 6.30 3.88% 63.0% 8.26 1.41% Il costo (−0.24 OOS Sharpe) è il premio dell'assicurazione su una coda che il backtest daily NON modella (gap di feed, flat testnet). Rimuovere SHAPE costa troppo (8.26).
Direzioni future (fuori scope SL, annotate dalla sintesi)
- Liquidity/staleness-gate sull'ENTRY (skip ingressi dopo finestre di feed flat — il flat 2h ha preceduto il gap del 2026-06-05): la direzione più promettente per il gap-through specifico, merita uno studio dedicato.
- Vol-target sizing per-trade su SH01 (sulle fade fallì, su SH01 mai testato).
- SL solo-ETH: scartato anche concettualmente (il beneficio coda ETH è marginale/nullo OOS in TUTTE le famiglie — non è un problema di uniformità del meccanismo).