registro §42: TP01-LS SCARTATO — la short toglie drift in 0/24 ancore e senza il 2022 il divario raddoppia

This commit is contained in:
Adriano Dal Pastro
2026-08-23 00:56:10 +00:00
parent 790849cb54
commit 8e7d181171
+93 -1
View File
@@ -707,7 +707,7 @@ stessi hanno nominato senza poterli eseguire**. Stesso contratto di consegna, st
| 39 | FUNDING-AVOID | evitare il funding esprimendo il libro sui datati | **SCARTATO** sui datati · **LEAD** sullo **spot** |
| 40 | SL-ANCHOR | il nodo che bloccava il gradino di leva | **SCIOLTO** — rotolante, ma il timore e' refutato |
| 41 | TP01-SIZE | una size che risponde alla CONVINZIONE batte il vol-target uniforme, a pari vol realizzata? | _in corso_ |
| 42 | TP01-LS | la gamba short del trend a 1d paga il proprio costo, o e' il 2022? | _in corso_ |
| 42 | TP01-LS | la gamba short del trend a 1d paga il proprio costo, o e' il 2022? | **SCARTATO** — toglie **1,91%/anno di drift in 0/24 ancore**, fallisce l'iso-vol, +8,80pp di maxDD in 24/24, e **senza il 2022 il divario RADDOPPIA** |
| 43 | DATA-UNUSED | quali dati il progetto possiede e nessuna strategia legge — e uno di essi sostiene un'ipotesi? | _in corso_ |
| 44 | DEPOSIT-TIMING | un calendario di versamento CONDIZIONALE batte il piatto, a pari soldi? | _in corso_ |
| 45 | SPOT-NETTING | separare TP01 e SKH01 su due strumenti: quanto vale, e il margine lo uccide? | _in corso_ |
@@ -2120,3 +2120,95 @@ non produce numeri.
**VERDETTO: `LA RETE DI SICUREZZA HA UN TRASPORTO SENZA RETRY, SENZA REGISTRO E CON LO STATO
MARCATO PRIMA DELL'INVIO — ~7% DEGLI ALLARMI PUO' NON ARRIVARE, PER L'EPISODIO INTERO`**
---
## 42 — TP01-LS (la gamba short del trend a 1d)
`scripts/research/r0823_tp01_ls.py` (**4,4 s**). **4 trial dichiarati** (floor ∈ {0, 1/3, 2/3, 1}
sul solo TF di deploy); le **24 ancore non sono trial** e sono giudicate con `anchor_luck_band` /
`anchor_luck_delta`. Nessun file di produzione toccato.
**Meccanismo congelato, UN grado di liberta'.** `TrendPortfolio` di produzione **importata e
sottoclassata**: l'unica riga diversa e' `np.clip(direction, floor, None)` al posto di
`np.clip(direction, 0, None)`. `net_returns` (shift causale + fee) **ereditata**.
**Replica bit-exact a 4 vie, `max|diff| = 0.0`:** floor=0 == `CANONICAL(long_only=True)`;
**floor=1 == `CANONICAL(long_only=False)`** — cioe' la riga nuova coincide con la produzione a
**entrambi** gli estremi, e il codice davvero nuovo sono i soli due floor intermedi; sleeve 50/50 ==
`sleeves._tp01_returns()`; `candidate_daily(floor=0)` == `tp01_baseline_daily()`.
**Controlli positivi 4/4**, fra cui il piu' importante: **gate iso-vol puntato sulla leva pura**
(canonico ×1,3) → dCAGR grezzo **+5,05%** che diventa **+0,000000** iso-vol — *il gate riconosce la
leva travestita*.
**Attesa a priori del coordinatore, dichiarata prima di misurare:** *"il guadagno sara' un anno
solo, il 2022"*. **Confermata e superata.**
| floor | ShFULL | ShHOLD | CAGR | drift | vol | maxDD | turn/a |
|---|---|---|---|---|---|---|---|
| **0 (canonico LF)** | **1,305** | 0,441 | **16,32%** | **15,12%** | 12,14% | **14,31%** | 7,99 |
| 1/3 | 1,199 | 0,674 | 15,53% | 14,44% | 12,71% | 16,49% | 10,61 |
| 2/3 | 1,030 | 0,546 | 13,99% | 13,09% | 13,61% | 18,12% | 12,75 |
| 1 (LS pieno) | 0,855 | 0,433 | 12,37% | 11,66% | 14,94% | 20,61% | 15,02 |
**Drift: NO, monotono decrescente. Gate iso-vol: FAIL 3/3** (k = 0,955/0,892/0,813 → dCAGR
**1,49% / 3,83% / 6,19%**). **Non e' leva travestita, e' peggio:** alza la vol **e** abbassa il
ritorno.
**Banda d'ancora (24 ore, mediana delle differenze APPAIATE):**
| floor | dShFULL | dShHOLD | dDRIFT | dMAXDD |
|---|---|---|---|---|
| 1/3 | **0,114** [0,149,0,076] **0/24** | +0,219 24/24 | 0,78% 0/24 | +3,33pp 24/24 |
| 2/3 | **0,224** 0/24 | +0,258 24/24 | 1,29% 0/24 | +5,12pp 24/24 |
| 1 | **0,354** [0,450,0,251] **0/24** | +0,292 23/24 | **1,91% 0/24** | **+8,80pp 24/24** |
📌 **Il 2022, e la risposta e' piu' netta dell'attesa.** dSharpe per anno a floor=1: 2019 0,10 ·
2020 **0,85** · 2021 0,07 · **2022 +1,84** · 2023 **1,01** · 2024 0,61 · 2025 +0,27 · 2026 0,68
**2/8 anni positivi**. **Senza il 2022 il divario RADDOPPIA** (dShFULL 0,406 in 0/24, dDRIFT
3,71%, iso-vol dCAGR **7,44%**). **Il 2022 non e' l'anno che regge la tesi: e' l'unico che la
tiene a galla a meta'** — nemmeno con lui dentro la short arriva in pari.
**Marginale NEUTRAL 3/3** (corr→TP01 0,93/0,87/0,79, alpha **0,21 / 1,40 / 2,60%/anno**,
`multicut_persistent=False`, `robust_oos=False`). Diagnostica: e' un **hedge debole**
(corr(Sharpe-TP01 annuo, uplift) 0,83…−0,87), non alpha.
📌 **Il gate che chiude la faccenda: selection-on-holdout.** Sharpe in-sample (<2025) **1,488** /
1,322 / 1,151 / 0,972 → la cella scelta **al buio** da `select_cell_insample` e' **il canonico**;
quella scelta sull'hold-out e' floor=1/3. **Il guadagno hold-out non e' selezionabile.**
⚠️ **L'unica cosa che va nel verso della short, riportata per intero:** dShHOLD **+0,292 in 23/24**
ancore — ma **all'ancora canonica vale 0,008** (p10 +0,094, p90 +0,541). E' il caso **speculare**
della lezione del 26/07: li' l'ancora canonica *inventava* un danno, qui ne *nasconde* un vantaggio.
Resta un hold-out di 1,6 anni, non selezionabile, con multicut negativo in 6 anni su 7.
**Protezione — la short erode proprio cio' per cui TP01 esiste.** Criterio (B) di `edge_watch`
(DD sleeve < 75% del DD buy&hold negli anni di sinistro): canonico **0/8 violazioni**,
**floor=1 viola 1/8** (2023, 0,80); maxDD full 14,31% → 20,61%.
**E non e' morte-per-fee:** a **fee ZERO** 1,338 contro **0,904**. L'edge lordo non c'e'; il
turnover raddoppiato e' un'aggravante, non la causa.
**Libro 75/25:** ShFULL 1,814 → 1,347, maxDD 9,42% → 14,44%, banda **dSh 0,356 in 0/24**.
**Ridondanza con SKH01: no, e non aiuta** — la gamba short isolata ha corr **+0,10** con SKH01 ma
Sharpe **0,335**: non e' ridondante, e' perdente.
**Eseguibilita' a $635:** haircut **±0,002** (**5ª volta nell'ondata** che l'eseguibilita' non e' il
vincolo). 📌 **Trovato per strada:** `src/live/book.py` contiene `max(tp_frac, 0.0)` → **il
long-flat e' cablato anche nell'ESECUTORE**, non solo in `CANONICAL`.
**DSR 0,997/0,988/0,962** con sr0 nullo 0,208 su N=4 — **e non e' il gate che decide**: con 4 celle
quasi identiche sr0 e' piccolo per costruzione (è la lezione §10 del 22/08 vista dal lato buono).
⚠️ **Errori catturati dall'agente su se stesso:** (i) il trial set del DSR era costruito **a mano**
invece che preso da `select_cell_insample` — due percorsi per lo stesso numero e' esattamente cio'
che il gate codificato evita; ora sono confrontati e coincidono; (ii) un `:+.2f` su una frazione
stampava **+0,09pp** invece di **+8,80pp**.
**Cosa NON e' misurato, dichiarato:** il **funding** (nessun backtest del progetto lo modella, §35)
— e' l'unica voce che potrebbe spingere verso la short, ma l'agente ne da' un **argomento, non una
misura** (ordine ~1-2%/anno contro 1,91% di drift perso): si chiude con `r0822d_funding.py`.
Inoltre: nessun TF diverso dal 1d (riaprirlo riapre la **famiglia**), banda del libro con SKH01 alla
sola ancora canonica, tutto **close-only**.
**VERDETTO: `LA SHORT DEL TREND A 1d NON PAGA IL PROPRIO COSTO SU NESSUN ASSE CHE DECIDE`**
SCARTATO. **Libro, pesi, cron, config INVARIATI.**