Files
PythagorasGoal/docs/diary/2026-06-09-xs01-cross-sectional.md
T
Adriano Dal Pastro a85289d7c7 feat(xsec): XS01 reversione cross-sectional (8 asset) -> PORT06 PAPER
Famiglia NUOVA trovata in sessione (dopo aver scartato trend/breakout/seasonal/
opzioni/funding come rumore): ogni 12h long i perdenti relativi / short i vincenti
su 8 asset, market-neutral. Scorrelata (~0) da pairs e fade -> diversificatore.

- engine canonico scripts/strategies/XS01_cross_sectional.py (no look-ahead, plateau
  OOS Sharpe 2-3.9, 5/5 anni+, edge concentrato 2025, cost-sensitive ~0.35% RT).
- src/live/xsec_worker.py CrossSectionalWorker: validate_xsec_worker == backtest ESATTO
  (4993/1427 trade). Mirror della cadenza engine (entry-to-entry = hold+1).
- gate PORT06: +XS01 -> OOS Sharpe 9.66->10.07, FULL DD 3.68->3.46 (OOS DD +0.17pp,
  risk-contrib 2.2%). xsec_port06_gate.py.
- wiring: _defs XSEC in PORT06 (19 sleeve, family XSEC), build_everything, runner
  kind=xsec, asset_days da supported (fix fetch alt anche per paper sleeves), paper.
- 8 gambe -> niente exec reale -> gira PAPER. Regression-lock 18->19, FULL 7.20->7.34,
  OOS 9.66->10.07. 93 test verdi. Diario 2026-06-09-xs01-cross-sectional.md.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-09 21:38:05 +00:00

3.0 KiB
Raw Blame History

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 23.9 su lb 1272 × hold 624.
  • 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.