research(xsec): sweep cross-sectional su Hyperliquid (43 script/257 config) + verifica avversariale

Nuova harness condivisa xslib.py (panel HL certificato, score per-asset causale, book
long-k/short-k vol-targeted leak-free) + 43 script in runs/ su 11 famiglie (MOM/REV/VOL/
DIST/LIQ/VAL/STRUCT/UNIV). Scoring = earns_slot (full>0 AND hold-out>0 AND marginal ADDS
al portafoglio live AND corr XS01<0.6, con jackknife drop-one-month).

Find: 42/257 config earns_slot=True, ma TUTTE con corr TP01 -0.2..-0.4 e PnL ~solo 2025.
Verify (verify_survivors.py, 3 scettici deterministici):
 - S1 redundancy: cluster low-vol = UNA scommessa (XV01=XU02=1.00, XV02/XV03 r 0.44-0.67);
   XM09/XL02/XS06b/XR02 distinti (corr media off-diag +0.20).
 - S2 short-beta: cluster low-vol carica 0.44-0.70 su short-market -> NON market-neutral,
   e' un tilt short-alt-beta di regime. XM09(0.08)/XR02(-0.21) NON short-beta.
 - S3 per-anno: cluster low-vol decade (XV01/XU02 2026 -0.09); XL02 morto (2025 -0.14,
   2026 -0.43); XM09 (0.82/0.50/0.74) e XR02 (0.84/0.40/2.68) positivi in tutti e 3 gli anni.

Esito: nessuna sleeve nuova. Cluster low-vol RIGETTATO (regime-bet), XL02 RIGETTATO (overfit).
2 LEAD genuini (XM09 trend-gated x-sec momentum, XR02 reversal vol-gated) -> forward-monitor,
non deployabili (panel 2.5y regime unico + STAT-MODE esecuzione). Portafoglio live invariato.

Incluso anche options_vrp_managed.py (A/B VRP01 hold-to-expiry vs gestione attiva del doc
credit-spread): la gestione attiva DISTRUGGE l'edge (combo FULL managed Sh -1.29 vs HtE +0.96,
il delta-exit taglia i vincenti) -> scartata, VRP01 resta hold-to-expiry.

