# 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) 1. **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. 2. **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. 3. 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()` in `altlib.py` come 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.