docs: diario ondata 2026-07-25 + CLAUDE.md — XSR01, 2 refutazioni, fix split equity
Diario docs/diary/2026-07-25-mat01-statarb-generalization.md (6 sezioni): MAT01 scartato col null de-levering a pari volatilita'; STATARB-MULTI (ETH/BTC non e' un outlier: 58° pctl) e STATARB-EQ (non si trasferisce alle azioni, il lordo e' -0.17 e il resto e' turnover); lo split non aggiustato di IWM/EFA con impatto quantificato su GTAA01; l'addendum pre-registrato al gate del 27/09; e XSR01 col suo scettico e le sue tre debolezze dichiarate. Registrati anche i due errori di metodo miei corretti in sessione (null statico con look-ahead; null a fee piene contro un segnale permutato ad alto turnover): entrambi avrebbero prodotto numeri piu' belli e sbagliati. CLAUDE.md: nuove voci XSR01 (candidato in monitor, gate 2026-10-23), ondata 2026-07-25, e il difetto SPLIT-NON-AGGIUSTATI con la regola nuova — ogni soglia di certificazione tarata su un valore tondo va controllata contro il difetto che genera esattamente quel valore. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -334,6 +334,89 @@ Prima ondata di ricerca onesta su BTC/ETH certificati (5 track, harness condivis
|
||||
SEA + expiry + event-clock + 375 trial weekend ⇒ su BTC/ETH nessun edge di calendario/finestra
|
||||
oraria; riaprire solo con meccanismo non-calendario. Book/pesi INVARIATI. Diario
|
||||
`2026-07-17-weekend-window.md`; script `scripts/research/r0717_wk_{drift,cond,intra,overlay}.py`.
|
||||
- **Ondata 2026-07-25 (MAT01 + generalizzazione STATARB) — 0 sleeve nuovi, 1 DIFETTO DI DATO sul
|
||||
libro live trovato e riparato.** Diario `2026-07-25-mat01-statarb-generalization.md`.
|
||||
(1) **MAT01** (`r0725_mat01_multiasset_trend.py`, `r0725_mat01b_regime.py`): allargare il trend
|
||||
difensivo da 6 a **18 ETF multi-asset-class** (i 12 su disco dal 22/06, mai usati per un trend)
|
||||
a meccanismo GTAA CONGELATO = **SCARTATO**. MAT18 perde 3/4 finestre disgiunte; **a PARI VOL il
|
||||
suo minor DD si inverte** (−20.6% vs −15.4%) → era solo de-levering (**3ª occorrenza del null
|
||||
de-levering** dopo VRP-DD e TP01×DVOL: e' il primo test da fare su ogni claim "meno drawdown");
|
||||
corr→crypto invariata (0.110 vs 0.116) → zero guadagno di diversificazione; book 2.22→2.19.
|
||||
**Risultato positivo da conservare:** la curva d'ampiezza e' monotona (mediana OOS 0.44 a k=1 →
|
||||
**0.80 a k=18**, DD −16.0%→−6.9%, satura a k≈10-12) — l'ampiezza E' un meccanismo reale, ma
|
||||
**GTAA6 sta gia' al 95° pctl dei 6-subset casuali** (e non e' cherry-picked: contiene TLT, il
|
||||
peggiore dei 18) → **niente piu' ampiezza da raccogliere su questo sleeve**.
|
||||
(2) **STATARB-MULTI** (`r0725_statarb_multi.py`): meccanismo congelato (W=45, sgn=+1) su tutte le
|
||||
**50 coppie alt/BTC** HL, out-of-pair-sample. REGGE: 82% Sharpe>0 (media 0.38), **0/50 degeneri**
|
||||
(mono 53% → non e' la statica short-alt travestita), perm p<0.05 nel 18% (atteso 5%), paniere
|
||||
Sharpe 0.82 / DD −6.0% / corr XS01 0.207. **E ETH/BTC e' al rango 22/50 (58° pctl): la coppia
|
||||
scopritrice NON e' un outlier** → per il gate 27/09 l'ipotesi "fortuna di una coppia" e' refutata.
|
||||
NON e' uno sleeve: ampiezza **effettiva ~4.5** (corr media 0.204, gamba BTC condivisa), paniere
|
||||
**IC95% [−0.12,1.72], t 1.31** (non distinguibile da zero a 2.6 anni), uplift −0.11 vs il null
|
||||
a priori "sempre short alt vs BTC", 51 gambe = STAT-MODE. ⚠ Errore di metodo corretto in-sessione:
|
||||
il primo null statico usava `sign(mean(segnale))` sull'intero campione = **look-ahead**; rifatto
|
||||
causale (media espandente) + a priori.
|
||||
(3) **STATARB-EQ** (`r0725_statarb_eq.py`): stesso meccanismo su **12 coppie ETF a priori,
|
||||
28.5 anni, ampiezza effettiva 9.9** = **SCARTATO**. Paniere Sharpe **−1.00** (IC95% [−1.36,−0.64],
|
||||
t −5.33), negativo in **4/4 decadi**, 0% coppie a perm p<0.05. **Ma la lettura sta nel LORDO
|
||||
(−0.17, non −1.00): due terzi sono drag di turnover (0.40/g)** → **non esiste strategia specchio**
|
||||
(sgn=−1 sarebbe lorda +0.17, netta −0.16). Il segno lordo dice che **sulle azioni il residuo
|
||||
REVERTE debolmente mentre sul crypto CONTINUA** → il meccanismo e' plausibilmente crypto-specifico.
|
||||
Inferenza onesta: non prova che il crypto sia falso, ma il gate 27/09 **non puo' appoggiarsi**
|
||||
all'argomento "fenomeno universale".
|
||||
(4) **Addendum PRE-REGISTRATO al gate STATARB** (registrato a forward-day 26/90, 64g prima della
|
||||
decisione): `r0724_statarb_deploy_gate.py` riporta ora anche lo Sharpe della **statica sempre-short
|
||||
a pari vol-target sulla stessa finestra**. **Soglie del 24/07 NON toccate** (diagnostica non
|
||||
binding; renderla binding e' decisione dell'operatore). Lettura odierna (26 barre): STATARB +5.70
|
||||
vs benchmark **−4.98**, e la posizione corrente e' LONG lo spread = opposta alla statica → la
|
||||
finestra forward non e' spiegata dal beta di regime.
|
||||
- ✅ **XSR01 "Cross-Sectional Residual" — CANDIDATO NUOVO in forward-monitor (2026-07-25).**
|
||||
`scripts/live/paper_xsr.py`; scoperta `r0725_statarb_basket_gate.py`, scettico
|
||||
`r0725_statarb_demean_skeptic.py`, gate `r0725_xsr_deploy_gate.py`, test `tests/test_paper_xsr.py`.
|
||||
**Cos'e':** il meccanismo congelato di STATARB-RESID (W=45, sgn=+1, residuo OLS causale su BTC,
|
||||
z-score, tanh, vol-target 20%) applicato ai **50 alt HL**, con posizioni **DEMEANATE
|
||||
cross-sezionalmente** ogni giorno. Il demeaning annulla ALGEBRICAMENTE la gamba BTC comune
|
||||
(`sum(p_i−p̄)(r_i−r_btc) = sum(p_i−p̄)r_i`) → non e' un paniere di coppie ma una **strategia
|
||||
cross-sectional dollar-neutral**, e l'ampiezza effettiva passa da **4.5 a 37.4**.
|
||||
**Numeri (2.6 anni):** Sharpe netta **1.82** (lorda 2.70), maxDD **−2.6%**, vol 2.3%, ret 4.2%/a.
|
||||
**Gate superati:** marginale **ADDS** (robust_oos + beats_noise_null + non-hedge +
|
||||
has_insample_edge); **deflated-Sharpe 0.985 PASS**; **corr ~0 a TUTTI e 5 gli sleeve** (TP01 0.060,
|
||||
XS01 −0.019, VRP01 −0.001, SKH01 0.001, GTAA01 0.071); book a w=15% HOLD 2.36→**2.51**, DD invariato.
|
||||
**Scettico superato:** 3 null **a fee-neutrale** (permutazione cross-sezionale / casuale /
|
||||
temporale a blocchi) centrati a ~0.01, candidato lordo 2.70 **sopra il massimo di 300 estrazioni**
|
||||
(p<0.004); **lag 1.82/1.19/0.81/0.51** a +0/1/2/3g = decadimento dolce di segnale lento, NON
|
||||
firma di look-ahead; non ridondante con XS-momentum semplice (corr 0.17-0.29).
|
||||
**NON nel book, 3 motivi dichiarati:** (a) storia 2.6a monoregime e **crescente** (Sh 2024 1.03 /
|
||||
2025 1.98 / 2026 3.11) → l'edge e' recente; (b) **`weights_tilt_null` FALLITO** (gate_pass=False a
|
||||
10% e 15%, delta_insample −0.004/−0.007: effetto della storia corta, ma un gate fallito resta
|
||||
fallito); (c) **margine di costo sottile** — 1.82 a 0.05%/gamba, **0.93 a 0.10%, NEGATIVA a 0.20%**,
|
||||
con turnover 38.5% del lordo/g su 50 alt anche illiquidi e **slippage NON modellato** (rischio #1).
|
||||
**Eseguibilita':** ticket/gamba $1.73 a $600 (**sotto min-order $5 → STAT-MODE oggi**), $5.76 a
|
||||
$2000, **$14.41 a $5000** → diventa reale a **~$5k**, non ai ~$20k di XS01.
|
||||
**Gate pre-registrato 2026-10-23** (forward-day 0): deploy solo se Sharpe≥1.0 **E** haircut di
|
||||
eseguibilita' a $5000 ≤40% (se l'haircut sfonda → **RITIRO a prescindere dallo Sharpe**), poi
|
||||
weights_tilt_null e capitale ≥$5k. Monitor in `cron_daily.sh`, 3 libri (MODELED $2000 / REAL $600 /
|
||||
REAL $5000). ⚠ Lezione: XSR01 **non e' nato da un'idea nuova ma dalla DIAGNOSI di un fallimento**
|
||||
(ampiezza effettiva 4.5 → c'e' un fattore comune da togliere); e i suoi null vanno confrontati
|
||||
**a fee zero**, perche' permutare un segnale ne fa esplodere il turnover e il null perderebbe per
|
||||
costo invece che per assenza di informazione (p-value trionfale e falso).
|
||||
- ⚠ **SPLIT NON AGGIUSTATI nel feed equity — difetto sul LIBRO LIVE, riparato (2026-07-25).**
|
||||
`data/raw/eq_iwm_1d.parquet` ed `eq_efa_1d.parquet` avevano uno split non aggiustato il
|
||||
**2005-06-09** (IWM 2:1 = −49.5%; EFA 3:1 = −66.5%); IB `ADJUSTED_LAST` non li aveva aggiustati.
|
||||
**La certificazione non li vedeva per un punto cieco strutturale:** l'unica guardia era
|
||||
`maxret > 50% → SPIKE?` e uno split 2:1 fa **esattamente −50%** → IWM passava a 49.5% con status
|
||||
OK. **IWM e' una delle 6 gambe di GTAA01 in produzione.** Impatto: GTAA6 FULL Sh 0.61→**0.64**,
|
||||
IS 0.49→**0.54**, OOS 2015+ e maxDD **INVARIATI** (artefatto nel 2005, fuori hold-out) → il
|
||||
difetto SOTTOSTIMAVA lo sleeve, **nessuna decisione presa va rivista**. Discriminante
|
||||
split-vs-crollo (riusabile): **non il rapporto** (SLV 2026-01-30 ha rapporto 1.3994, a 4bps da
|
||||
1.4, ma e' un crollo vero: GLD −10.3% lo stesso giorno) ma il **RANGE INTRADAY** — lo split apre
|
||||
gia' al nuovo livello con range normale (IWM: open 47.00, range 1.7%), il crollo si muove DENTRO
|
||||
la barra (SLV: range 33%). Modulo `src/data/eq_splits.py` (`detect_unadjusted_splits` a 3
|
||||
condizioni congiunte + `repair_splits` componibile), riparazione **in lettura** in
|
||||
`src/portfolio/gtaa.py::_close` e `scripts/research/eqlib.py::load_eq`, status
|
||||
**`SPLIT-NON-AGG`** in `fetch_ib_equities.certify()`, test `tests/test_eq_splits.py` (8 casi).
|
||||
**Regola nuova: ogni soglia di certificazione tarata su un valore tondo va controllata contro il
|
||||
difetto che genera esattamente quel valore** (una soglia a 50% non puo' sorvegliare gli split 2:1).
|
||||
- **Soffitto strutturale BTC/ETH-direzionale ~1.3** superato SOLO espandendo a un meccanismo diverso:
|
||||
cross-sectional su universo Hyperliquid certificato (XS01) → portafoglio Sharpe ~1.55.
|
||||
- **Sweep "strategie alternative" (2026-06-20) — 104 ipotesi / 153 agenti / NIENTE di nuovo regge.**
|
||||
|
||||
Reference in New Issue
Block a user