Files
PythagorasGoal/docs/diary/2026-06-05-sh01-sl-research.md
T
Adriano Dal Pastro bd6232dc00 config(PORT06): cap SHAPE 0.0588 — SH01 resta senza SL (ricerca multi-agente: 11 famiglie di stop, 0 sopravvissute)
Crash ETH 2026-06-05: SH01 ETH −15.6% su un trade (exit solo a orizzonte, nessuna
protezione). Ricerca con harness dedicato sh01_exit_lab (cache walk-forward, engine
fill gap-aware worse(livello,open), parity esatta con explore_lab, train<=2023-11-01):
ATR intrabar/close-confirm, %, chandelier, breakeven, giveback, loser-timestop,
disaster-cap close+intrabar, swing, vol-regime — NESSUNA passa il gate (ogni stop
stretto rompe BTC, ogni stop largo non tocca la coda ETH; nei crash il fill e' al gap).
Mitigazione: peso famiglia SHAPE 11.8%->5.9% in PORT06 (FULL 6.47->6.43 DD 4.10->3.96,
OOS 8.82->8.58 DD 1.30->1.36) — la prossima coda impatta il conto per meta'.
Regression-lock test aggiornato. Diario: docs/diary/2026-06-05-sh01-sl-research.md

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-05 17:56:16 +00:00

5.6 KiB
Raw Blame History

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 intrabar e close (close-confirm stile EXIT-16), after_bar per policy discrezionali, stress lag_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/worst5.5 | OOS +41%/8/2.18/3.1. ETH TRAIN 26%/dd61/shrp0.16/worst14.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 15) NO: 0/7 celle migliorative sul train
02 ATR fisso close-confirm (k 15) 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 (15%, 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 36) 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 512) 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é slsl_confirm_atr per SH_BTC/SH_ETH: corretto E sicuro — il fallback 2% del worker si applica solo se sl è presente).

  • La leva giusta è il PESO: cap della famiglia SHAPE nel weighting di PORT06 (weighting.py supporta già caps per 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)

  1. 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.
  2. Vol-target sizing per-trade su SH01 (sulle fade fallì, su SH01 mai testato).
  3. SL solo-ETH: scartato anche concettualmente (il beneficio coda ETH è marginale/nullo OOS in TUTTE le famiglie — non è un problema di uniformità del meccanismo).