research(weekend): ondata ven->lun SCARTATA 4/4 — famiglia calendario SATURA; weekend = 38% del gross TP01 (mai de-esporre)

4 agenti (drift/cond/intra/overlay), 375 trial: il drift weekend e' beta B&H,
i gate condizionali sono TP01 re-timed, l'intraday weekend e' moneta simmetrica
(CME-gap morto anche lordo). Fatto strutturale: TP01-weekend-flat = danno certo
(dSh -0.46, P=1.000) -> ogni proposta "risk-off weekend" parte REFUTED salvo
null de-levering. Chiusa la famiglia calendario su BTC/ETH (SEA+expiry+event-clock
+weekend). Book/pesi INVARIATI. Diario 2026-07-17-weekend-window.md.

gitignore: + data/live/ (log esecuzioni book live, stato runtime del conto reale)

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
Adriano Dal Pastro
2026-07-18 15:03:44 +00:00
parent 67f7b89e4c
commit 7534b08be0
7 changed files with 1584 additions and 0 deletions
+111
View File
@@ -0,0 +1,111 @@
# 2026-07-17 — Ondata WEEKEND (ven→lun, timing multipli, 4 agenti): 0 edge, 1 fatto strutturale sul book
**Goal:** "cerca strategie che con diversi timing lavorino solo tra venerdì e lunedì, usa diversi
agenti." Quattro filoni in parallelo su BTC/ETH 1h/15m certificati, harness `altlib` condiviso,
metodologia onesta piena (selezione in-sample-only pre-2025, banda di timing mai la best-cell,
deflated-Sharpe sull'intera famiglia, `day_boundary_robust`, fee nette 0.10% RT + sweep,
`causality_ok`, realismo small-cap $600). Prior vincolante: day-of-week già morto (SEA 2026-07-02),
anchor timing-luck su 3/3 sleeve ancorati, CRT triplo-refutato.
**Esito: SCARTATO 4/4. Nessun LEAD, nessun forward-monitor, book/pesi INVARIATI.**
Il fatto nuovo utile è *difensivo*: il weekend è leggermente sovra-denso per TP01 (38% del gross
nel 31% del tempo) → togliere esposizione weekend al book è attivamente dannoso.
---
## Filone 1 — WK-DRIFT: drift puro ven→lun (`r0717_wk_drift.py`)
Griglia 6 H_in (ven) × 6 H_out (lun) × long/short × BTC/ETH = **144 trial**.
- Cella scelta in-sample (LONG ETH ven08→lun16): IS +1.07 → FULL +0.84 → **HOLD 0.14**
(ret hold-out 23%), maxDD 69%. Banda long: FULL med +0.57, HOLD med **0.21**.
- **DSR 0.001/144** (max atteso sotto il null: 1.97 ≫ 0.84 osservato).
- **Null weekday: il venerdì NON è speciale** — mediana IS della famiglia long per ancora:
Fri +0.74 = 71° percentile, sotto Mon (+0.78) e Sun (+0.78). Qualsiasi finestra ~3g long fa lo
stesso = beta di buy&hold a esposizione ridotta (B&H daily Sh FULL: BTC 0.79 / ETH 0.86 ≈ il max
della griglia).
- A fee ZERO l'hold-out resta negativo (0.03) → non è morte-per-fee, l'edge OOS non esiste.
- `day_boundary_robust`: ARTIFACT-RISK (uplift flippa spostando il confine UTC, spread 0.43).
**SCARTATO** — il "weekend drift" è B&H diluito nel tempo (vive del toro 2019-21, 58% nel 2022,
33% nel 2025).
## Filone 2 — WK-COND: weekend condizionato da gate causali (`r0717_wk_cond.py`)
5 gate causali noti all'ingresso del venerdì × 9 timing × direzioni = **99 combo** (198 stream):
(a) TSMOM concorde, (b) FOLLOW/FADE del venerdì, (c) follow/fade della settimana, (d) regime vol
RV30 (percentile espandente causale), (e) breakout dei livelli del giovedì.
- **5/5 gate: earns_slot=False, DSR ≤0.30, `day_boundary_robust` = ARTIFACT-RISK 5/5** (la stessa
firma che uccise `open_drive`: l'etichetta "weekend" non è dove vive alcun segnale).
- (a) TSMOM-gate = **TP01-in-weekend per costruzione** (β 0.67, uplift hold 0.015, jackknife
0.18): re-timing del trend, non alpha. Lo short weekend perde perfino col trend a favore
(mediana IS 0.15).
- (b) FOLLOW>FADE regge in-sample ma **si inverte in hold-out** → rumore; il lead prevday-FOLLOW
non si trasferisce alla finestra weekend. Unico is_hedge=True dell'ondata, ma con HOLD 0.92.
- (d) l'unica variante con HOLD positivo (HIGH70 +0.19) è **non selezionabile in-sample**
(IS +0.22): crederle sarebbe selection-on-holdout da manuale.
- A fee zero l'hold-out resta negativo per 4/5 gate → non è morte-per-fee.
**SCARTATO** — e con questo (99 trial qui + SEA + expiry-calendar 2026-07-02) **la famiglia
calendario su BTC/ETH è satura**: riaprirla solo con un meccanismo nuovo non-calendario.
## Filone 3 — WK-INTRA: intraday dentro la finestra (`r0717_wk_intra.py`)
**132 celle** su 1h+15m, tre sotto-filoni: (A) Donchian weekend-only follow/fade,
(B) gap dom 22:00 vs close ven 21:00 (meccanizzazione onesta del claim "CME gap"),
(C) livelli H/L/C del venerdì come magnete.
- Quadro: celle IS **lorde** positive = 64/132 ≈ 50% = **moneta simmetrica** (rumore prima ancora
delle fee); IS nette >0: 18/132. DSR famiglia 0.068 → 0.001 per filone.
- (A) la cella IS (Donchian 48h follow) è trend-2022 su ETH travestito (2022 +96%; BTC per-anno
negativo nel toro); su BTC muore di fee E il lordo è sotto soglia.
- (B) **il claim "CME gap" è morto**: nessuna config ha IS netto >0; la best (revert 2%) fa IS
0.09 *lordo +0.03* → l'edge non esiste nemmeno lordo; il suo HOLD +0.5 è la firma esatta del
selection-on-holdout. Nessuna centratura reale sulle 22:00 (shift-test).
- (C) il "magnete del venerdì" non esiste in nessuna direzione (L-fade: IS lordo +0.12 →
HOLD 0.97/0.77; DSR 0.001). FOLLOW>FADE riconfermato (le celle fade sono le peggiori ovunque).
- Eseguibilità $600 NON è il vincolo (0% ordini sotto min-order, haircut 0.00): manca l'edge.
**SCARTATO 3/3.**
## Filone 4 — WK-OVERLAY: esposizione weekend di TP01 sul book (`r0717_wk_overlay.py`)
Il lato eseguibile: conviene uscire/dimezzare/aumentare TP01 nel weekend? Griglia timing + null
de-levering (lezione DVOL 2026-06-26) + bootstrap settimanale appaiato + placebo rotazioni + smallcap.
- **Fatto strutturale (attribuzione gross):** la finestra ven20→lun00 è il 30.9% del tempo e porta
il **38% del gross di TP01** (+44.2pp su +117.8pp, positivo ogni anno) — il weekend non è tempo
morto per uno slow-trend crypto 24/7, è sovra-denso.
- **WK-FLAT: REFUTED, attivamente dannoso** — ΔSh FULL 0.46 (banda 6/6 negativa),
**P(danno)=1.000** al bootstrap; a fee zero resta 0.41; il de-levering k=0.88 compra lo stesso
DD a Sharpe pieno (1.29 vs 0.83). Placebo: il weekend è tra i giorni *peggiori* da flattare (5/7).
- **WK-HALF: REFUTED** — solo de-levering pagato con fee (k=0.755 a pari DD: +0.20 Sh in più).
- **WK-BOOST ×1.5: neutro** — coerente col controllo simmetrico ma non significativo (P=0.12) e a
pari DD la leva uniforme rende di più sul CAGR → nessuna azione.
- **WK-ONLY**: Sh 1.04 da solo, ma k=0.54 uniforme lo domina → diagnostica, non strategia.
- Small-cap $600: haircut ≈0 su tutte — l'overlay si eseguirebbe fedelmente; non conviene e basta.
**REFUTED/nessuna azione — book e pesi INVARIATI.**
---
## Lezioni codificabili
1. **Famiglia calendario BTC/ETH = SATURA.** SEA (day-of-week) + expiry-calendar + event-clock
(2026-07-02) + 144+99+132 trial weekend (oggi) convergono: su BTC/ETH non vive alcun edge di
calendario/finestra-oraria. Prossimi claim di questa famiglia partono da prior ~0: esigere il
pacchetto completo (null weekday-ancora + day_boundary + DSR famiglia) prima ancora di guardare
l'hold-out.
2. **"~50% di celle lorde positive" = rumore simmetrico**: diagnostica rapida di famiglia morta
prima ancora del netting fee (WK-INTRA).
3. **Il gate condizionato non salva una finestra morta**: un gate causale su una finestra senza
edge o replica il trend (TP01 travestito) o seleziona rumore che flippa OOS (5/5 in WK-COND).
4. **Non de-esporre il weekend del book**: il 38%-in-31%-del-tempo di TP01 è la ragione
quantificata per cui il libro resta 24/7. Qualsiasi futura proposta "risk-off weekend" parte
REFUTED salvo nuovo evidence (null de-levering obbligatorio).
5. Riconferme indipendenti: FOLLOW>FADE (3ª volta); "CME gap" e "magnete del venerdì" =
folklore che non sopravvive alla meccanizzazione onesta.
**Script:** `scripts/research/r0717_wk_{drift,cond,intra,overlay}.py` (standalone, `uv run python`,
nessun file esistente toccato). **Nessun cambiamento a strategie, config, pesi o esecuzione live.**