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>
This commit is contained in:
Adriano Dal Pastro
2026-06-19 15:16:03 +00:00
parent 8401a280b9
commit 14522262e6
383 changed files with 1971 additions and 779 deletions
+49
View File
@@ -0,0 +1,49 @@
# 2026-06-07 — DIP01 EXIT-16: PROMOSSO (gate gap-aware, il più netto della serie)
Punto 9 della roadmap sweep: DIP01 era l'unico sleeve BTC con esecuzione REALE
round-trip e girava ancora sul branch SL intrabar wick-sensitive. EXIT-16 era
validato SOLO sulle fade: estensione a una strategia honest dietro doppio gate
(grid proprio di DIP01 + PORT06), con engine GAP-AWARE come da lezione exit-lab.
## Metodo (`scripts/analysis/dip01_exit16_impact.py`)
- Parità con la equity canonica: corr **1.00000**, ret +322% identico.
- **Engine gap-aware**: nel ramo orig lo SL filla a `worse(livello, open[j])`
l'engine canonico filla "al livello" anche su gap-through (54% dei casi per stop
tight) e regalerebbe al ramo intrabar un vantaggio fittizio.
- Grid 3×3×2 (z_in × sl_atr × max_bars) su BTC (deployato) ed ETH (robustezza);
train (pre 2024-10-12) e OOS separati. Buffer plateau {0.4, 0.5, 0.75, 1.0}.
- NB `hurst_max` NON valutato su DIP01: il gate trendmax dello stesso giorno ha
mostrato che è ridondante-dannoso post-EXIT-16.
### Trappola di metodo trovata: l'ancora bfill di `_daily_equity`
La prima parità falliva (corr 0.9956, 16pp) con **engine identici** (662 trade,
stessi return, stesso capitale finale). Causa: la convenzione canonica
`_daily_equity` (serie a punti trade-exit → `reindex(IDX).ffill().bfill()`)
**ancora il primo valore della finestra al PRIMO trade dentro IDX** (es. 942.54
dopo le perdite di gennaio 2021), non al capitale portato avanti dall'ultimo trade
del 2020 (979.23). Il mio replay hourly era più "corretto" ma per parità va
replicata la convenzione. **Finding aperto**: questo bias tocca le metriche
canoniche di TUTTI gli sleeve a punti-trade (honest/pairs/tsm) — l'ancoraggio
distorce leggermente il punto di partenza della finestra. Da valutare a parte se
correggerlo OVUNQUE in un colpo solo (cambierebbe i numeri canonici di riferimento).
## Risultati
- **Grid BTC: 36/36** (EXIT-16 ≥ orig gap-aware in train E OOS in tutte le 18
celle). OOS Sharpe ~2-4x (cella canonica 1.47→3.48), DD giù in 14/18 celle.
- **Grid ETH: 35/36** (unica eccezione la cella estrema z3.0/sl3.0/mb48, marginale).
- **Plateau buffer piatto**: OOS DD 6.4% identico da 0.4 a 1.0; scelto 0.5 (== fade).
- **PORT06**: FULL Sharpe 6.43→6.61, DD 3.96→3.58 | OOS Sharpe 8.58→8.77, DD
1.36→1.34. Migliora tutto. **PROMOSSO**.
È la 5ª conferma indipendente del principio EXIT-16: gli stop intrabar da wick
sono falsi negativi per le strategie mean-reversion — l'overshoot che buca lo
stop è il movimento che si sta comprando.
## Deploy
`_defs.py`: `"sl_confirm_atr": 0.5` nei params DIP01_BTC (il worker legge già il
param — zero codice). Live path: TP intrabar invariato, SL solo su close confermato,
disaster-bracket on-book già attivo per gli outage.