Files
PythagorasGoal/docs/diary/2026-07-17-weekend-window.md
Adriano Dal Pastro 7534b08be0 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>
2026-07-18 15:03:44 +00:00

112 lines
7.1 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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.**