Punto 7 roadmap sweep. Gate trendmax_port06_impact.py (engine exit16_port06_impact riusato, parita' canonica 1.00000; maschera hurst IDENTICA al live via fade_base.hurst_skip_mask; PORT06 pesi cap, path live EXIT-16): - CANDIDATO (hurst+trend) BOCCIATO: over-filtering (FULL Sharpe 7.23->7.11, meta' dei trade) nonostante DD 2.68->2.06. - SCOPERTA: il loss-guard Hurst e' ridondante-DANNOSO post-EXIT-16 (NESSUNO batte LIVE: FULL Sh 8.07 vs 7.23). EXIT-16 ha eliminato i wick-stop che hurst evitava -> gli ingressi saltati (66% delle barre) sono tornati vincenti. Il test che promosse hurst (2026-06-02) era sull'engine PRE-EXIT-16. - TREND-ONLY domina LIVE su tutte le metriche (FULL Sh 7.89 DD 2.46, OOS Sh 9.91 DD 1.20) ed e' la config che la ricerca EXIT-16 aveva davvero promosso (entries trend-filtrate, no hurst) mai eseguita dal live. Plateau 2.5/3.0/3.5 robusto. Decisione (utente): SWAP. _defs.py: trend_max=3.0 + ema_long=200 nelle 6 fade, hurst_max rimosso (hurst_skip_mask resta in fade_base). hourly_report: monitor stop-rate per epoca PRE->HURST->TREND (verdetto a n>=30). CLAUDE.md aggiornato (paragrafo hurst marcato storico). Diario docs/diary/2026-06-07-trendmax-gate.md. Lezione: ri-gateare ogni filtro quando cambia l'exit engine. 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.