Files
PythagorasGoal/Old/docs/diary/2026-06-07-trendmax-gate.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.6 KiB
Raw Blame History

2026-06-07 — Gate trend_max sulle fade live: BOCCIATA l'aggiunta, PROMOSSO lo swap hurst→trend

Punto 7 della roadmap improvement-sweep: ripristinare trend_max=3.0/ema_long=200 sulle 6 fade live (ON nel backtest canonico, OFF in produzione). Il piano imponeva il gate PORT06 perché hurst e trend si sovrappongono. Esito sorprendente ma coerente.

Metodo

scripts/analysis/trendmax_port06_impact.py — engine riusato da exit16_port06_impact (replay esatto del path canonico, parità verificata: corr 1.00000 e diff 0.00% su tutte e 6 le fade) + maschera Hurst IDENTICA al live (fade_base.hurst_skip_mask, close-only, w=100 step=6 — non la cache regime_lab). Tutte le varianti girano sul path live (EXIT-16 close-confirm 0.5 attivo); PORT06 con pesi cap canonici (PAIRS 0.33, SHAPE 0.0588), OOS da 2024-10-12.

Nota di metodo: il test PORT06 del loss-guard Hurst (fade_lossguard_port_test, 2026-06-02) era su entries GIÀ trend-filtrate E sull'engine PRE-EXIT-16 (SL intrabar). La config live reale (hurst senza trend, con EXIT-16) non era MAI stata gateata.

Risultati (PORT06, fade in path live EXIT-16)

Variante FULL Sh FULL DD FULL CAGR OOS Sh OOS DD OOS CAGR
LIVE (hurst, no trend) 7.23 2.68% 68% 9.35 1.68% 92%
CANDIDATO (hurst+trend) 7.11 2.06% 59% 9.36 1.62% 83%
TREND-ONLY 3.0 7.89 2.46% 82% 9.91 1.20% 103%
NESSUNO (solo EXIT-16) 8.07 3.35% 105% 9.72 1.38% 119%
TREND-2.5 7.75 2.46% 76% 9.76 1.20% 96%
TREND-3.5 7.87 2.46% 84% 9.64 1.20% 103%

Letture

  1. CANDIDATO BOCCIATO (gate formale): il DD scende (2.68→2.06) ma FULL Sharpe 0.12 e CAGR 9pp — over-filtering, i due filtri tagliano lo stesso regime (n trade 50%, es. MR02_ETH 911→436).
  2. Il loss-guard Hurst è ridondante-dannoso post-EXIT-16: NESSUNO batte LIVE su Sharpe e ritorno ovunque. Spiegazione meccanica: hurst evitava i regimi stop-heavy saltando gli ingressi; EXIT-16 ha eliminato i wick-stop alla radice → gli ingressi che hurst salta sono in maggioranza tornati vincenti. Il 66% delle barre è oltre soglia hurst → il filtro toglieva metà dell'esposizione per un beneficio che ormai non c'è.
  3. TREND-ONLY domina LIVE su tutte e 4 le metriche ed è ESATTAMENTE la config che la ricerca EXIT-16 del 2026-06-04 aveva promosso (entries trend-filtrate, no hurst: FULL 7.84/2.60, OOS 10.06/1.15 — i 7.89/2.46 e 9.91/1.20 di oggi combaciano al netto di refresh dati e cap SHAPE). Il live non aveva mai eseguito quella config.
  4. Plateau robusto: trend_max 2.5/3.0/3.5 quasi indistinguibili (OOS DD 1.20 identico su tutte) → non è una soglia tunata.
  5. Il trend filter vs NESSUNO è un trade-off deliberato: 23pp CAGR FULL per FULL DD 3.35→2.46 e OOS Sharpe 9.72→9.91. Coerente con la filosofia del progetto (DD control > ritorno marginale).

Decisione (utente, 2026-06-07)

SWAP hurst→trend nelle 6 fade live (_defs.py): trend_max=3.0, ema_long=200, hurst_max rimosso. hurst_skip_mask resta in fade_base (param opzionale). Monitor live aggiornato: hourly_report ora traccia lo stop-rate per epoca PRE (nessun filtro) → HURST → TREND, verdetto a n≥30 nell'epoca TREND.

Lezione

Ogni meccanismo anti-perdite va RI-gateato quando cambia l'exit engine: hurst era genuinamente il migliore sull'engine a SL intrabar (unico su ~10 candidati), ma EXIT-16 ne ha assorbito il lavoro. I filtri si valutano sul path live corrente, non sui numeri storici di promozione.