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.0 KiB
2026-06-09 — XS01: reversione cross-sectional (famiglia nuova, trovata + deployata PAPER)
Origine
Dopo aver scartato (alla cieca, coi giochi) trend/breakout/seasonal/opzioni/funding come rumore o −EV, ho cercato io un meccanismo diverso dalla mean-reversion pairwise. Trovato: XS01 — reversione CROSS-SECTIONAL su 8 asset (BTC/ETH/LTC/ADA/SOL/BNB/XRP/DOGE).
Meccanismo
Ogni HOLD=12 ore: classifica gli 8 asset per rendimento su LB=48 ore, pesi w = −(ret − media_cross-section), normalizzati a gross 1 → long i perdenti relativi / short i vincenti, market-neutral. Roll non sovrapposto (entry-to-entry = hold+1 barre). Fee 0.10% RT/book. Cattura il FATTORE reversione trasversale, distinto dai pairs (pairwise).
Verifica (engine canonico scripts/strategies/XS01_cross_sectional.py)
- No look-ahead verificato (segnale invariato perturbando il futuro).
- Robusto: plateau OOS Sharpe 2–3.9 su lb 12–72 × hold 6–24.
- Scorrelato: corr −0.006 / 0.035 da PR01 ETH/BTC, −0.028 dai fade → diversificatore.
- Per-anno (entry): 2022 +34, 2023 +6, 2024 +21, 2025 +225, 2026 +85 (5/5 anni+).
- Caveat: edge concentrato sul 2025; cost-sensitive (muore ~0.35% RT/book); 8 gambe; storia dal 2022 (no 2018-2020).
Worker validato (== backtest esatto)
src/live/xsec_worker.py CrossSectionalWorker: book market-neutral che rolla ogni HOLD
barre, stessa formula pesi e cadenza dell'engine. validate_xsec_worker.py: replay
bar-per-bar == backtest ESATTO (worker 4993/1427 trade/49.8% == backtest 4993/1427/49.8%).
Bug risolto: il primo prototipo rollava 1 barra troppo tardi (cooldown extra) → rimosso,
guard a lb+1, entry-to-entry = hold+1.
Gate PORT06 — PROMOSSO (con asterisco)
| corr | FULL Sh | FULL DD | OOS Sh | OOS DD | |
|---|---|---|---|---|---|
| ATTUALE (19→ senza XS01) | — | 7.20 | 3.68 | 9.66 | 1.31 |
| +XS01 | −0.006 | 7.34 | 3.46 | 10.07 | 1.48 |
Migliora 3 metriche su 4 (OOS Sharpe +0.41, il salto più grande dal 15m; FULL DD giù). Unico neo: OOS DD +0.17pp. Risk-contrib XS01 solo 2.2% (diversificatore a bassa vol).
Deploy (v?, 2026-06-09) — PAPER
8 gambe → niente esecuzione reale (come TR01/ROT02/TSM01) → XS01 gira PAPER
(paper_sleeves), fuori dal pool, raccoglie statistica forward. Wiring: _defs.XSEC in
PORT06 (19 sleeve, family XSEC via prefix "XS"), build_everything (equity da xsec_sim),
runner kind="xsec" → CrossSectionalWorker, asset_days ora include i paper (fix: gli alt
BNB/DOGE/XRP ora vengono fetchati anche per TR01/ROT02/TSM01). Regression-lock aggiornati
(18→19 sleeve, FULL 7.20→7.34, OOS 9.66→10.07, DD 3.68→3.46). 93 test verdi.
Direzione futura: se la statistica forward conferma, costruire l'esecuzione reale a
N gambe (oggi inesistente) per portarlo nel pool. Per ora: candidato validato che gira
PAPER e si osserva. Artefatti: scripts/strategies/XS01_cross_sectional.py,
src/live/xsec_worker.py, scripts/analysis/{validate_xsec_worker,xsec_port06_gate}.py.