Files
PythagorasGoal/Old/docs/diary/2026-06-07-sh01-trainwindow.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

2.9 KiB
Raw Blame History

2026-06-07 — SH01 punto-10: il regime live (train 365g) NON è robusto → bootstrap full-history

Punto 10 della roadmap sweep: ri-validare SH01 col train-window del regime live (~8760 barre, il _ML_LOOKBACK_DAYS=365 del runner) invece dell'expanding full-history usato da tutta la validazione storica.

Ri-validazione (scripts/analysis/sh01_trainwindow_validate.py)

ml_wf_entries(train_window=...) rolling su storia piena ≈ il regime live. Protocollo explore_lab (FULL / OOS 30% / sweep fee / anni positivi), W24 H12 th0.58.

BTC train trade-rate FULL / OOS Sharpe fee 0.2%: FULL/OOS anni+ robusto
8760 (live) 21.7% +82 / +74 1.31 42 / +20 6/9
17520 (2y) 15.4% +166 / +96 2.05 +9 / +47 6/9
26280 (3y) 11.8% +348 / +95 3.09 +109 / +61 7/9
EXPANDING 9.8% +219 / +42 2.72 +60 / +26 8/9

ETH a tw=8760: FULL 33%, Sharpe 0.02 (lancio di moneta che paga fee).

Conferme: (a) la diagnosi del sweep era esatta (trade-rate 22-26% live vs 10% validato — soglia inerte per over-confidence su train piccolo); (b) la progressione è MONOTONA: l'edge di SH01 è la memoria lunga; (c) lo sweep della soglia nel regime corto dà risultati instabili e incoerenti fra asset → ri-tunare th sarebbe curve-fitting sul rumore di calibrazione (come da warning del piano).

Decisione (utente): bootstrap full-history

Ripristinare in live ESATTAMENTE il regime validato (expanding full-history):

  1. ml_wf_entries(last_block_only=True) — fitta/predice SOLO l'ultimo blocco del walk-forward. I confini dei blocchi sono deterministici (start + k·retrain) e al worker servono solo i segnali recenti → le entries dell'ultimo blocco sono identiche per costruzione al tail del WF completo (parity test esatto in tests/portfolio/test_sh01_last_block.py). Costo live: 0.6 s/tick su 73k barre (1 fit LogReg) vs ~140 fit del WF completo.
  2. Bootstrap storia nel runner: per gli sleeve ml il tick riceve concat(parquet_locale < feed_start, feed_live) (runner._with_history). Gap-guard: se il parquet è stantio oltre il lookback del feed → solo feed + WARN una-tantum (meglio il regime corto dichiarato che una serie col buco). Manutenzione: tenere fresco il parquet con download_all() (oggi al 2026-05-28, il feed copre 365g → margine ~11 mesi).
  3. _defs.py: params={"last_block_only": True} sugli sleeve SHAPE (solo path live; il backtest canonico resta WF completo).

Effetto atteso live: trade-rate SH01 da ~25% a ~10% delle barre, selettività della soglia ripristinata, WR atteso ≈ validazione (acc OOS ~56% BTC). Il monitor naturale è il report orario (SH01 farà MENO trade).

Nota: _ML_LOOKBACK_DAYS resta 365 (il feed serve comunque per le barre recenti e come fallback se il parquet è stantio).