14522262e6
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>
131 lines
8.7 KiB
Markdown
131 lines
8.7 KiB
Markdown
# 2026-06-08 — Ricerca sostituto/miglioria a MR02/ETH (127 strategie + opzioni)
|
||
|
||
## Contesto
|
||
MR02/ETH è lo sleeve a DD più alto della famiglia fade ed è il maggior drag
|
||
dell'esecuzione reale (testnet: −19€ su 7 trade, 0 win, faded un downtrend −14%
|
||
in long poi shortato il rimbalzo — whipsaw classico). Obiettivo: trovare un
|
||
sostituto o una miglioria con ≥100 agenti su strategie differenti, metodologia
|
||
onesta (ingresso eseguibile, fee 0.10% RT, OOS, gate PORT06).
|
||
|
||
## Cosa è stato fatto
|
||
- **Workflow 1 — 109 strategie ETH distinte** (`mr02eth_search.workflow.js`):
|
||
gated-fade, mean-reversion alternative, exit, trend-following, volatilità,
|
||
cross-asset, ML/shape, microstruttura, statistico-robusto. Harness onesto
|
||
`explore_lab`. Poi **verifica avversariale** dei top-24 (audit look-ahead +
|
||
re-implementazione indipendente + robustezza). → 26 survivor, **6 confermati**.
|
||
- **Workflow 2 — 18 overlay di OPZIONI** (`mr02eth_options.workflow.js`) +
|
||
sintesi con audit crash reali. Harness nuovo `option_overlay_lab.py`: opzioni
|
||
prezzate Black-Scholes sulla **DVOL** reale di Deribit (storica/gratuita,
|
||
`data/regime/eth_dvol.parquet`), premio dedotto, ipotesi **conservative**
|
||
(skew_mult sui comprati, uscita anticipata solo a intrinseco).
|
||
- **Gate PORT06** (`mr02eth_port06_gate.py`): swap di MR02_ETH col candidato,
|
||
equity giornaliera su IDX 2021-2026, ri-misura FULL+OOS Sharpe/DD (cap
|
||
weighting). Sanity check: MR02 ricostruito col mio engine == canonico (Δ 0.00).
|
||
|
||
## Risultato (gate PORT06; baseline canonico FULL 6.43/3.96, OOS 8.58/1.36)
|
||
| variante (swap MR02/ETH) | FULL Sh | FULL DD | OOS Sh | OOS DD |
|
||
|---|---|---|---|---|
|
||
| EXIT-16 (config LIVE) | 6.73 | 3.67 | 8.80 | 1.23 |
|
||
| no-SL nudo | 6.76 | 3.68 | 8.87 | 1.23 |
|
||
| no-SL + put/call 10% OTM | 6.78 | 3.64 | 8.86 | 1.23 |
|
||
| varratio_gate (PROMOSSO vs canonico) | 6.41 | 3.73 | 8.53 | 1.36 |
|
||
| choppiness_donch | 6.37 | 3.35 | 8.47 | 1.32 |
|
||
| vrp_neg_dvol_low | 6.36 | 3.22 | 8.37 | 1.43 |
|
||
|
||
## MIGLIORIA TROVATA (gate vs LIVE EXIT-16, non vs canonico)
|
||
Riferimento onesto = config LIVE EXIT-16 (FULL 6.73/3.67 — OOS 8.80/1.23), non
|
||
l'intrabar-SL canonico che nessuno gira.
|
||
|
||
| sleeve ETH | ΔFULL Sh | ΔFULL DD | ΔOOS Sh | ΔOOS DD | esito |
|
||
|---|---|---|---|---|---|
|
||
| **no-SL + put/call 10% OTM** | **+0.05** | **−0.03** | **+0.06** | 0.00 | ✅ MIGLIORIA deployabile |
|
||
| no-SL nudo | +0.04 | +0.02 | +0.07 | 0.00 | ✅ migliora ma sl=0 NON deployabile |
|
||
| EXIT16 + put10 | −0.01 | +0.03 | 0.00 | 0.00 | = pari (assicurazione gratis) |
|
||
| varratio / vrp / chop / blend | negativi | | | | peggiorano vs EXIT-16 |
|
||
|
||
**La miglioria = MR02/ETH no-SL + floor a opzioni 10% OTM** (put sui long, call
|
||
sugli short). Batte il live EXIT-16 in modo PARETO su 3/4 metriche PORT06 (4ª
|
||
piatta). Meccanismo: **rimuovere lo stop** (intrabar/close-confirm su una fade
|
||
mean-reverting sono falsi negativi — overshoot che rientra) e dare la funzione
|
||
dello stop (cap della catastrofe) a un'**opzione comprata** = protezione a
|
||
rischio-definito SENZA il costo whipsaw/falso-stop. Standalone il salto è grande
|
||
(Sharpe 8.45→12.14, OOS DD 13%→7%); a portafoglio è modesto (+0.05/+0.06 Sharpe)
|
||
perché è 1 sleeve su 17, ma è un miglioramento MISURATO e verificato (soglia
|
||
gate +0.03, ottenuto +0.05/+0.06), non rumore.
|
||
|
||
## Conclusioni (oneste)
|
||
1. **Sostituti/blend: tutti peggiorano vs il live EXIT-16.** I candidati gated
|
||
(varratio/vrp/choppiness) e i blend within-sleeve battono solo lo strawman
|
||
canonico, non il live; le loro basse esposizioni diluiscono il motore di
|
||
ritorno (Sharpe −0.08/−0.44). Lo Sharpe ~20 nell'harness era artefatto di
|
||
`sqrt(N_trade)` (onesto ~4.3). → **non sostituire né blendare.**
|
||
2. **L'unica miglioria è la coppia no-SL + opzione.** Il no-SL recupera il drag
|
||
dello stop; l'opzione cappa la coda da **gap-through** che EXIT-16 NON protegge
|
||
(esce al close DOPO il buco → prende la perdita piena). Audit crash: FTX nov-22
|
||
−48%→−30%, LUNA-era 2022-09 −63%→−31%, 2018/19 −65%→−30%. Premio ~break-even
|
||
(paga 156% / incassa 149%). È ciò che rende deployabile il no-SL.
|
||
|
||
## Azione raccomandata
|
||
- **Deployare MR02/ETH come no-SL + floor a opzioni 10% OTM** (put long / call
|
||
short, per-trade o settimanale ammortizzato). Batte il live su 3/4 metriche +
|
||
cappa esplicitamente la coda. **Prima del capitale**: validare prezzi/liquidità/
|
||
skew per-strike REALI su Deribit testnet (qui pricing BS sintetico sulla DVOL =
|
||
ATM-IV; stress skew ×1.5 gonfia il premio FULL ma l'OOS regge). Stesso muro
|
||
non-backtestabile di ARGO/GEX sul per-strike, aggirato col proxy DVOL.
|
||
- Step intermedio a costo zero: **aggiungere subito il floor opzione all'EXIT-16
|
||
live** (= "pari" sui numeri, ma assicurazione gratis sul gap-through) mentre si
|
||
valida la transizione a no-SL.
|
||
|
||
## Addendum 2026-06-09 — validazione su PREZZI REALI + integrazione cerbero-bite
|
||
- Probe live Deribit mainnet (singolo snapshot): sembrava skew ×1.6 e liquidità
|
||
pessima sul 10% OTM a 1g → l'overlay per-trade pareva bocciato.
|
||
- **cerbero-bite** (container accanto) ha però **lo storico per-strike reale** in
|
||
`option_chain_snapshots` (SQLite, dal 2026-05-01, ~110k righe/asset, bid/ask/IV/
|
||
greche/OI, cadenza ~12min). Importato in `data/options/` via `options_fetcher.py`;
|
||
loader `options_chain.py` (skew_curve/premium_levels/quote causale).
|
||
- **Correzione dai dati reali (5.5 settimane):** skew put 10% OTM = **×1.1** (liquido,
|
||
spread ~7%) — il ×1.6 del probe era un artefatto del deep-OTM a 1g illiquido. Premio
|
||
reale 10% OTM ≈ **1.0%/mese**. → la miglioria no-SL+opzione **regge** sui prezzi veri.
|
||
- **MA vincolo strutturale reale:** gli strike **10% OTM a 24h NON esistono** (n=0 in 5.5
|
||
settimane; Deribit lista solo near-ATM sui tenor corti). L'overlay **per-trade a 24h è
|
||
infattibile**; l'unica struttura eseguibile è una **put settimanale/mensile standing**
|
||
(catastrofe-cap di sleeve), da gateare a parte coi premi reali.
|
||
- **Infrastruttura sbloccata:** il muro ARGO/GEX ("opzioni non-backtestabili") è caduto
|
||
per il periodo recente — d'ora in poi le tesi opzioni si validano su prezzi VERI.
|
||
Importato anche il pannello `market_snapshots` (spot/VRP/funding/**net-GEX dealer**/
|
||
gamma-flip/liquidation, dal 2026-03-26) → `data/options/`, loader `options_chain.load_market`.
|
||
|
||
## Addendum 2 — gate del COLLAR standing (catastrophe-cap auto-finanziato) — NO-GO
|
||
Premi reali → collar = put −13% (1.0%/m) finanziata da call +10% (1.05%/m) ≈ premio netto 0.
|
||
Gate PORT06 (`eth_collar_gate.py`, BS calibrato skew_put 1.12 / skew_call 1.0, sweep OTM/hedge_frac):
|
||
- Il collar **PAGA nei crash** (ETH −40% dic-21 → +6.1%, −30% feb-25 → +6.6%): protezione reale.
|
||
- MA **net-negativo a portafoglio**: taglia il FULL DD (−0.2/−0.3pp) ma **costa Sharpe** (FULL e OOS)
|
||
e **ALZA l'OOS DD** (+0.18/+0.28pp) — nell'OOS (no crash profondo, qualche rally) la call corta
|
||
perde e il premio erode. Peggiora il DD che doveva ridurre.
|
||
- **Verdetto: il tail-hedge a opzioni NON conviene a PORT06** (né per-trade né collar). Strutturale:
|
||
lo sleeve ETH pesa 6.5% → la **diversificazione è già la protezione di coda** (trade −65% =
|
||
−4% aggregato). La cap auto-finanziata era giusta sul *costo* (~break-even) ma la protezione non
|
||
vale il costo Sharpe/OOS-DD. Le opzioni si chiudono come **NO-GO empirico su prezzi reali**.
|
||
|
||
## Deploy della miglioria (2026-06-09): MR02/ETH stop-largo sl_atr 3.0
|
||
Nessun SOSTITUTO batte il live; la MIGLIORIA deployabile e' allargare lo stop EXIT-16.
|
||
Gate stop-width (EXIT-16 close-confirm, swap solo MR02_ETH):
|
||
| sl_atr | FULL Sh | FULL DD | OOS Sh | OOS DD | worst-trade |
|
||
|---|---|---|---|---|---|
|
||
| 2.0 (LIVE) | 6.73 | 3.67 | 8.80 | 1.23 | -48% |
|
||
| **3.0** | **6.77** | **3.30** | **8.82** | 1.23 | **-50%** |
|
||
| 4.0 | 6.78 | 3.49 | 8.82 | 1.23 | -62% |
|
||
| no-SL (sl=0) | 6.76 | 3.68 | 8.87 | 1.23 | -65% (vietato) |
|
||
`sl_atr=3.0` domina il live (FULL DD -0.37pp, Sh +0.04/+0.02) e cattura il beneficio del no-SL
|
||
(gli stop di meta'-discesa sono falsi negativi) MANTENENDO lo stop di catastrofe (worst -50%, non
|
||
-65%) -> regola "mai sl=0" rispettata; 4.0 inizia a perdere la coda. Plateau 2.5-4.0 (tutti > live
|
||
su Sharpe). Override SCOPED a MR02/ETH in `_defs.py` (`_fade_params`); gli altri 5 fade non
|
||
ri-gateati -> invariati. 93/93 test passano. Deploy: `./scripts/deploy.sh` (cambio live).
|
||
|
||
## Artefatti riusabili
|
||
- `scripts/analysis/option_overlay_lab.py` — overlay opzioni (pricing BS sintetico su DVOL).
|
||
- `scripts/analysis/options_fetcher.py` — import storico opzioni reale da cerbero-bite → data/options/.
|
||
- `scripts/analysis/options_chain.py` — loader + skew/premi reali + lookup causale (`OptionChain`).
|
||
- `scripts/analysis/mr02eth_port06_gate.py` — gate swap-sleeve PORT06.
|
||
- `scripts/analysis/mr02eth_search.workflow.js`, `mr02eth_options.workflow.js`.
|