Files
PythagorasGoal/docs/diary/2026-07-01-xs-residual-momentum.md
Adriano Dal Pastro 491411ac77 research(wave-0701): 6 filoni multi-agente — 0 nuovi sleeve, pesi confermati, gate weights_tilt_null
Ondata onesta su angoli non coperti: funding-TS (chiude il filone funding su 3
lati), breadth alt (non-ridondante ma DSR 0.43, rivisitabile con storia),
XS-residmom (REDUNDANT), pesi+guardia-DD (EW-STR refutato dallo scettico come
selezione-sull'hold-out di 2° ordine, firma best-of-15), VRP-refine (filone
esaurito), stagionalità-XS (morta allo step statistico).

Lezione codificata: weights_tilt_null + combine_outer in src/portfolio
(ogni cambio-pesi vs null di tilt casuali cap-respecting + delta in-sample>=0);
5 test nuovi, suite 165/165.

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
2026-07-01 23:21:59 +00:00

4.7 KiB
Raw Permalink Blame History

2026-07-01 — Residual (idiosyncratic) momentum cross-sectional sui 19 major HL — SCARTATO/REDUNDANT

Tesi. STATARB-RESID (thread 4, 2026-06-29) ha mostrato che il momentum del residuo ETH−β·BTC (β OLS rolling, sgn=+1: le dislocazioni continuano a 1d) passa quasi tutti i gate su 2 gambe, fallendo solo il deflated-Sharpe (0.929<0.95). Ipotesi qui: portare lo stesso meccanismo cross-sectional sui 19 major di XS01 — per ogni alt, residuo vs β·BTC (β OLS rolling B), momentum del residuo (blend z-score [30,90] come XS01 o singolo L), long top-k / short bottom-k, vol-target 20% — sperando che la breadth (18 stream invece di 1) alzasse il DSR dove il 2-gambe falliva. Script scripts/research/r0701_xs_residmom.py (riusa l'harness collaudato xsec_v2_nonmom: load_matrix, xs_engine — uguaglianza verificata maxdiff 0 —, deflated_sharpe, StrategyPortfolio).

Distinzione dal già-testato: IREV (idio-reversal, sgn=1) era FALLITO nel filone C; IMOM di xsec_v2 usava il mercato equal-weight come fattore, B=60 fisso, senza blend ed era solo riferimento. Qui fattore = BTC (come STATARB-RESID, BTC escluso dal cross-section), B in griglia, blend z-score, probe con gate di dispersione p30 (parità strutturale con XS01), selezione in-sample-only.

Setup

  • Universo: 19 major HL certificati (data/raw/hl_*_1d.parquet), 913 giorni [2024-01-01 → 2026-07-01], barre vol=0 escluse. Fee 0.10% RT/gamba + sweep fino a 0.30%.
  • Griglia (57 trial): β-window {60,90,120} × lookback {blend[30,90], 30, 90} × k {3,5} × H {5,10,20}
    • 3 probe gated (blend, k5, H10, gate dispersione p30). Cella scelta col solo Sharpe pre-2025; hold-out 2025-01-01 bloccato. Causalità: prefix-check ok (max_tail_diff 0).
  • Baseline (stessa finestra, sleeve attivi): XS01 FULL Sh 1.38 / HOLD 1.51 / DD 11%; book 4-sleeve FULL 2.12 / HOLD 2.21.

Esito — collasso OOS della cella in-sample e nessuna cella competitiva

Cella scelta in-sample: B60 L30 k3 H20 (IS Sh 2.00):

FULL +0.67 | HOLD 0.24 | DD 35% | per-anno 2024 +54% / 2025 15% / 2026 +5%
corr→XS01 +0.54 | corr→TP01 0.09 | DSR 0.510 (57 trial) | fee-sweep ok (F+0.59 a 0.30%)
small-cap $600/min$5: haircut ≈ 0 (ma book multi-gamba → STAT-MODE comunque, come XS01)

Portafoglio (il bar del mandato):

BASE 4-sleeve                FULL 2.12 DD 7.8% | HOLD 2.21 DD 3.5%
SOSTITUZIONE XS01 → cand     FULL 2.01 (0.10) | HOLD 1.18 (1.03)   ← distrugge l'hold-out
AGGIUNTA 5° sleeve @10/15%   HOLD 0.31 / 0.53                       ← diluisce
MARGINAL vs BOOK: corr +0.23, uplift@10% full 0.04 / hold 0.31, multi-cut 2025 0.31 / 2026 0.14

Il verdetto non dipende dalla selezione — aggregato delle 57 celle:

  • FULL max +0.94, HOLD max +0.82 (mediane +0.52/+0.33): nessuna cella si avvicina a XS01 (1.38/1.51), nemmeno cherry-pickando sull'hold-out.
  • corr→XS01 in [+0.47, +0.71], mediana +0.62: è momentum XS01 travestito (la residualizzazione vs β·BTC sposta poco: lo z-scoring cross-sectional di XS01 già rimuove implicitamente il mercato).
  • Solo 4/57 celle passerebbero un gate "diversificatore" (|corrXS|<0.6, FULL>0.5, HOLD>0), tutte con FULL ≤0.68 e IS incoerente.
  • corr(Sharpe in-sample, Sharpe hold-out) attraverso le celle = 0.37: l'in-sample è anti-predittivo dell'OOS su questa griglia — la firma del rumore, non di un edge con plateau.

Perché la tesi è falsa (3 righe)

  1. La breadth non ha alzato il DSR (0.51 ≪ 0.95) perché non c'è edge da deflazionare: il residuo vs β·BTC sul cross-section degli alt NON eredita l'edge del 2-gambe ETH−β·BTC — quel lead vive nella coppia specifica ETH/BTC (i due asset profondi/cointegrati), non nel long-tail degli alt.
  2. Cross-sectional, la residualizzazione è quasi un no-op: demeaning z-score (XS01) ≈ togliere il mercato → il candidato è una variante rumorosa di XS01 (corrXS mediana 0.62) con meno segnale.
  3. In-sample = solo 2024 (~1 anno utile dopo il warmup): la selezione onesta atterra su una cella 2024-lucky che perde nel 2025-26 — l'ennesima conferma del gate selection-on-holdout.

Verdetto: SCARTATO/REDUNDANT. Nessuno sleeve, nessun forward-monitor.

Coerente con il filone momentum-structure (2026-06-29): l'edge di XS01 sta nella sua struttura specifica (blend + gate dispersione), e le sue varianti — incluso l'idio-momentum vs BTC — sono REDUNDANT o peggio. Chiude anche il cerchio su STATARB-RESID: il meccanismo residuo-momentum resta valido SOLO come coppia ETH/BTC (forward-monitor paper_statarb), non generalizza al cross-section. Nessun impatto sul book live; config canonica invariata.

Script: scripts/research/r0701_xs_residmom.py (non committato, prefisso r0701_xs).