CLAUDE.md: la chiave di scala specificata — tetto sul prodotto, il test di guardia smette di controllare, e il nodo del disaster-SL rotolante

This commit is contained in:
Adriano Dal Pastro
2026-08-22 23:58:19 +00:00
parent ef30c20af5
commit db9d844351
+37 -2
View File
@@ -2384,8 +2384,9 @@ Prima ondata di ricerca onesta su BTC/ETH certificati (5 track, harness condivis
→ al gate si confronterebbe **un benchmark giusto con un numero di strategia sbagliato**, e il → al gate si confronterebbe **un benchmark giusto con un numero di strategia sbagliato**, e il
margine sembrerebbe **+5,83 invece di +1,87**. margine sembrerebbe **+5,83 invece di +1,87**.
🚨 **(4) WORST-DAY — la riserva sulla leva e' mal tarata di 2-4 ORDINI DI GRANDEZZA, ma il knob di 🚨 **(4) WORST-DAY — la riserva sulla leva e' mal tarata di 2-4 ORDINI DI GRANDEZZA, ma il knob di
scala NON ESISTE.** Il gradino 1,00x→1,25-1,50x vale **14,7 → 11,6 anni** al capitale-rendita scala NON ESISTE.** Il gradino di leva vale **14,7a → 12,9a a 1,25x** e **→ 11,6a a 1,50x** al
(~€300/mese di versamenti equivalenti) ed era bloccato da un parametro **scelto a mano** ("un giorno capitale-rendita (**+€164/mese** e **+€282/mese** di versamenti equivalenti) ed era bloccato da un
parametro **scelto a mano** ("un giorno
a 10% ogni anno"). **Il peggior giorno ha due risposte:** **3,94% in chiusura** (2020-03-13) e a 10% ogni anno"). **Il peggior giorno ha due risposte:** **3,94% in chiusura** (2020-03-13) e
**7,33% al minimo** intra-giorno (rapporto mediano **1,89×**). Coda GPD: **4,55% a 1/10.000 **7,33% al minimo** intra-giorno (rapporto mediano **1,89×**). Coda GPD: **4,55% a 1/10.000
giorni** [6,34/3,08] ⚠️ **ma Hill dice 7,34% (ξ 0,34 contro 0,09): i due stimatori NON concordano giorni** [6,34/3,08] ⚠️ **ma Hill dice 7,34% (ξ 0,34 contro 0,09): i due stimatori NON concordano
@@ -2456,6 +2457,40 @@ Prima ondata di ricerca onesta su BTC/ETH certificati (5 track, harness condivis
plausibili in due punti diversi**. Stessa famiglia del `DatetimeIndex.view("int64")` codificato il plausibili in due punti diversi**. Stessa famiglia del `DatetimeIndex.view("int64")` codificato il
01/07. **Su un perpetuale lineare, inoltre, `diff(nozionale) < 0` NON e' una vendita: il nozionale 01/07. **Su un perpetuale lineare, inoltre, `diff(nozionale) < 0` NON e' una vendita: il nozionale
scende da solo quando scende il mark.** scende da solo quando scende il mark.**
✅ **SEGUITO 2026-08-22 notte — LA CHIAVE E' SPECIFICATA (`docs/research/SPEC-scale-key.md` +
prototipo isolato `r0822e_scale_proto.py`, zero scritture, isolamento verificato a runtime), con un
NODO IRRISOLTO.** Registro §38. Replica a k=1,00 **6/6** contro WORST-DAY.
⚠️ **CORREZIONE A UN NUMERO CHE AVEVO SCRITTO IO:** *"1,25-1,50x vale 14,7 → 11,6 anni, ~€300/mese"*
**fondeva due gradini** — a **1,25x** l'equivalente e' **+€164/mese**, il €282 e' del **1,50x**.
🚨 **Tre risultati che il mandato non prevedeva:**
**(i)** `test_leva_massima_da_config_resta_sotto_o_uguale_a_1x` **NON si rompe, ed e' PEGGIO che
rompersi**: misura `frac · n_asset` mentre la grandezza vera diventerebbe `frac · n_asset · scala`
**continua a passare e smette di controllare**. **4ª occorrenza** della forma *"un controllo
puntato su una configurazione diversa da quella che gira"*. **Va cancellato con nota, non
aggiustato.**
**(ii) La guardia che morde per prima e' il DISASTER-SL, non il peggior giorno:** bound strutturale
k ≤ 3,49x, **disaster-SL k ≤ 1,67x = 2,1× piu' stringente** → **C1 di WORST-DAY guardava la
grandezza sbagliata**. Il tetto giusto e' l'invariante `n_asset · frac · scala · disaster_sl_pct
≤ 0,50`, che lega **tre** chiavi.
**(iii) Il tetto va sul PRODOTTO, non sulla chiave:** `frac=0,625` + `scala=1,25` = leva **1,562x**
e **passerebbe** un tetto *"scala ≤ 1,25"* — e WORST-DAY aveva appena pubblicato che alzare `frac`
da solo *"non produce k=1,25"*: **combinato con la scala lo produce eccome.**
📌 **Gate proposto `GATE SCALA-01`** (9 condizioni, fra cui **tetto sul prodotto** e **A6
anti-recency**: `k_ammesso` calcolato **togliendo gli ultimi 90 giorni** dev'essere ≥ k richiesto),
perche' **la scala e' invisibile a ogni gate esistente** — Sharpe **1,5051 identico a tutte le celle
di k**: `deflated_sharpe` e `marginal_vs_tp01` **non falliscono, non vedono la variabile**.
`weights_tilt_null` invece **passa con potenza**: peso implicito TP01 **0,750000 a ogni k**,
`max|target(k) k·target(1)| = 0`, e il **controllo positivo** (scala sulla sola gamba TP01 = cio'
che farebbe `target_vol`) lo porta a **0,789** e viene smascherato.
🚨 **IL NODO, da sciogliere PRIMA di qualunque gradino:** `execution.py:196-223` **ri-ancora il
disaster-SL al mark a ogni giro** (tolleranza 5%) → **il 30% e' ROTOLANTE, non un pavimento**. Se e'
cosi', il 37,5% e' il costo di **un episodio** e un ribasso lento ne produce **piu' d'uno**, e il
margine 1,33x del gradino non e' quello vero. ⚠️ **Letto nel codice, NON misurato**, e il log non lo
permette (servirebbe `pos_prima`): **non ricostruibile a posteriori** → per misurarlo bisogna prima
aggiungere il campo al log.
**Seconda soglia dichiarata:** il fallback dell'equity oggi scatta **0 volte su 1.442 giri**; sopra
il **2% dei giri in 90 giorni** il libro girerebbe a leva **mista** e `g(k)` smetterebbe di
descriverlo.
**REGOLE NUOVE:** (a) **una data in un gate va giustificata col COSTO della misura, non con la sua **REGOLE NUOVE:** (a) **una data in un gate va giustificata col COSTO della misura, non con la sua
difficolta' percepita** — due gate d'attesa eliminati in una sera perche' nessuno aveva contato i difficolta' percepita** — due gate d'attesa eliminati in una sera perche' nessuno aveva contato i
secondi; (b) **una verifica esterna a €0 va fatta PRIMA di qualunque misura che ne dipenda**, e si secondi; (b) **una verifica esterna a €0 va fatta PRIMA di qualunque misura che ne dipenda**, e si