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:
@@ -0,0 +1,43 @@
|
||||
# VRP01 + gestione attiva intra-trade — A/B onesto (NEGATIVO)
|
||||
|
||||
**Data:** 2026-06-20
|
||||
**Script:** `scripts/research/options_vrp_managed.py`
|
||||
**Esito:** la gestione attiva del documento credit-spread **distrugge l'edge**. VRP01
|
||||
**hold-to-expiry resta superiore.** → scartata.
|
||||
|
||||
## Cosa testava
|
||||
|
||||
Innesta sul put credit spread di VRP01 le regole intra-trade del doc `strategia-credit-spread-eth`:
|
||||
profit-take 50% del credito, stop-loss 1.5× il credito, **VOL-STOP** (chiudi se DVOL sale ≥10 punti
|
||||
dall'apertura — regola crypto-specifica nuova), **delta-exit** (chiudi se |delta| short put ≥0.30),
|
||||
time-stop 7 DTE. A/B sugli **stessi ingressi gated** (VRP>0 + IV-rank>0.30) e dati certificati;
|
||||
MTM giornaliero dello spread via BS sul path certificato + DVOL reale (causale).
|
||||
BASE = hold-to-expiry (come VRP01) vs MANAGED = stesso trade gestito.
|
||||
|
||||
## Risultato (combo 50/50 BTC+ETH, sleeve-level)
|
||||
|
||||
| variante | Sharpe | DD | ret | HOLD Sh |
|
||||
|----------|--------|------|------|---------|
|
||||
| 14d hold-to-expiry (BASE) | **0.96** | 11.7% | +39% | +1.52 |
|
||||
| 14d + solo vol-stop | 0.12 | 10.1% | +3% | +1.01 |
|
||||
| 14d FULL managed | **−1.29** | 14.8% | −15% | −1.17 |
|
||||
|
||||
Per-asset: la gestione FULL ribalta entrambi (ETH 0.33→−1.15, BTC 1.88→−0.89). Il **delta-exit**
|
||||
domina le uscite (18-25 trade su ~33-45) e taglia i vincenti prima della decadenza theta; persino
|
||||
il **vol-stop da solo** quasi azzera il ritorno (combo Sh 0.12). Win-rate crolla 80-94% → ~40%.
|
||||
|
||||
## Lettura
|
||||
|
||||
Per un venditore di premio short-vol l'edge È la decadenza theta tenuta fino a scadenza: ogni
|
||||
uscita anticipata (delta, vol-stop, PT) **monetizza meno theta e/o realizza la coda** invece di
|
||||
lasciarla riassorbire. Le regole di "difesa" del doc azionario/ETH non trasferiscono al VRP crypto
|
||||
modellato: l'unica gestione che non danneggia è **non gestire** (hold-to-expiry, come VRP01 già fa).
|
||||
|
||||
**Caveat invariato:** premio MODELLATO su DVOL ATM (no skew) + nessun fill di stress reale → tutto
|
||||
ciò resta a livello di LEAD, non deploy. Ma la conclusione relativa (BASE > MANAGED) è robusta
|
||||
perché è un A/B sugli **stessi** trade e dati.
|
||||
|
||||
## Azione
|
||||
|
||||
Nessuna modifica a VRP01 (`sleeves._vrp_combo_returns`, hold-to-expiry). Script conservato come
|
||||
riferimento dell'esperimento scartato.
|
||||
@@ -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.
|
||||
Reference in New Issue
Block a user