ops(live): cabla il forward-monitor DVOLSPREAD nel cron + gate pre-registrato
Chiude la lezione (c) dell'ondata 26/07: "un lead in forward-monitor senza monitor e senza scadenza e' un lead perso" — DVOLSPREAD era in limbo da 35 giorni. Ora ha config congelata, monitor nel cron e gate con data. Config congelata = la cella scelta IN-SAMPLE (zwin=180 k=2.0 lw=0.6 zw=1.1 tgt=0.17 svw=60), NON quella pubblicata dall'agente: quella era 83a/729 sull'hold-out ma 471a/729 in-sample e fallisce il deflated-Sharpe (0.947), la congelata lo passa (0.953). Riusa make_book di r0726_dvolspread_gate, nessuna reimplementazione. Strumentazione specifica: il book va flat quando manca il DVOL, quindi un feed rotto produrrebbe zeri che contati come evidenza direbbero "nessuna perdita" invece di "nessuna misura". Contabilita' a 3 stati (attive / flat-da-segnale / flat-senza-dato), finestra misurata in barre ATTIVE, e guardia che esce 1 se FROZEN diverge dallo stato salvato. Gate pre-registrato: kill 2026-10-24 se Sharpe < -0.50; decisione 2027-01-24 solo se Sharpe>0 E marginale ADDS E deflated-Sharpe>=0.95 E weights_tilt_null; veto d'integrita' se barre attive <80% (si estende, non si decide su dati mancanti). La soglia su Sharpe e' debole di proposito: con ~180 barre SE(Sharpe)~1.4, una soglia alta sarebbe finta precisione. Inception 2026-07-25, apertura +0.184 = $111/gamba (cap $300). Book/pesi INVARIATI. Suite 255 verdi. Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -133,6 +133,34 @@ a w=15%, **+0.11 / +0.25** a w=25%.
|
||||
**DVOLSPREAD esce dal limbo e diventa un candidato in forward-monitor con parametri ONESTI**
|
||||
(`zwin=180, k=2.0, lw=0.6, zw=1.1, tgt=0.17, svw=60` — la cella in-sample), non quelli pubblicati.
|
||||
|
||||
### ✅ Monitor CABLATO (stessa sessione)
|
||||
|
||||
`scripts/live/paper_dvolspread.py`, in `cron_daily.sh` dopo `fetch_dvol.py` (quindi con DVOL
|
||||
fresco), stato in `data/paper_dvolspread/` (gitignored), test `tests/test_paper_dvolspread.py`
|
||||
(10 casi). Inception **2026-07-25**, posizione d'apertura +0.184 → **$111/gamba** (cap $300).
|
||||
|
||||
**Strumentazione specifica di questo lead** — la ragione per cui non bastava copiare
|
||||
`paper_statarb`: il book va **flat quando il DVOL manca**, quindi un feed rotto produrrebbe una
|
||||
fila di zeri che, contati come evidenza, direbbero *"nessuna perdita"* invece di *"nessuna
|
||||
misura"*. Il monitor tiene una contabilità a **tre stati** — ATTIVE / flat-da-segnale /
|
||||
**flat-senza-dato** — e la finestra forward si misura in **barre attive**, non in giorni di
|
||||
calendario. C'è anche una **guardia sulla config**: se `FROZEN` diverge dallo stato salvato il
|
||||
monitor esce con codice 1 invece di continuare su una finestra non più valida (verificato; nel
|
||||
cron non c'è `set -e`, quindi segnala senza rompere la catena).
|
||||
|
||||
**Gate pre-registrato (scritto oggi, prima di vedere qualsiasi barra forward):**
|
||||
- **kill anticipato 2026-10-24 (~90g):** Sharpe forward < −0.50 → ritiro;
|
||||
- **decisione 2027-01-24 (~180g):** promozione solo se *tutte e quattro* — (a) Sharpe > 0,
|
||||
(b) marginale ancora ADDS + robust_oos + has_insample_edge, (c) deflated-Sharpe ricalcolato
|
||||
sul campione esteso ≥ 0.95, (d) `weights_tilt_null` superato;
|
||||
- **veto d'integrità:** barre attive < 80% → la finestra non conta, si **estende** invece di
|
||||
decidere su dati mancanti.
|
||||
|
||||
⚠️ La soglia (a) è deliberatamente debole — **necessaria, non sufficiente**. Con ~180 barre attive
|
||||
l'errore standard dello Sharpe è ≈1.4: una soglia più alta sarebbe finta precisione. Il peso della
|
||||
decisione sta su (c) — se il margine 0.953, già sul filo, **non migliora** con più dati, l'edge
|
||||
non c'è.
|
||||
|
||||
**Perché NON entra nel book, dichiarato:**
|
||||
- **campione ATTIVO 1949 giorni su 2691** (72%): prima del 2021-03 non esiste DVOL e il book è
|
||||
correttamente flat. L'**hold-out attivo è 1.6 anni**;
|
||||
|
||||
Reference in New Issue
Block a user