Files
PythagorasGoal/Old/docs/diary/2026-06-18-price-ladder-search.md
T
Adriano Dal Pastro 14522262e6 chore(reset): v2.0.0 — storico certificato Deribit mainnet, ripartenza pulita
Reset del progetto su fondamenta verificate dopo la scoperta che l'intera
libreria "validata OOS" era artefatto di feed contaminato (print fantasma del
feed Cerbero TESTNET + storico Binance/USDT).

- Storico ricostruito da Deribit MAINNET (ccxt pubblico, tokenless) e
  CERTIFICATO (certify_feed.py): BTC/ETH puliti su TUTTA la storia
  (mediana 2-6 bps vs Coinbase USD), integrita' OHLC + coerenza resample
  (maxΔ 0.00) + cross-venue OK. Alt esclusi (illiquidi/divergenti: LTC/DOGE
  50-82% barre flat; XRP/BNB non certificabili).
- Verdetto sul feed pulito: FADE / PAIRS / XS01 / TSM01 morti (ogni
  portafoglio Sharpe -2.3..-3.0, DD ~40%); solo SH01 e frammenti HONEST
  con segnale residuo, da ri-validare in isolamento.
- Cleanup "restart pulito": strategie, stack live (src/live, src/portfolio,
  runner/executor, yml, docker), ~100 script ricerca/gate, waste/games/
  portfolios, dati non certificati + cache e 60+ diari -> archiviati in Old/
  (preservati, non cancellati). Diario consolidato in un unico documento.
- Skeleton ricerca tenuto: Strategy ABC + indicatori + src/fractal +
  src/backtest/engine + load_data; tool dati certificati (rebuild_history,
  certify_feed, audit_feed, multi_source_check).
- Universo dati ATTIVO: solo BTC/ETH (5m/15m/1h); guardrail fisico
  (load_data su alt -> FileNotFoundError). Esecuzione DISABILITATA, conto flat.

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
2026-06-19 15:20:59 +00:00

18 KiB
Raw Blame History

2026-06-18 — Price Ladder (griglia) vs gate PORT06

Branch: price_ladder_research · Harness: scripts/analysis/ladder_search.py (engine grid_mtm: mark-to-market onesto, SL gap-aware, flat-skip, fee 0.10% RT taker). Baseline PORT06: FULL Sharpe 8.13 / DD 2.47% — OOS Sharpe 10.86 / DD 2.09%. Metodo: caccia multi-agente su asset × TF (15m/30m/1h) × regime-gate (none / range trend_max 1.5/2.0/2.5), poi verify avversariale sui finalisti (plateau, fee 2x, corr, FULL DD di portafoglio). Goal di progetto: trovare un Price Ladder che diversifichi (PASSI il gate) senza accendere la coda di trend.


1. Cosa era già noto

Il gioco-griglia precedente aveva trovato una griglia ETH fortissima standalone (Sharpe ~5.61) ma BOCCIATA al gate PORT06: corr ~0.40 con le fade ETH già deployate → ridondante, non un diversificatore. La lezione: lo standalone Sharpe non basta, conta quanto il ladder aggiunge ortogonalmente al portafoglio. Questa ricerca cerca proprio un ladder che PASSI il gate = che abbia corr bassa con gli sleeve esistenti.


2. Risultato NUOVO — i ladder PASSANO il gate

Sì. Su tutti gli asset liquidi (BTC e ETH) e su quasi tutte le combinazioni TF×regime, i ladder migliorano l'OOS Sharpe di portafoglio (10.86 → ~11.011.35) con corr bassa:

  • BTC (15m/30m/1h, range o none): corr 0.150.27, molto più ortogonale della griglia ETH bocciata (0.40). OOS di portafoglio 11.111.35 (il guadagno OOS più grosso).
  • ETH (15m/30m/1h): corr 0.210.57 (15m la peggiore, fino a 0.57; a 1h scende a 0.220.39). OOS di portafoglio ~10.911.1.
  • SOL/LTC: SOL passa solo 2 celle, half-only, edge standalone quasi nullo (full_sh ~0.2); LTC è negativo ovunque (full_sh 0.4…−0.8, bocciato) → solo BTC/ETH liquidi danno un ladder vivo, come atteso.

Il gate misura corr + OOS, e su questi due assi i ladder BTC vincono nettamente.

Migliori candidati (dai verify avversariali)

