From a4c9fca77ac1336c54ad0d5d7ea4ce84ca186cbc Mon Sep 17 00:00:00 2001 From: Adriano Dal Pastro Date: Sun, 23 Aug 2026 02:06:01 +0000 Subject: [PATCH] =?UTF-8?q?registro=20=C2=A747:=20ANCHOR-ENSEMBLE=20?= =?UTF-8?q?=E2=80=94=20su=20TP01=20il=20drift=20non=20puo'=20cambiare=20pe?= =?UTF-8?q?r=20algebra,=20il=20segnale=20sta=20su=20SKH01,=20e=20la=20prem?= =?UTF-8?q?essa=20del=2002/07=20era=20sbagliata?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- docs/research/RESULTS-0822.md | 93 ++++++++++++++++++++++++++++++++++- 1 file changed, 92 insertions(+), 1 deletion(-) diff --git a/docs/research/RESULTS-0822.md b/docs/research/RESULTS-0822.md index 6967882..bfcbc6a 100644 --- a/docs/research/RESULTS-0822.md +++ b/docs/research/RESULTS-0822.md @@ -712,7 +712,7 @@ stessi hanno nominato senza poterli eseguire**. Stesso contratto di consegna, st | 44 | DEPOSIT-TIMING | un calendario di versamento CONDIZIONALE batte il piatto, a pari soldi? | **SCARTATO 0/12 in ogni lente** — il buy-the-dip compra davvero il **51% piu' in basso** e arriva al capitale-rendita nel **6,3%** dei casi contro l'**85,4%** del piatto | | 45 | SPOT-NETTING | separare TP01 e SKH01 su due strumenti: quanto vale, e il margine lo uccide? | **LEAD REGGE, SEPARAZIONE SENZA VALORE** — il margine non e' il vincolo (copertura **50x**, invariante al capitale), ma **T1 sbloccato e' un DECLASSAMENTO** (−0,048 contro il path che gira) e il netting perso **risparmia** commissioni: il lead vale **il funding e basta**, [+1,55%, +1,66%]/anno; a bloccarlo e' **il codice di sizing**, non Deribit | | 46 | TAIL-HEDGE | comprare put deep-OTM come assicurazione statica compra DD a prezzo migliore del de-levering? | **REFUTATO** — la premessa cade **prima del prezzo**: il maxDD **SALE in 162/162 celle**, a ogni lente di f (f=1,00 regalato compreso). Meccanismo: **beta del libro al sottostante +0,076** | -| 47 | ANCHOR-ENSEMBLE | eseguire l'ensemble delle 24 ancore invece di sceglierne una e correggere il numero | _in corso_ | +| 47 | ANCHOR-ENSEMBLE | eseguire l'ensemble delle 24 ancore invece di sceglierne una e correggere il numero | **ESEGUIBILE MA INUTILE SU TP01** — il drift **non puo'** cambiare (algebra: `lordo_ens == media(lordi)`, 1,4e-17); **il segnale sta su SKH01** (+0,312 di Sharpe mediano, maxDD 23,3%→16,6%), ma dentro il libro **non si distingue da zero**. E la premessa del 02/07 era sbagliata | | 48 | VOLVOL | la volatilita' del DVOL (secondo momento, mai usato) contiene cio' che livello e spread non contengono? | **SCARTATO** — e' davvero una variabile NUOVA (ortogonalita' PASS, max \|corr\| 0,396) ma **guarda INDIETRO**: picco a lag **−5/−10** e parziale con la vol futura **NEGATIVA**. Quinto lato del filone DVOL chiuso | | 49 | TP01-TWIN | il 75% del libro dipende da UNA definizione di trend: un ensemble di meccanismi protegge meglio? | **REFUTED** — protegge **PEGGIO** nei 4 anni piu' recenti a **0/24 ancore** (2022: **3,2x peggio**) e costa **−0,127** di Sharpe hold-out al libro. E i meccanismi **non erano ridondanti**: corr di posizione 0,61 | | 50 | BOOK-3RD | qual e' il miglior TERZO sleeve realmente eseguibile sul libro live a $635 — e a quale capitale cambia? | _in corso_ | @@ -2876,3 +2876,94 @@ Nessuna copertura **dinamica** (gated su regime) e' stata provata: la domanda er **VERDETTO: `LA PUT PROTEGGE UNA PERDITA GIA' RIDOTTA 10x DALLA STRATEGIA — IL maxDD SALE IN 162 CELLE SU 162`** — REFUTATO. + +--- + +## 47 — ANCHOR-ENSEMBLE (de-luckare l'ESECUZIONE invece del numero) + +`scripts/research/r0823_anchor_ensemble.py` (**127 s**). Attese a priori **A1-A7 scritte e stampate +prima** di misurare: **3 confermate, 3 refutate, 1 mezza**. **Libro, pesi, ancore, cron, config +INVARIATI.** + +**(i) Batte l'ancora MEDIANA: si', di +0,014 di Sharpe FULL — e l'algebra dice che non puo' fare di +piu'.** La posizione dell'ensemble e' la **media** delle posizioni e il lordo orario e' lineare in +essa ⇒ **`lordo_ens == media(lordi)`, verificato a max|dif| 1,4e-17**. Il drift non puo' cambiare se +non per fee-netting (**+0,013%**): **tutto il guadagno e' vol (−1,1%)**. +📌 **Cio' che l'ensemble compra davvero non sta nella colonna Sharpe: `sd(ShFULL) 0,061 → 0` e +`sd(ShHOLD) 0,112 → 0`. Non riduce l'incertezza, la ELIMINA.** +⚠️ **A2 refutata sulla taglia:** l'agente prevedeva +0,03…+0,15 ed e' **7x piu' piccolo** — aveva +sopravvalutato quanto sono decorrelate 24 ancore della **stessa** strategia. + +**(ii) Batte la CANONICA: NO sull'hold-out (−0,223), SI' su FULL (+0,024) e in-sample (+0,071).** +La canonica sta al **98° pctl di 24 sull'hold-out e al 15° in-sample**. +📌 **E i due numeri non sono due stime della stessa cosa: +0,44 e' un'estrazione GIA' AVVENUTA, ++0,21 e' cio' che si ottiene senza estrarre.** Tenere la canonica non conserva il +0,44: **ri-estrae** +da [+0,02, +0,44]. **La stima onesta del futuro e' +0,21.** + +**(iii) Eseguibile da quale capitale: da TUTTI, gia' a $635 — attesa REFUTATA.** A $635 il path +eseguito a K=24 segue l'ideale **meglio** che a K=1 (**corr 0,9986 contro 0,9954**), perche' *un +target che si muove a passi piccoli e frequenti entra in una banda fissa meglio di uno che salta*. +Ordini 119 → 729/anno, fee **$2,55 → $2,56**. ⚠️ Il criterio `N_max` dichiarato in anticipo +**satura (6/6 celle a ogni capitale)**: *un gate che passa sempre non misura niente* → la risposta +non e' un capitale, e' che **l'eseguibilita' non e' il vincolo (7ª volta nell'ondata)**. + +✅ **Replica del 02/07 prima di ogni delta:** `h=0 == tp01_baseline_daily`; **`banded()` == +`r07.smallcap_net` bit-exact (0,0e+00, stessi ordini)**; **K=4 == EW di 4 book** (2,2e-16); **offset +0 == `sleeves._skyhook_returns()`** (0,0e+00). La **struttura** replica; i **livelli** sono +ri-derivati col dato di oggi (`data/raw/` non versionato): HOLD mediano 0,04 → **0,220**, banda +[−0,13,+0,30] → **[+0,02,+0,44]**, canonico 0,31 → **0,436 (98° pctl in entrambi)** — **coincidono +con la memoria corrente del progetto** (canonico +0,44 al 96-98°, mediana +0,22). + +📌 **Il funding: canale chiuso per ALGEBRA, non per piccolezza.** `funding = pos·f` e' lineare in +`pos` ⇒ **`funding_ens == media esatta delle 24 ancore, max|dif| = 0`**. E il rapporto condizionale +misurato il 22/08 **non si attenua: 2,25x → 2,26x** da K=1 a K=24 — *e' esso stesso una media, e la +correlazione esposizione-funding vive alla scala del REGIME, non dell'ora del giorno*. (Replica +indipendente del drag su griglia oraria: **2,14%** contro il 2,02% pubblicato.) + +📌 **DOVE STA IL SEGNALE: SKH01 — l'ancora a cui il 02/07 non porto' mai questa domanda.** Sulla +lente del path che gira: mediana delle 23 fasi ShFULL **0,974 → 1,286 (+0,312)**, maxDD mediano +**23,3% → 16,6%**. **Venti volte TP01**, e il meccanismo e' chiaro: i suoi trade sono **discreti** — +spostare la griglia cambia **quali trade esistono**, non quanto sono grossi (sd d'ancora **0,194 +contro 0,061**). **23 e' primo** ⇒ sulla griglia a 30m non esiste sotto-ensemble simmetrico. +⚠️ **Ma dentro il libro SKH01 pesa il 25% e li' non si distingue da zero** (+0,005 a $635, +0,022 a +$100k, coi segni dei singoli che cambiano fra i due capitali). + +📌 **Contro-intuitivo misurato:** tranciando entrambi gli sleeve gli **ordini salgono 6,5x** +(197 → 1283/anno) ma le **fee SCENDONO** ($5,76 → $5,29). Su un venue a fee **proporzionale** si +paga il *nozionale*, e mediare 23 fasi trasforma un ±1,0x che sbatte da un estremo all'altro in una +posizione frazionaria. **Su un venue a pavimento fisso il segno si ribalterebbe** (regola del 25/07, +riconfermata da un terzo angolo). + +**Barriera (canale funded) — attesa refutata *sulla regola sbagliata*.** Il lato binding non e' la +barriera (−6%, P(breach) 0-7%) ma il **bersaglio** (+10%, P(pass) 40-82%): *meno vol allontana dal +traguardo quanto dalla barriera*, e l'ensemble sta al **31° pctl su P(pass)** pur avendo maxDD +migliore della mediana. Ma la regola che il 22/08 ha misurato **uccidere** e' la **daily-loss a un +giorno**, che close-only **non puo' vedere**: sul **p1 giornaliero** l'ensemble batte il **66%** di +150 configurazioni. **Indizio, non misura** — la conferma richiede la lente accoppiata. + +⚠️ **Il costo vero, e non e' negli ordini: 23 ancore su 24 di TP01 richiedono le barre di oggi**, +cioe' **`fresh_5m`** — il path che il 26/07 e' risultato ricadere **in silenzio** sul certificato e +che il 29/07 ha fallito **6 giri su 8**. Oggi TP01 non ci dipende. **E' l'unica delle tre obiezioni +del 02/07 che sopravvive intatta** (SKH01 quel feed lo usa gia', il che rende l'asimmetria fra i due +sleeve ancora piu' netta). + +🚨 **IL RISULTATO CHE NON ERA NEL MANDATO: la premessa del 02/07 era sbagliata.** Quel filone +boccio' il tranching perche' *"i delta per-ancora (~$1-2) sono sotto il min-order $5 → degenererebbe +in K=1"*. Ma **`src/live/book.build_book_order` banda `abs(delta)` sulla posizione NETTA e manda un +ordine per asset per giro**: *un delta per-ancora non e' mai un ordine*. **Stessa decisione, ragione +diversa — e la ragione conta**, perche' quella vecchia cadrebbe al primo esecutore che mandasse un +ordine per tranche, questa no (e' sulla **taglia dell'effetto**). + +⚠️ **Due errori dell'agente, catturati e congelati in commento:** (a) confrontava +`turnover_per_year`, che `eval_weights` **arrotonda**, accanto a una disuguaglianza stretta → +stampava "9,40 contro 9,38" facendo sembrare violata una sub-additivita' che il conto esatto +rispetta; (b) i percentili di coda usavano **un solo segno per tre colonne** di cui due sono ritorni +e una una frequenza → stampava **34° dove il valore vero e' 66°**, cioe' *"peggio della mediana"* +per un numero migliore della mediana. E la prima stesura affermava *"i due effetti sono additivi"* +come **testo fisso**, refutato dai suoi stessi numeri: ora l'affermazione la **calcola il codice**. + +**VERDETTO: `SU TP01 L'ENSEMBLE NON PUO' CAMBIARE IL DRIFT PER ALGEBRA — ELIMINA L'INCERTEZZA, NON +LA MIGLIORA; IL SEGNALE STA SU SKH01 E DENTRO IL LIBRO NON SI DISTINGUE DA ZERO`**. +**Nessuna proposta**: SKH01 non e' passato per `study_family_honest` su questa griglia, il guadagno +e' misurato sugli stessi 7 anni su cui e' stato selezionato, e la lente `hourly` e' gia' nota (26/07) +per sottostimare il path live. **Il filone stabilisce dove guardare, non cosa fare.**