# 2026-07-30 (5º filone) — f misurato sul 10g: il mio sospetto era sbagliato, e il campione non basta ancora **Richiesta dell'operatore:** *«misura f sul 10g quando ci sono abbastanza scadenze».* **Esito: misurato oggi (il campione c'era), campione INSUFFICIENTE per la differenza, un mio argomento pubblicato oggi REFUTATO. Book, pesi, config INVARIATI.** Script `scripts/live/vrp_f_watch.py` (in `cron_daily.sh`), test `tests/test_vrp_f_watch.py` (11). ## Il campione c'era già Prima cosa misurata, non assunta: nella catena (1.235.064 righe, 2026-05-01 → 2026-07-30) ci sono **8 scadenze utilizzabili per asset su 8**, per **entrambe** le strutture — quindi 16 osservazioni ciascuna. Non serviva aspettare per fare *la misura*; serve aspettare per rispondere alla *differenza*, che è un'altra domanda. ## ❌ La correzione: il mio sospetto aveva il meccanismo giusto e la conclusione sbagliata Nel diario del gate sul tenore, poche ore fa, avevo scritto che la cella vincente *«sta plausibilmente massimizzando l'errore di modello, non l'edge»*, perché compra l'ala più lontana e il 30/07 aveva misurato quell'ala sottoprezzata ~2.3× dal modello piatto. Misurato: | struttura | f_short | f_long | quota ala/corta | **f_net** | |---|---|---|---|---| | canonico 7g δ−0.10 | 1.013 | 2.233 | **18.4%** | **0.718** | | candidato 10g δ−0.05 | 0.972 | **5.846** | **3.2%** | **0.852** | **Il meccanismo è confermato e più forte del previsto** — l'ala a δ −0.05 costa **5.85×** il modello contro 2.23× — **ma la conclusione era rovesciata**: quell'ala pesa il **3.2%** del premio corto invece del 18.4%, quindi il suo errore muove molto meno il credito **netto**. Il candidato ha un f **migliore**, non peggiore. L'aritmetica lo rende ovvio a posteriori: con `k = premio_lungo/premio_corto`, `f_net = (f_short − k·f_long)/(1 − k)`. Un `f_long` grande fa danno solo se moltiplicato per un `k` grande. Avevo guardato il fattore e non il peso. ⚠️ **Artefatto escluso prima di crederci.** Un `f_long` di 5.85 su un'opzione quasi senza valore poteva essere solo il tick minimo (0.0001). Misurato: l'ask dell'ala sta a **22 tick di mediana** (minimo 15, **0%** delle osservazioni a ≤2 tick). È un prezzo vero, non discretizzazione. ## La differenza NON è stabilita Confronto **appaiato per (asset, scadenza)** — non due intervalli guardati a occhio: | | mediana | IC95 bootstrap | |---|---|---| | f canonico | 0.718 | [0.662, 0.797] | | f candidato | 0.852 | [0.809, 0.892] | | **differenza appaiata** | **+0.109** | **[−0.047, +0.193]** | 11 coppie su 16 positive, **l'IC contiene lo zero**. Il punto stimato favorisce il candidato; la misura non lo stabilisce. ✅ Replica indipendente: il f del canonico esce **0.718** per un percorso diverso (finestra DTE e pairing diversi) da quello che stamattina dava 0.73 — le due misure si confermano. Al proprio f misurato: canonico **0.43**, candidato **1.18** (a f=1.00 erano 1.32 e 1.55). ## Criterio pre-registrato, e un sorvegliante invece di un promemoria Dichiarato **prima** di avere il campione pieno, congelato in un test: > **≥ 40 coppie appaiate** (oggi 16) **E ampiezza IC95 della differenza ≤ 0.12** (oggi 0.241). Con ~2 coppie/settimana la prima gamba cade verso **fine ottobre 2026**. `vrp_f_watch.py` gira in `cron_daily.sh`, rifà la misura a ogni giro e **manda una notifica una volta sola** quando il criterio è soddisfatto. È la disciplina imparata con DVOLSPREAD (35 giorni di limbo): *un lead senza sorvegliante e senza data è un lead perso*. ⚠️ **Verificata la calibrazione della soglia prima di fidarsene.** Una soglia sull'*ampiezza* di un IC vale solo se l'IC è calibrato. Misurato su differenza vera nulla: lo zero viene escluso nel **5.0% / 4.0% / 3.0%** dei casi a n=16/40/60 — esattamente il 5% atteso. (Il test iniziale su un seed fisso falliva proprio perché quel seed era uno dei 5% legittimi: sostituito con un test sulla **proprietà**, 100 estrazioni.) ## Cosa questa misura NON fa **Non promuove niente.** Il candidato è bocciato sul **deflated-Sharpe (0.948 < 0.95)**, che non dipende da f, e la regola *niente short-vol da modello in deploy* resta. Un f favorevole toglie **un argomento di cautela su quattro** — restano il gate pre-registrato, il fatto che la regione mai esplorata (>10g) perde comunque, e l'ineseguibilità sotto ~$2.6k. Ma la decisione ora poggia su **meno gambe di quante ne avevo dichiarate**, e questo va scritto: uno dei quattro argomenti era mio, era misurabile, e l'ho misurato sbagliato. Il valore operativo vero sta sull'altra riga della tabella: **f = 0.718 sul canonico** è il numero che rende onesti i conti di uno sleeve che **sta nel book**, non di un candidato. ## Regole - **Un fattore di errore si giudica moltiplicato per il suo peso.** `f_long` 5.85 sembra devastante e conta il 3%; `f_long` 2.23 sembra mite e conta il 18%. Guardare il fattore senza il peso porta alla conclusione opposta a quella vera. - **Prima di credere a un rapporto estremo su un prezzo piccolo, contare i tick.** Un ratio di 5× su qualcosa che vale un tick è aritmetica di griglia, non mercato. - **Una soglia su un intervallo di confidenza richiede di verificare la copertura di quell'intervallo** — altrimenti si pre-registra un criterio che non misura ciò che dice. - **«Non abbastanza campione» non è «nessuna differenza»**: si aspetta con una data, non si conclude.