Asset/TF/regime/struttura OOS base→new FULL DD standalone FULL DD portafoglio (full / half) corr fee2x OOS robust?
ETH 1h range2 rd0.16 ru0.04 L4 10.86→11.00 11.79% 2.70 / 2.52 0.305 4.89
ETH 1h range2 rd0.16 ru0.06 L6 10.86→11.01 12.09% 2.74 / 2.54 0.328 (al filo) 5.05
ETH 1h range2 rd0.16 ru0.06 L4 10.86→10.98 12.64% 2.68 / 2.51 0.249 4.44
ETH 30m range2 rd0.16 ru0.04 L3 10.86→10.93 12.56% 2.48 / 2.41 0.223 4.21
ETH 1h none rd0.20 ru0.06 L6 10.86→11.03 17.89% 2.59 / 2.46 0.271 5.43
ETH 30m none rd0.16 ru0.06 L4 10.86→10.92 18.68% 2.37 / 2.35 0.319 5.42
ETH 1h none rd0.16 ru0.06 L4 10.86→10.96 23.13% 2.40 / 2.37 0.224 4.59
BTC 1h none rd0.08 ru0.06 L3 10.86→11.34 53.69% 3.11 / 2.48 0.216 5.78 ⚠ half-only
BTC 30m range2.5 rd0.08 ru0.06 L3 10.86→11.22 55.33% 3.27 / 2.50 0.265 5.19 ⚠ half-only
BTC 30m none rd0.08 ru0.06 L3 10.86→11.32 55.33% 3.27 / 2.44 0.220 5.37 ⚠ half-only (tail)
BTC 1h range1.5 rd0.20 ru0.06 L6 10.86→11.13 54.43% 3.19 / 2.33 0.161 5.46 ⚠ half-only (tail)

rd = spacing down, ru = spacing up, L = livelli. Tutti i finalisti hanno plateau robusto (47 vicini di struttura restano PROMOSSO) e fee2x ~= OOS standalone.


3. IL NODO — la FULL DD (che il gate IGNORA)

Il gate verdict NON guarda la FULL DD. Misura solo corr + OOS Sharpe/DD. Una griglia long-only ha una coda di trend 2021/22 (viene comprata fino in fondo mentre il prezzo crolla in un trend persistente) → la FULL DD standalone è il vero rischio nascosto. Il filtro onesto è la FULL DD di PORTAFOGLIO (full_full_dd / half_full_dd), con soglia di tail-risk ~+0.8pp sopra il baseline 2.47% (cioè restare sotto ~3.3%).

Due famiglie nette emergono:

  • BTC — FULL DD standalone ~5467% (la coda long-only è devastante, come temuto). Il regime-gate range taglia gli ingressi nei trend ma non immunizza dalle posizioni già aperte → a FULL size la FULL DD di portafoglio sale a 3.16.6% (+0.6/+4.0pp, oltre la soglia tail in quasi tutte le celle). A HALF size invece rientra a 2.332.54% (~baseline) preservando l'OOS ~11.011.3. → BTC deployabile SOLO a half-size, e il guadagno OOS più grosso (11.3+) viene proprio da queste celle a coda alta.

  • ETH — FULL DD standalone molto più bassa del previsto: 1233% (1h range scende a ~12%), NON il ~60% temuto. Lo SL-buffer + flat-skip + il regime-gate range tengono la griglia fuori dai trend estesi. Conseguenza: la FULL DD di portafoglio resta 2.372.74% (+0.0/+0.27pp, sotto soglia anche a FULL size) — in diversi casi scende sotto il baseline (es. ETH 30m none L4 → 2.37%). → ETH è la famiglia tail-safe. Il prezzo è una corr più alta (0.220.33 sui finalisti 1h/30m, fino a 0.57 sul 15m da scartare).

Lettura chiave: il regime-gate abbassa la FULL DD ma su BTC non a sufficienza a full size (la coda 54% è troppo grande); è l'half-size a fare il lavoro. Su ETH la coda è già piccola e il portafoglio l'assorbe. Quindi il discriminante reale è asset (ETH vs BTC) + size, non solo il regime-gate.


4. Vantaggio Deribit — fill MAKER

Un Price Ladder è una griglia di ordini LIMIT ai livelli → su Deribit i fill sono MAKER (~0% fee), non taker. L'harness assume 0.10% RT taker ovunque → è CONSERVATIVA: la stessa griglia live pagherebbe meno fee e potrebbe rendere PIÙ del backtest. Lo confermano i verify: il fee2x (raddoppio fee) lascia l'OOS Sharpe quasi intatto (~98% trattenuto su quasi tutti i finalisti) → nessun fee-cliff, e con i fill maker reali c'è upside, non downside, sul lato costi. (Il rischio resta la coda di trend e lo slippage/fill in esecuzione reale, non le fee.)


