Files
PythagorasGoal/docs/diary/2026-07-30-vrp-f-strutture.md
T
Adriano Dal Pastro fb01c5714c research(vrp): f misurato sul 10g — il mio sospetto era sbagliato, e il campione non basta ancora
Book, pesi, config INVARIATI. Nuovo sorvegliante in cron_daily.

IL CAMPIONE C'ERA GIA': 8 scadenze utilizzabili per asset su 8, entrambe le
strutture, 16 osservazioni ciascuna. Non serviva aspettare per fare la misura;
serve aspettare per rispondere alla DIFFERENZA, che e' un'altra domanda.

CORREZIONE A UN ARGOMENTO PUBBLICATO POCHE ORE FA. Nel gate del tenore avevo
scritto che la cella vincente 'sta massimizzando l'errore di modello' perche'
compra l'ala piu' lontana. Misurato: il meccanismo e' confermato e piu' forte
del previsto (f_long 5.85 contro 2.23) ma la conclusione era ROVESCIATA —
quell'ala pesa il 3.2% del premio corto invece del 18.4%, quindi sul credito
NETTO l'effetto e' minore: f_net 0.852 contro 0.718, il candidato ha un f
MIGLIORE. Con f_net = (f_short - k*f_long)/(1-k), un f_long grande fa danno
solo moltiplicato per un k grande: avevo guardato il fattore e non il peso.
La decisione (nessun cambio) regge, ma su tre gambe invece di quattro.

Artefatto di tick escluso prima di crederci: l'ask dell'ala sta a 22 tick
mediani, minimo 15, 0% delle osservazioni a <=2 tick.

LA DIFFERENZA NON E' STABILITA: appaiata per (asset, scadenza) fa +0.109 con
IC95 [-0.047, +0.193], 11/16 positive -> contiene lo zero. Replica indipendente
del canonico: 0.718 per un percorso con finestra DTE e pairing diversi da
quello che stamattina dava 0.73.

CRITERIO PRE-REGISTRATO, congelato in un test: >=40 coppie E ampiezza IC95
<=0.12 (oggi 16 e 0.241), prima gamba verso fine ottobre 2026. Il sorvegliante
rifa' la misura ogni giorno e notifica una volta sola quando basta — lezione
DVOLSPREAD, un lead senza sorvegliante e senza data e' un lead perso.

Calibrazione della soglia verificata prima di fidarsene: con differenza vera
nulla lo zero e' escluso nel 5.0/4.0/3.0% dei casi a n=16/40/60, cioe' il 5%
atteso. Il test iniziale su seed fisso falliva perche' quel seed era uno dei 5%
legittimi: sostituito con un test sulla proprieta'.

REGOLE: (a) un fattore di errore si giudica moltiplicato per il suo peso;
(b) prima di credere a un rapporto estremo su un prezzo piccolo, contare i
tick; (c) una soglia sull'ampiezza di un IC richiede di verificarne la
copertura; (d) 'non abbastanza campione' non e' 'nessuna differenza'.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
2026-07-30 22:17:11 +00:00

5.3 KiB
Raw Blame History

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.