Diari: 2026-06-20-xsec-strategies-sweep.md, 2026-06-20-vrp-active-management.md.
gitignore: data/paper_portfolio/ (stato runtime paper) + scripts/research/xsec/runs/out/ (output rigenerabile).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Adriano Dal Pastro
2026-06-20 21:36:57 +00:00
parent 5ac4e16af8
commit 9612560479
50 changed files with 5457 additions and 0 deletions
@@ -0,0 +1,133 @@
# Sweep strategie cross-sectional su Hyperliquid (xsec) — 43 script / 257 config
**Data:** 2026-06-20
**Harness:** `scripts/research/xsec/xslib.py` (nuovo) + 43 script in `scripts/research/xsec/runs/`
**Verifica:** `scripts/research/xsec/verify_survivors.py` (3 scettici, deterministico)
**Esito in una riga:** niente di deployabile; il cluster vincente appariscente è **una sola
scommessa di regime (short alt-beta)**, ma **2 lead genuini** (XM09 trend-gated x-sec momentum,
XR02 reversal vol-gated) sopravvivono a tutti gli scettici → **forward-monitor, non sleeve.**
## Contesto e motivazione
Dopo che il sweep BTC/ETH a 104 ipotesi (`2026-06-20-alt-strategies-100agent-sweep.md`) ha
esaurito lo spazio direzionale single-asset confermando il soffitto ~1.3, la frontiera indicata era
**cross-sectional / multi-asset** sul panel Hyperliquid certificato, dove quel soffitto non vincola
e dove c'è spazio DISTINTO da XS01 (x-sec momentum semplice sui 19 major).
Nuova harness condivisa `xslib.py`: il panel è N asset × ~810 giorni (universo `all` = **49 alt**
con ≥700g dopo il fix backfill; `majors` = 19 di XS01). Una strategia = uno **score per-asset
causale** (dati ≤ close[i]); l'harness lo classifica cross-section ad ogni ribilanciamento, va long
i top-k / short i bottom-k (market-neutral) o long-only, vol-targeta al 20%, addebita fee sul
turnover, e — strutturalmente leak-free — il peso deciso a `i` incassa il return di `i+1` (stessa
convenzione di `src.portfolio` xs_book / `sleeves._xsec_returns`).
**Scoring onesto** (`study_xs`): un candidato guadagna `earns_slot=True` SOLO se
`full Sharpe>0 AND hold-out 2025+ Sharpe>0 AND marginal_vs(active)=="ADDS" AND corr(XS01)<0.6`.
`ADDS` a sua volta richiede `holdUplift_w20 ≥ 0.05 AND robust_oos` (uplift hold-out >0.02 **e**
jackknife drop-one-month tutti positivi). È il marginal scorer del sweep precedente, portato sul
cross-sectional: si giudica **l'apporto al portafoglio live** (TP01+XS01+VRP01), non lo Sharpe
assoluto.
**Caveat cotto dentro l'harness:** il panel è **~2.5 anni** (2024-26). Ogni risultato è
SUGGESTIVO, non robusto come i 6 anni di BTC/ETH. E l'hold-out (2025-26) è **un singolo regime**
(alt-bear/chop relativo a BTC).
## Find phase — 43 script, 257 sotto-config
11 famiglie cross-sectional: MOM (varianti momentum), REV (reversal), VOL/RISK (low-vol, low-beta,
BAB, semivarianza, vol-of-vol), DIST (skew/coskew lottery), LIQ (Amihud/turnover/volume),
VAL (distanza da MA, RSI), STRUCT (double-sort, ensemble z-vote, risk-parity, low-corr, trend-R²,
lead-lag BTC), UNIV (sweep di universo). **Esito: 42/257 config `earns_slot=True`.**
Sembra molto. Ma **due tell** accomunano quasi tutti gli slot-earner:
1. corr a TP01 **fortemente negativa** (0.2…−0.4) — è *per questo* che "aggiungono";
2. PnL **concentrato nel 2025** (ritorni +22%…+84% nel 2025).
Top per Sharpe/uplift (rappresentante per famiglia):
| id | meccanismo | univ | FULL Sh | HOLD Sh | upliftHold | jackknife | corr TP01 | corr XS01 |
|----|-----------|------|---------|---------|-----------|-----------|-----------|-----------|
| XR02-L3-p70-maj | reversal gated alta-vol | maj | 1.40 | **2.27** | 1.078 | 0.744 | 0.02 | 0.08 |
| XV02_majors_H10k5 | low **idio**-vol | maj | 1.32 | 1.95 | 1.196 | 0.792 | 0.20 | 0.06 |
| XL02-vz60r20-maj | vol-trend momentum | maj | **1.83** | 1.84 | 0.568 | 0.125 | 0.13 | 0.08 |
| XM09_all | trend-gated x-sec mom | all | 1.29 | 1.59 | 0.556 | 0.355 | 0.07 | 0.25 |
| XS01b-MAJ | double-sort mom×low-vol | maj | 1.36 | 1.23 | 0.427 | 0.16 | 0.29 | 0.38 |
| XU02/XV01 lowvol | low realized-vol | maj | 1.05 | 0.98 | 0.425 | 0.186 | 0.34 | 0.16 |
| XV03 lowbeta (BAB) | beta | all | 0.36 | 0.71 | 0.22 | 0.051 | 0.38 | 0.19 |
| XS06b lowcorr | corr(asset,market) | all | 0.74 | 1.00 | 0.286 | 0.092 | 0.19 | 0.18 |
## Verify phase — 3 scettici (`verify_survivors.py`)
Ipotesi sotto test: *"non sono N edge indipendenti, ma UNA scommessa di regime — short la
spazzatura high-beta nell'alt-bear 2024-26 — travestita da 30 maschere; il jackknife è robusto solo
DENTRO quel regime."* Ricostruito il book più forte per famiglia e:
**S1 — matrice di correlazione mutua (>0.6 = stessa scommessa).** Esito SFUMATO:
- Il cluster low-vol È una sola scommessa: **XV01 = XU02 = 1.00** (identici), XV01↔XV02 0.65,
XV01↔XV03 0.67, XV02↔XV03 0.44.
- MA **XM09, XL02, XS06b, XR02 sono distinti** dal cluster e tra loro (corr media off-diagonale
solo **+0.20**, solo 18% delle coppie |r|>0.6). L'ipotesi "tutto una scommessa" è **parzialmente
falsa**.
**S2 — carico su short-beta / short-market** (factor di riferimento sullo stesso panel:
SHORTBETA = book su beta; SHORTMKT = market alt equal-weight):
- **Cluster low-vol = short-alt-beta confermato:** XV03 1.00/0.70, XV01/XU02 **0.67/0.64**,
XV02 0.44/0.37. *Non* market-neutral: è un tilt short del mercato alt.
- **NON short-beta:** XM09 0.08/0.15, XR02 0.21/0.18, XL02 0.19/0.26, XS06b 0.36/0.39.
**S3 — Sharpe per anno solare (l'edge è ~solo 2025?):**
| survivor | 2024 | 2025 | 2026 |
|----------|------|------|------|
| XV02_lowidiovol | 0.07 | 1.87 | 2.12 |
| XV01/XU02 lowvol | 1.17 | 1.52 | **0.09** |
| XV03_lowbeta | 0.25 | 0.98 | 0.12 |
| XS06b_lowcorr | 0.26 | 1.34 | 0.32 |
| **XM09_trendgmom** | **0.82** | **0.50** | **0.74** |
| XL02_voltrendmom | 0.30 | **0.14** | **0.43** |
| **XR02_revgated** | **0.84** | **0.40** | **2.68** |
## Conclusioni (oneste)
1. **Cluster low-vol / low-beta (XV01, XU02, XV02 in parte, XV03) = tilt short-alt-beta di regime.**
S2 lo inchioda (carico 0.44-0.70 su short-market): non è un fattore market-neutral, è "short la
spazzatura" mentre gli alt sanguinano vs BTC. XV01/XU02 **già in decadimento (2026 0.09).** Non
può dimostrare di sopravvivere a un flip alt-bull. → **RIGETTATO come sleeve.** Conferma
l'osservazione 4874 (XS04b = regime-dependent short-beta tilt) generalizzata all'intera famiglia.
2. **XL02 (vol-trend momentum) = overfit al panel iniziale.** FULL Sharpe più alto (1.83) ma S3 lo
uccide: 2025 0.14, 2026 0.43. Il numero full è guidato dal 2024, ora è morto. → **RIGETTATO.**
3. **2 LEAD genuini** — distinti (S1), NON short-beta (S2), positivi in **tutti e 3 gli anni** (S3):
- **XM09 — cross-sectional momentum gated dal trend di mercato.** Long top-k/short bottom-k alt,
attivo solo quando la somma trailing del mercato equal-weight è >0. Sharpe 0.82/0.50/0.74,
short-beta-load 0.08, corr TP01 0.07, uplift hold 0.556 / jackknife 0.355. È il candidato più
regime-robusto. **Caveat:** stessa FAMIGLIA di XS01 (x-sec momentum) su universo più largo (49)
con gate diverso (trend di mercato vs dispersione) → più un **possibile affinamento di XS01**
che una sleeve nuova; corr XS01 0.25, ma marginal scorer dice che ADDS oltre XS01.
- **XR02 — short-term reversal gated da alta-vol.** Reversal a 3g attivo solo quando la vol
realizzata di mercato è nel regime alto (>p70 espandente). Sharpe 0.84/0.40/**2.68**,
short-beta-load 0.21, corr a tutto il resto ~0/negativa, hold-out Sharpe 2.27. Microstruttura
reale (overreaction in panico). **Caveat:** H=3 → **turnover alto**; il reversal vive proprio
sull'illiquidità che lo rende costoso da eseguire (l'harness addebita fee sul turnover e regge,
ma il fill reale su alt minori è ottimistico).
## Perché NON deployabili adesso (caveat trasversali)
- **Panel ~2.5 anni a regime unico.** Anche i 2 lead hanno hold-out = 2025-26 = stesso macro-regime.
Suggestivi, non robusti come i 6 anni BTC/ETH.
- **STAT-MODE di esecuzione.** Un book cross-sectional a 10-19 gambe (long-k+short-k) su alt non è
eseguibile col capitale attuale (conto reale ~$600; servono ~$20k per gambe sensate, come già
notato per XS01). Sono segnali da monitorare, non ordini.
- **Lezione confermata (di nuovo):** su un panel corto a regime unico il jackknife drop-one-month
certifica la robustezza DENTRO il regime, non ATTRAVERSO i regimi. Il discriminante decisivo è
stato **S2 (carico su short-beta) + S3 (consistenza per-anno)**, non lo Sharpe né l'uplift
hold-out (che il cluster regime-bet aveva altissimi: upliftHold fino a 1.20).
## Azioni
- **Nessuna modifica al portafoglio live** (TP01 55% + XS01 25% + VRP01 20% invariato).
- **Forward-monitor** i 2 lead (XM09, XR02) quando il panel HL accumula un secondo regime.
- **XM09 come affinamento candidato di XS01** (gate trend di mercato + universo 49) da valutare a
parità di sleeve, NON come sleeve aggiuntiva, in una prossima iterazione.
- Harness `xslib.py` + 43 script + `verify_survivors.py` committati come riferimento riusabile.