5. Verdetto operativo

C'è un Price Ladder deployabile. Il candidato più pulito su tutti gli assi (PROMOSSO + FULL DD di portafoglio controllata a full size + plateau robusto + corr genuina):

ETH 1h, regime=range trend_max 2.0, rd=0.16 / ru=0.04 / 4 livelli, sl_buf 0.12 / tp_buf 0.05, max_bars 720. OOS 10.86→11.00, FULL DD portafoglio 2.70% a full / 2.52% a half (standalone 11.79%), corr 0.305, fee2x OOS 4.89, plateau 4 vicini PROMOSSO. Deploy raccomandato a HALF size (FULL DD +0.05pp, marginale; il caveat slippage live giustifica la prudenza).

Alternative ETH equivalenti (stessa banda di sicurezza, scegliere per corr/coda): ETH 1h range2 rd0.16 ru0.06 L4 (corr 0.249, la più bassa) e ETH 30m range2 rd0.16 ru0.04 L3 (FULL DD portafoglio 2.48, ~baseline). Tutte ETH 1h/30m range-gated rd≥0.16 → NON scendere sotto rd 0.16 (rd 0.12 fa risalire la corr verso 0.38 = ricomincia a somigliare alle fade ETH; il 15m ha corr 0.430.57 = troppo ridondante, scartare).

I BTC NON a full size. Danno il guadagno OOS più grande (fino a 11.34) e la corr più bassa (0.160.22 = la diversificazione migliore), MA la FULL DD standalone ~54% li rende tail-risky a full size (FULL DD portafoglio 3.16.6%, oltre soglia). Deployabili SOLO a half-size (FULL DD portafoglio 2.332.50), dove restano un diversificatore eccellente. Il migliore BTC half-size è BTC 1h range1.5 rd0.20 ru0.06 L6 (corr 0.161, FULL DD portafoglio half 2.33).

BLOCCO prima di qualsiasi deploy: il gate PORT06 (corr + OOS) è necessario ma non sufficiente — non controlla la FULL DD, e l'OOS held-out è un regime calmo (202425). La coda di trend 2021/22 è reale e standalone è enorme su BTC. Nessun deploy senza un gate stressato sul 2022 (verificare la FULL DD di portafoglio attraverso il trend duro, non solo l'OOS calmo) e una conferma su ledger reale shadow per slippage/fill maker. Il verdetto del gate va sempre incrociato con la FULL DD di portafoglio (filtro vero) + fattibilità feed live + regime recente — la stessa lezione del timing-sweep pairs/honest (2026-06-14).

Sintesi: ETH 1h/30m range-gated rd≥0.16 a half-size è il deploy-candidate sano e tail-safe; BTC è il diversificatore migliore ma solo a half-size per la coda di trend. Prossimo passo obbligatorio: stress-test 2022 + shadow ledger reale (i fill maker possono solo migliorare il risultato sul lato fee).


6. ⚠️ RETTIFICA CRITICA — il verdetto §5 è ROVESCIATO (critico + verifica dati)

Il critico di completezza + una verifica diretta dei dati ribaltano la raccomandazione di deploy della §5. Messo a verbale: la §5 è SUPERATA da quanto segue.

(1) I risultati BTC poggiano su DATI CORROTTI (spike-print), verificato. La "coda di trend BTC 54%" su cui ruota la §3 NON è un crollo di mercato: è feed sporco. Misurato su btc_1h: 37 barre con range intrabar >20%, concentrate a feb-2024 (es. 2024-02-13: low=38.580 con close49.968 = wick fasullo 23% che rimbalza nella stessa barra), con min 22.706 / max 104.688 in un trimestre dove BTC stava ~4757k. È lo stesso spike-print testnet documentato ovunque in CLAUDE.md (TP_PHANTOM / feed congelato). L'engine SL-gap-aware filla su questi wick fantasma e la griglia "compra" i dip fasulli → la coda BTC ~54% e parte dell'edge OOS sono artefatto, non mercato. Conseguenza: i candidati BTC NON sono affidabili, e lo "stress 2022" proposto NON toccherebbe la coda vera (che è a feb-2024, da dati sporchi). Serve close_only + pulizia feed.

