a74cc69583
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>
133 lines
8.7 KiB
Markdown
133 lines
8.7 KiB
Markdown
# 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.
|