feat(fade): swap filtro live hurst->trend_max 3.0 (gate PORT06 sul path live)
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>
This commit is contained in:
@@ -0,0 +1,64 @@
|
||||
# 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.
|
||||
Reference in New Issue
Block a user