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>
3.6 KiB
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
- 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).
- 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'è.
- 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.
- Plateau robusto: trend_max 2.5/3.0/3.5 quasi indistinguibili (OOS DD 1.20 identico su tutte) → non è una soglia tunata.
- 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.