(2) Il guadagno OOS è RUMORE al peso deployabile. +0.14 OOS Sharpe su base 10.86, con il ladder che pesa ~5.3% full / ~2.7% half in un portafoglio già a Sharpe ~11, su 592 giorni di un solo regime calmo (2024-10→2026-05, niente 2022). Nessun test di significatività (block-bootstrap). A half-size il contributo è quasi inerte (a volte l'OOS DD migliora): è dentro l'errore di campionamento, non un edge dimostrato.

(3) La diversificazione ETH è più sottile di quanto venduto. Il finalista ETH "raccomandato" è corr 0.305 (non 0.150.20: quella è BTC half-only non deployabile), già vicino allo 0.40 che fece bocciare la griglia ETH originale. Peggio: il regime_mask usa lo stesso filtro trend-distance (|closeEMA200|/ATR) delle fade ETH già live → la "diversificazione" è in parte illusoria (gate e sleeve condividono il filtro). La corr misurata è daily in regime calmo, NON co-tail: una griglia long-only e una fade reversion possono co-crollare in un trend (entrambe "comprano il calo") — la metrica che conterebbe (co-movimento nella coda) non è calcolata.

(4) La FULL DD standalone è mascherata dal compounding. Il finalista ETH compone a ~31x (+3.1M%) in 5.4 anni: una "FULL DD 11.79%" accanto a un ritorno di milioni-% è artefatto di notional reinvestito, e il daily-resample nasconde l'inventory-risk intrabar che il docstring di grid_game_gate.py (righe 57) avverte esplicitamente di non vedere.

(5) Stress disponibile NON usato. ladder_search/grid_mtm hanno close_only=True (filla solo sul close, neutralizza gli spike-print): NON è stato girato sui finalisti — proprio il test che smonterebbe la coda BTC fasulla.

Verdetto rettificato

NON c'è un Price Ladder deployabile dimostrato. La ricerca ha prodotto (a) una harness onesta e validata (ladder_search.py + regime-gate, riproduce esatto il gate noto), (b) un risultato negativo/guardingo robusto: ogni candidato o è ridondante (ETH, corr→0.40), o poggia su dati sporchi (BTC spike-print), o è rumore al peso deployabile. Il multi-agente + critico ha evitato un deploy ingiustificato — esattamente la lezione anti-squeeze del progetto.

Prima di riconsiderare QUALSIASI ladder servono, in ordine: (1) pulire il feed BTC dagli spike-print + girare close_only sui finalisti; (2) test di significatività del delta OOS (block-bootstrap) al peso reale; (3) co-tail / corr nei crash (2022), non corr daily calma; (4) isolare e spiegare l'evento feb-2024. Config live invariata.


7. RE-GATE su DATI PULITI (post clean_feed.py) — quadro onesto finale

Dopo clean_feed.py (254 spike-print riparati con Binance) ho ri-gateato i top candidati con le verifiche che il critico chiedeva (ladder_regate_clean.py): gate PORT06 + stress close_only + DD per anno sulla storia completa.

Candidato DD (gate, 2021+) OOS Sh corr fee2x close_only OOS gate½ DD 2018 (tail vero)
ETH 1h rd0.16 ru0.04 L4 range2 12.4% 4.70 0.29 4.62 0.24 PROMOSSO 52.4%
ETH 1h rd0.16 ru0.06 L4 range2 12.6% 4.25 0.23 4.17 0.20 PROMOSSO 49.9%
BTC 1h rd0.08 ru0.06 L3 none 10.8% 5.90 0.24 5.78 0.60 PROMOSSO 50.3%
BTC 1h rd0.20 ru0.06 L6 range1.5 14.8% 5.58 0.23 5.46 0.89 PROMOSSO 27.7%
BTC 30m rd0.08 ru0.06 L3 none 14.8% 5.47 0.25 5.37 1.07 PROMOSSO 36.6%

Cosa cambia coi dati puliti:

  1. L'obiezione "coda artefatto" CADE. Il 54% del BTC era spike-print 2024: ora la DD del gate (2021+) è ~11-15% e tutti i candidati restano PROMOSSO a half-size, corr 0.22-0.29, reggono fee2x. Sono candidati veri, non artefatti.
  2. 🔴 Emerge il tail VERO: il 2018 (44/52% standalone), che il gate NON VEDE perché l'IDX del progetto parte dal 2021-01-01. Una griglia long-only sarebbe stata sventrata nel bear 2018 (BTC 84% sull'anno). È il nuovo rischio portante — e una lacuna metodologica generale: tutte le metriche "FULL" del progetto escludono il 2018. Mitigante reale: il regime-gate stretto (BTC rd0.20 L6 range1.5) dimezza il tail 2018 a 27.7% (vs 50% senza gate) → il gate-di-regime fa il suo lavoro contro i bear sostenuti.
  3. 🟡 L'edge dipende dai fill INTRABAR. close_only (fill solo sul close) fa crollare l'OOS (4.7→0.24 ETH, 5.9→0.6 BTC). Per ordini LIMIT i fill intrabar sono legittimi (close_only è troppo severo come stress), ma il gap segnala forte sensibilità all'ipotesi di fill → il ledger shadow reale è indispensabile prima di fidarsi.
  4. 🟡 Restano: corr 0.22-0.29 (moderata), guadagno OOS ai limiti del rumore al peso deployabile (~2.7% half), OOS singolo regime calmo.

