From 8e7d18117198787965ae2c41a8de305241078ea0 Mon Sep 17 00:00:00 2001 From: Adriano Dal Pastro Date: Sun, 23 Aug 2026 00:56:10 +0000 Subject: [PATCH] =?UTF-8?q?registro=20=C2=A742:=20TP01-LS=20SCARTATO=20?= =?UTF-8?q?=E2=80=94=20la=20short=20toglie=20drift=20in=200/24=20ancore=20?= =?UTF-8?q?e=20senza=20il=202022=20il=20divario=20raddoppia?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/research/RESULTS-0822.md | 94 ++++++++++++++++++++++++++++++++++- 1 file changed, 93 insertions(+), 1 deletion(-) diff --git a/docs/research/RESULTS-0822.md b/docs/research/RESULTS-0822.md index 6af6c9b..f64ca91 100644 --- a/docs/research/RESULTS-0822.md +++ b/docs/research/RESULTS-0822.md @@ -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.**