harness(realism): codifica le 2 lezioni dell'onda intraday (day-boundary + small-cap fills)

Due gate nuovi in altlib.py (test tests/test_harness_realism.py, suite intera verde):

1. day_boundary_robust(target_fn, tf): shifta il confine del giorno UTC e ri-misura l'uplift
   marginale. INVARIANT (segnale di prezzo, spread 0) / ROBUST (effetto calendario vero, resta
   positivo) / ARTIFACT-RISK (uplift si inverte = etichettatura). Riproduce da solo il verdetto
   degli scettici: open_drive +0.23@00:00 -> -0.33@+8h = ARTIFACT-RISK; prevday_breakout = ROBUST.
   Decoupling chiave: il segnale vede il clock shiftato, il backtest usa il calendario reale.

2. eval_weights_smallcap(df, target, capital=600, min_order=5): salta i ribilanciamenti di
   nozionale < min_order (la finzione del micro-trading sub-dollaro che eval_weights costa come
   fee proporzionale su un overlay vol-target), riporta lo Sharpe haircut reale vs modellato.
   Vale per ogni sleeve a $600, TP01 incluso.

CLAUDE.md aggiornato (sezione HARNESS REALISM). La pipeline di falsificazione ora becca da sola
artefatti-calendario e finzioni-fee, oltre a hedge/regime-luck/leakage gia' codificati.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
Adriano Dal Pastro
2026-06-21 14:44:20 +00:00
parent 24565974c0
commit 4ae3b42442
4 changed files with 171 additions and 10 deletions
@@ -66,17 +66,18 @@ gonfiato dal micro-ribilanciamento sub-dollaro a $600. Lo Sharpe standalone 1.80
allo scettico d'esecuzione (breakout del range del giorno prima, eseguibile, leak-free), con caveat
short-leg/regime-2025. Trattamento = come `dvol_spread` / XS01 / STA05.
### Lezioni harness da codificare (il vero ritorno)
### Lezioni harness — CODIFICATE (il vero ritorno)
1. **Test di shift del confine-giorno**: un effetto "ora/sessione" che inverte spostando l'inizio del
giorno UTC di poche ore è un artefatto di etichettatura (ha ucciso open_drive). Da aggiungere ai gate
per ogni segnale calendar/session-based.
2. **Realismo fee a piccolo capitale**: `eval_weights` con vol-target genera migliaia di ribilanciamenti
sub-dollaro; a $600 la fee proporzionale su trade infinitesimi è ottimistica. Serve un costo che
**discretizzi i ribilanciamenti** (min-order + fee fissa) per lo Sharpe netto reale. Vale per TUTTI
gli sleeve a questo capitale, TP01 incluso.
3. **Causality guard anche nel lab intraday**: l'online-consistency check (max_tail_diff) va integrato
in `intra_score` come in blind/ortho (qui fatto a mano).
1. **`altlib.day_boundary_robust(target_fn, tf)`** — shifta il confine del giorno UTC e ri-misura
l'uplift marginale: INVARIANT (segnale di prezzo, spread 0) / ROBUST (effetto calendario vero,
resta positivo) / **ARTIFACT-RISK** (l'uplift si inverte = etichettatura). Verificato: riproduce
da solo il verdetto degli scettici — open_drive → ARTIFACT-RISK (+0.23→−0.33), prevday_breakout
→ ROBUST. Test `tests/test_harness_realism.py`.
2.**`altlib.eval_weights_smallcap(df, target, capital=600, min_order=5)`** — salta i
ribilanciamenti sub-min_order (la finzione del micro-trading a $600), riporta lo Sharpe haircut
reale vs modellato. Vale per ogni sleeve a questo capitale, TP01 incluso. Test idem.
3.**Causality guard nel lab intraday**: qui fatta a mano (max_tail_diff = 0 su tutti e 5). Da
integrare in `intra_score` come in blind/ortho (non ancora codificata).
File: `scripts/research/intraday/{intra_score,meta_intra,verify_intra}.py`,
`agents/agent_00..15_*.py`, `intra_leaderboard.json`.