Verdetto finale (clean data): la pulizia ha rimosso l'obiezione FALSA (coda artefatto) e promosso i candidati a genuini, ma ha anche scoperto il tail REALE (2018, gate-cieco) e confermato due cautele (fill intrabar, OOS rumoroso). Il candidato più sensato è ora BTC 1h rd0.20 ru0.06 L6 regime=range trend_max1.5: PROMOSSO, corr 0.23, e la miglior coda 2018 (27.7%) grazie al regime-gate. Prima di QUALSIASI deploy: (1) backtest che INCLUDA il 2018 nel gate (non solo IDX 2021+), (2) ledger shadow reale per i fill intrabar/maker, (3) half-size. La pulizia del feed resta il guadagno trasversale più grande (irrobustisce ogni backtest del progetto).


8. I 3 PASSI PRE-DEPLOY + STUDIO SL/TP (ladder_sltp_study.py)

[1] Valutazione 2018-INCLUSIVE (standalone, tutta la storia; il gate IDX2021+ è cieco al 2018):

Candidato (sl0.12/tp0.05) full_sh full_dd oos_sh DD 2018 DD 2021
BTC 1h L6 range1.5 3.18 27.7% 4.95 27.7% 14.8%
BTC 1h L3 none 2.93 60.2% 5.51 50.3% 10.8%

Il regime-gate già dimezza il tail vero (2018: 50%→−27.7%). Senza gate la griglia long-only è insostenibile (60%).

Studio SL/TP (sweep sl_buf × tp_buf sul candidato regime-gated, full 2018+):

  • Sweet spot: sl_buf=0.10, tp_buf=0.03 → DD 2018 23.5% (da 27.7%), oos_sh 5.06, full_sh 2.92. Migliora il tail SENZA intaccare l'edge.
  • Lezione (conferma il prior del progetto): un SL troppo stretto PEGGIORA (sl 0.06 → 33/35%): stoppa e rideploya più in basso nel coltello che cade = la trappola del falso-negativo mean-reversion. Un SL troppo largo (0.20) idem (29/31%, oos più basso). Il bene sta in mezzo (0.10).
  • Il SL da solo (senza regime-gate) è ERRATICO (tabella L3 none non-monotona: 20% → 52% → 43% al variare di pochi punti): è il regime-gate il controllo primario della coda; il SL moderato fine-tuna. Catastrophe-control = "non deployare nel bear" (regime) + "cappa l'episodio" (SL 0.10), NON uno stop stretto.

[2] Fill maker vs taker (Deribit: i livelli sono LIMIT → maker):

fee oos_sh DD 2018 gate½
taker 0.10% RT (harness) 5.06 23.5% PROMOSSO (OOS 10.86→11.0, corr 0.195)
maker 0% (Deribit reale) 5.18 22.7% PROMOSSO (OOS→11.0, corr 0.194)

Il maker è leggermente MIGLIORE → la harness taker è conservativa, nessun fee-cliff. (La parte live = shadow ledger reale resta il passo operativo finale.)

[3] Half-size: il gate "half" è già a metà size e PROMOSSO; la coda 2018 standalone 23.5% si dimezza sul book (~12% in un 2018-repeat a half-size) = reale ma gestibile.

CONFIG FINALE raccomandata (con SL/TP aggiunti)

BTC 1h · regime=range trend_max 1.5 · rd 0.20 / ru 0.06 / 6 livelli · sl_buf 0.10 / tp_buf 0.03 · HALF-size.

  • Tail 2018-inclusive: 23.5% standalone (~12% sul book a half) — reale ma controllato dal regime-gate + SL moderato.
  • Gate PORT06: PROMOSSO (OOS 10.86→11.0, corr 0.195); maker Deribit lo migliora; nessun fee-cliff.
  • Unico passo residuo: shadow ledger reale (fill intrabar/maker su Deribit) — operativo, non backtestabile.

Caveat onesti residui: l'OOS gain al peso deployabile è modesto (10.86→11.0); il tail 2018 non è zero (12% a half); l'edge dipende dai fill intrabar (per i LIMIT è legittimo, ma lo shadow lo deve confermare).