research(intraday): PREVDAY block-bootstrap -> coda-fortuna vs persistente (blocker #2/#3)
Chiarimento: il "top-5 giorni = 76-83%" del diario era sulle gambe REVERT scartate, non su PREVDAY (breakout). Test su PREVDAY stesso + gamba short (= tutto il valore). Block bootstrap circolare 20g B=3000. [A] Concentrazione: PREVDAY-full NON e' piu' coda-fortuna di TP01 (top5 22% vs 19%; 14.3% dei giorni per il 50% del gain vs 8.0% -> piu' distribuito). MA la gamba short e' tail-dipendente (top5=130% del netto: togliendo i 5 giorni migliori va in perdita; sono i giorni-crash). [B] Bootstrap: full robustissimo (uplift mediana +0.28, 99% dei resample >0); hold-out regge con coda piu' larga (uplift mediana +0.53, 93% >0, 5deg pctl appena negativo per hold-out corto + short tail-dipendente). Verdetto: #3 tail-luck DECLASSATO per PREVDAY-full, CONFERMATO per la gamba short (payoff grumoso, su <10 giorni-crash/anno); #2 null-corr-zero RIDIMENSIONATO (uplift genuinamente positivo, era efficienza relativa). Sintesi trilogia: PREVDAY = tail-hedge legittimo e bootstrap-robusto, eseguibile a taglia reale, payoff concentrato sui crash -> candidato overlay tail-hedge, non sleeve-alpha. Forward-monitor. Diario: 2026-06-21-prevday-bootstrap.md. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# PREVDAY block-bootstrap — coda-fortuna vs persistente (blocker #2/#3)
|
||||
|
||||
**Data:** 2026-06-21 (chiude la trilogia: fill-haircut → turnover/hedge → bootstrap)
|
||||
**Script:** `scripts/research/intraday/prevday_bootstrap.py`
|
||||
**Esito:** PREVDAY-full **non** è più coda-fortuna di TP01 e l'edge è **bootstrap-robusto** (full
|
||||
99% / hold-out 93% dei resample con uplift>0). MA la gamba short (= tutto il valore) è
|
||||
**tail-dipendente** (top-5 giorni = 130% del suo netto). PREVDAY = tail-hedge legittimo dal payoff
|
||||
grumoso. Resta forward-monitor.
|
||||
|
||||
## Chiarimento di scope
|
||||
|
||||
Il "top-5 giorni = 76-83% del PnL" del diario intraday era sulle GAMBE REVERT del combo a 5 segnali
|
||||
(vol_event/volume_spike/gap_fill), poi SCARTATE. Il sopravvissuto è PREVDAY (breakout-continuation).
|
||||
Qui si testa PREVDAY STESSO — e la sua gamba SHORT, che (prevday_turnover) è l'intero valore di
|
||||
portafoglio. Block bootstrap circolare (blocchi 20g, B=3000) per preservare autocorrelazione/regime.
|
||||
|
||||
## [A] Concentrazione del PnL nei top-K giorni
|
||||
|
||||
| serie | n | totRet | top5 | top10 | top20 | giorni→50% gain |
|
||||
|-------|--:|-------:|-----:|------:|------:|----------------:|
|
||||
| PREVDAY full | 2869 | +182% | 22% | 36% | 59% | 411 (14.3%) |
|
||||
| **PREVDAY short-only** | 2869 | **+28%** | **130%** | 218% | 345% | 312 (10.9%) |
|
||||
| PREVDAY long-only | 2869 | +154% | 18% | 30% | 49% | 287 (10.0%) |
|
||||
| TP01 (riferimento) | 2657 | +116% | 19% | 33% | 55% | 213 (8.0%) |
|
||||
|
||||
- **PREVDAY-full NON è più coda-fortuna di TP01**: top5 22% vs 19%, e per il 50% del guadagno serve
|
||||
*più* tempo (14.3% dei giorni vs 8.0% → più distribuito). Il tail-luck del diario era sulle gambe
|
||||
revert scartate, non su PREVDAY.
|
||||
- **Gamba short tail-dipendente:** top5 = **130% del netto** → togliendo i 5 giorni migliori la short
|
||||
va in perdita (gli altri 2864 giorni nettano −8%). Sono i giorni-crash dove la short paga.
|
||||
|
||||
## [B] Circular block bootstrap (20g, B=3000)
|
||||
|
||||
| campione | PREVDAY Sharpe (mediana [5°,95°], %>0) | blend 80/20 uplift (mediana [5°,95°], %>0, %>+0.10) |
|
||||
|----------|----------------------------------------|------------------------------------------------------|
|
||||
| full (2018-08→2026-06) | +1.24 [+0.64,+1.80] 100% | +0.28 [+0.09,+0.47] 99% / 93% |
|
||||
| hold-out (2025+) | +1.27 [−0.01,+2.46] 95% | +0.53 [−0.05,+1.21] 93% / 88% |
|
||||
| short-only hold-out | +1.12 [−0.32,+2.41] 90% | +0.53 [−0.08,+1.31] 92% / 87% |
|
||||
|
||||
- **Full sample: edge robustissimo** — 99% dei resample dà uplift>0 (mediana +0.28). Non è "un blocco
|
||||
fortunato".
|
||||
- **Hold-out: regge con coda più larga** (5° pctl appena negativo: hold-out corto ~536g + short
|
||||
tail-dipendente), ma 93% dei resample >0, 88% >+0.10.
|
||||
|
||||
## Verdetto blocker #2/#3
|
||||
|
||||
- **#3 tail-luck — DECLASSATO per PREVDAY-full, CONFERMATO per la gamba short.** La strategia intera
|
||||
non è più concentrata di TP01 (che già deployamo); il motore di valore (la short) sì: vive su <10
|
||||
giorni-crash/anno. Bootstrap-robusto (non un singolo blocco), ma il forward sarà GRUMOSO, non un
|
||||
liscio +0.56/periodo.
|
||||
- **#2 null-corr-zero — RIDIMENSIONATO.** L'uplift è genuinamente positivo (93-99% dei resample), non
|
||||
rumore; il punto era di *efficienza relativa* (rende meno di un ipotetico asset perfettamente
|
||||
scorrelato), non di esistenza dell'edge.
|
||||
|
||||
## Sintesi della trilogia (fill-haircut + turnover/hedge + bootstrap)
|
||||
|
||||
PREVDAY, dopo tre attacchi avversariali:
|
||||
1. **Eseguibile alla taglia reale** ($600): haircut di fill +0.01 (blocker #4 smontato).
|
||||
2. **Già a turnover efficiente**: ridurlo erode l'edge; nessuna ottimizzazione (config congelata).
|
||||
3. **È un HEDGE, non alpha**: tutto il valore è la gamba short → tail-hedge di regime-down, additivo
|
||||
alla flat-stance di TP01 (blocker #1 inchiodato).
|
||||
4. **Edge bootstrap-robusto** ma **payoff grumoso** (il valore è in pochi giorni-crash) (blocker #3
|
||||
declassato sul full, confermato sulla short; #2 ridimensionato).
|
||||
|
||||
→ **Candidato tail-hedge legittimo**, non sleeve-alpha. Resta in FORWARD-MONITOR: la domanda forward
|
||||
non è più "è eseguibile / è overfit", ma **"la gamba short continua a pagare nei prossimi crash fuori
|
||||
da 2022 e 2025-26?"**. Se sì → si valuta come overlay di tail-hedge (peso piccolo, atteso payoff
|
||||
lumpy); se no → era beta-corto del regime down 2025-26.
|
||||
Reference in New Issue
Block a user