Chiude il pendente dell'ondata timing 2026-07-02. Due audit indipendenti (sanity replica bit-exact, ancore a priori, zero tuning per-fase, bootstrap): - XS01 (10 fasi ciclo H=10): fortuna nel DD (15° pctl: 10.8% vs 15.5% tipico, 29% peggiore) e FULL (85°), non nell'hold-out (65°); P(spike)~0.91-0.94. Lens onesta = ensemble di fase FULL 1.25 / HOLD 1.31 / DD 11%. Ammissione @15% regge, i numeri 1.50/1.71/11% no. - SKH01 (23 offset griglia 230m/690m): canonico = 93-98° pctl di OGNI metrica, minHold/blend/book-HOLD = massimo dei 23; il gate DD<30% (criterio di selezione V2-DD) fallisce in 15/23 offset. Regge: uplift blend positivo a tutte le 23 fasi (min +0.18) + corr ~0.08 -> ADDS ridimensionato. Path live reale (cron orario + exit software): book FULL 1.46->1.19 / HOLD 1.64->1.15 / DD 18->25%, gap-through-stop nei crash (sl2% -> -11/-23%). - Book 5-sleeve: HOLD 2.46 eredita ~+0.10/+0.17/+0.5 di fortuna d'ancora (TP01/XS01/SKH01) -> stima de-luckata HOLD ~1.9-2.1, FULL ~2.0-2.2, DD ~6%. Nessun cambio operativo (pesi/book live invariati; ogni cambio passa weights_tilt_null). Narrativa aggiornata (CLAUDE.md, docstring skyhook). Follow-up: anchor_luck_band() in altlib, cadenza 230m, peso SKH live. 168 test verdi. Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
8.7 KiB
2026-07-02 — Audit anchor timing-luck su XS01 e SKH01 (chiusura del pendente dell'ondata TIMING)
Contesto. L'ondata TIMING+CRT dello stesso giorno (2026-07-02-timing-crt-wave.md) ha stabilito
che l'hold-out di TP01 (0.31) è la migliore delle 24 ancore daily possibili (mediana 0.04,
P~0.86 di uno spike così per caso). Lo scettico ha flaggato l'audit come pendente sugli altri
due sleeve a ribilanciamento/griglia ancorata: XS01 (fase del ciclo di ribilanciamento H=10
giorni) e SKH01 (offset della griglia dual-TF 230m/690m, origin='epoch'). Questo diario
chiude entrambi. Due agenti indipendenti, metodologia identica allo scettico TP01
(r0702_skeptic_offset.py): ancore dichiarate a priori, parametri identici in ogni
fase/offset (zero tuning per-ancora), sanity replica bit-exact della sleeve canonica prima di
qualsiasi numero, block-bootstrap congiunto per P(spike).
Script: scripts/research/r0702_anchor_xs01.py, scripts/research/r0702_anchor_skh01.py.
Nessun file di produzione toccato dagli agenti (solo docstring/narrativa aggiornate a valle, qui).
Verdetto in una riga
Il finding TP01 si replica su TUTTI e tre gli sleeve ancorati — su SKH01 più forte che su TP01 — e i numeri headline del book (HOLD 2.46) sono in parte best-of-anchors. Ciò che sopravvive de-luckato: XS01 resta un diversificatore ammissibile (ensemble di fase FULL 1.25 / HOLD 1.31 / DD 11%); SKH01 resta ADDS (uplift del blend positivo a tutte le 23 fasi, corr ~0.08) ma i suoi numeri headline e — cruciale — il gate DD<30% che l'ha selezionata non reggono alla fase mediana. Stima onesta de-luckata del book 5-sleeve: HOLD ~1.9–2.1, FULL ~2.0–2.2 (vs 2.46/2.24 dichiarati).
XS01 — fase del ciclo di ribilanciamento H=10 (10 fasi)
Sanity: replica di _xsec_returns con parametro phase → max|Δ|=0.0 bit-exact vs la canonica.
NB: la canonica sui dati di oggi fa FULL 1.367/HOLD 1.479/DD 10.8% (i dichiarati 1.50/1.71/11%
erano del 2026-06-19; deriva dati, confronto interno coerente).
| metrica | min | mediana | max | canonica (f0) | pctl f0 |
|---|---|---|---|---|---|
| Sh FULL | 0.41 | 1.21 | 1.64 | 1.37 | 85° |
| Sh HOLD | 0.15 | 1.17 | 1.71 | 1.48 | 65° |
| maxDD | 10.0% | 15.5% | 29.1% | 10.8% | 15° |
- Firma diversa da TP01: la fortuna NON è nell'hold-out (65° pctl, non estremo) ma nel DD (15° pctl: il "DD 11%" dichiarato è uno dei più bassi delle 10 fasi; la fase tipica fa ~15.5%, la peggiore 29%) e nel FULL (85°).
- Bootstrap: spike osservato +0.38 su hold-out; P(una fase qualsiasi ≥ +0.38) = 0.91–0.94 (block 10/20/40, B=4000) → la canonica è il massimo atteso di 10 stime correlate (corr mediana fra fasi 0.71).
- Ensemble 10 fasi (lens di reporting onesta): FULL 1.25 / HOLD 1.31 / DD 10.9% — la diversificazione di fase riporta il DD al livello canonico con Sharpe ≈ mediana.
- Book 5-sleeve: HOLD 2.44 (canonica) → 2.26 (fase mediana) → 1.75 (peggiore, marginalmente PEGGIO del book senza XS01 = 1.77) → 2.35 (ensemble). Eredità di fortuna ~+0.17 HOLD. FULL quasi insensibile (2.10–2.28).
- Gate di ammissione a fase mediana: FULL 1.08 / HOLD 1.10 / DD 20.7% — i numeri dichiarati non reggono (Sharpe −0.3/−0.6, DD raddoppia). La decisione però regge: nessuna fase negativa, 8/10 con FULL≥1.0, book migliore a ogni fase tranne la peggiore (dove è neutro) → slot da diversificatore @15% difendibile; cambia la NARRATIVA (banda/ensemble, non 1.50/1.71/11%).
- Caveat: storia ~2.5 anni (CI95 Sh HOLD canonica [−0.04, +2.72] — nessuna stima puntuale affidabile); dimensione ora-del-giorno non testabile (solo barre 1d HL: resta luck residua 10 fasi × 24 ore non certificabile); XS01 è STAT-MODE → impatto su reporting/gate, non sul book live Deribit.
SKH01-V2-DD — offset della griglia dual-TF 230m/690m (23 offset × 30m)
Sanity: offset 0 riproduce _skyhook_returns() bit-exact (max|Δ|=0.0 su 2666 giorni); maxDD
harness BTC 21.4%/ETH 27.4% = identici al diario di ammissione; riuso diretto di
skyhook_entries/htf_features/merge_htf_to_ltf con resample(origin='epoch', offset=...),
confini 690 ⊂ 230 verificati a ogni offset.
| metrica (book 50/50) | min | mediana | max | off0 (canonico) | pctl off0 |
|---|---|---|---|---|---|
| Sh FULL | 0.78 | 1.05 | 1.48 | 1.46 | 93° |
| Sh HOLD | 0.44 | 0.93 | 1.64 | 1.64 | 98° (max) |
| minFull (2 asset) | 0.35 | 0.67 | 1.01 | 0.99 | 93° |
| minHold | −0.10 | 0.39 | 1.25 | 1.25 | 98° (max) |
| blend 0.75·TP01+0.25·SKH, HOLD | 0.49 | 0.72 | 1.16 | 1.16 | 98° (max) |
- È uno spike, non un plateau: gli offset adiacenti ±30m crollano (book HOLD 1.64 → 0.88 a off30). Firma identica all'ancora TP01, ma più forte: il canonico è al 93–98° pctl di OGNI metrica; minHold +1.26 e blend "0.31→1.17" sono il massimo dei 23.
- Gate DD<30% — il criterio per cui V2-DD fu selezionata — FALLISCE in 15/23 offset (mediana DD: BTC 23.5%, ETH 29.2% — pass per 0.8pt; peggiori 35.9%/42.1%). Il margine ETH "già sottile" (27.4%) è in realtà sotto la mediana di fase: la proprietà DD<30% è in larga parte fortuna di fase.
- Ciò che regge de-luckato: uplift del blend positivo a TUTTE le 23 fasi (min +0.18, mediana +0.42, canonico +0.86) e corr→TP01 in [0.05, 0.11] a ogni fase → il verdetto ADDS/diversificatore sopravvive, ridimensionato. Alla fase peggiore invece non regge (minHold −0.10, DD fail).
- Bootstrap: spike blend +0.44; P(un offset qualsiasi ≥ +0.44) ≈ 0.70 (block 10/20/40); P(uplift≤0) = 0.03–0.04 → l'uplift è reale, l'ampiezza è best-of-23.
- Book 5-sleeve: HOLD 2.44 (off0 = max dei 23) → mediana 1.96 → ensemble 2.12; FULL 2.24 → mediana 2.01. Eredità di fortuna ~+0.5 HOLD — molto più dei ~+0.10 dell'ancora TP01.
- Rilevanza LIVE (SKH = 25% del book Deribit reale): il cron è orario, i confini 230m no →
ritardo uniforme {0..50} min (media 25). Re-sim del path reale (fill al close 5m del prossimo
run orario, exit SOFTWARE come da
book.py): book 50/50 FULL 1.46→1.19, HOLD 1.64→1.15, DD 18.1%→24.6%. La maggior parte del gap è l'assunzione fill-al-livello del backtest, non il ritardo orario in sé: nei crash le barre 230m gappano attraverso lo SL software (short sl2% modellato −2% → realizzato −11/−23%: ETH 2021-05-19, 2021-01-04, COVID 2020-03-13). Il disaster-SL on-book −30% copre solo la coda estrema della posizione netta. - Caveat: equity daily-step (lens Sharpe, come il canonico); l'ensemble di offset NON è eseguibile live (gira una sola griglia) → serve solo come stima de-luckata; sim hourly senza slippage/parziali.
Book 5-sleeve — stima de-luckata congiunta (approssimata)
Ogni audit varia UN solo sleeve (gli altri restano canonici), quindi gli effetti non si sommano esattamente; ordine di grandezza dell'eredità di fortuna sull'HOLD 2.46: TP01-ancora ~+0.10, XS01-fase ~+0.17, SKH01-offset ~+0.5. Stima onesta: HOLD ~1.9–2.1, FULL ~2.0–2.2, DD ~6% (invariato) — il book resta largamente positivo e diversificato a ogni combinazione testata, ma il 2.46 è un massimo di ~24×10×23 configurazioni di ancora, non la stima centrale.
Regole codificate in narrativa (CLAUDE.md aggiornato)
- I numeri headline di OGNI sleeve ancorato si citano con la banda d'ancora (o come ensemble di fase): vale già per TP01, ora anche per XS01 e SKH01 e per l'HOLD del book.
- Un gate di selezione (es. DD<30%) va verificato sulla banda di fase, non sull'ancora canonica — SKH01-V2-DD fu selezionata per una proprietà che tiene in 8/23 fasi.
- Il candidato gate
anchor_luck_band()in altlib sale di priorità: tre sleeve su tre ancorati mostrano la stessa firma, e il deflated-Sharpe non conta questo multiple-testing.
Follow-up (non eseguiti, da valutare)
- Rivalutare il peso 25% di SKH01 nel book live Deribit: l'aspettativa onesta della gamba SKH è ≈ fase-mediana + path orario (blend HOLD ~0.72, non 1.17) con gap-through-stop reale nei crash. L'uplift resta positivo a ogni fase → non c'è motivo di rimuoverla, ma il sizing fu deciso su numeri best-of-23.
- Cadenza cron a 230m (o trigger sui confini di barra) per chiudere il gap di path orario.
anchor_luck_band()inaltlib.pycome gate standard per candidati ancorati.- Audit ora-del-giorno di XS01 quando esisterà un feed HL intraday certificato.
Stato: XS01/SKH01/pesi/book live INVARIATI (nessun cambio operativo da questo audit — è un
audit di reporting e di gate, e ogni cambio pesi dovrà passare weights_tilt_null +
selection-on-holdout). Test suite 168 verdi. Script audit committati.