Files
PythagorasGoal/docs/diary/2026-06-19-deribit-history.md
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

110 lines
6.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 2026-06-19 — Reset: storico certificato da Deribit mainnet, ripartenza pulita
Documento di fondazione per la nuova ricerca. Riassume perché la libreria "validata" è
crollata, come abbiamo ricostruito e **certificato** lo storico, e quali sono le regole
e l'universo dati su cui costruire da qui in poi. Lo storico delle 60+ voci di diario
precedenti e tutto il codice/strategie vecchio sono archiviati in `Old/` (non cancellati).
---
## 1. Cosa è successo — la contaminazione
L'intera libreria ("+201% / +1238% / +16492% validato OOS") era basata su uno **storico
contaminato**. Radice nel codice (`src/data/downloader.py`, ora in `Old/`): la fase
"Deribit" veniva pescata da Cerbero col **token TESTNET** (print fantasma) e la fase
storica da **Binance/USDT**. Gli edge nascevano da wick fantasma e da entry su estremi di
candela mai scambiati.
**Binance NON è la verità** (cross-check multi-venue): è denominato USDT, sistematicamente
~10 bps fuori dal consenso, e sotto depeg USDT (mag-2022) fino al **3.16%** lontano dal
prezzo USD reale. "Ripulire verso Binance" avrebbe iniettato errore. Il venue più vicino al
consenso (0-1 bps) è **Deribit mainnet** — che è anche **dove eseguiamo**: ancora migliore e
ancora rilevante coincidono.
## 2. La via scelta — rebuild da Deribit mainnet
`scripts/analysis/rebuild_history.py` (TENUTO): ricostruzione da **`ccxt.deribit` mainnet**
(pubblico, tokenless). Principi:
- **Strumento prezzo**: BTC/ETH → inverse (storia lunga 2018/2019, ~3 bps dal lineare USDC
che eseguiamo); alt → lineare USDC (unica opzione, solo dal 2022).
- **Base unica + resample**: si scarica un solo TF base (5m) e si derivano 15m/1h →
coerenza interna garantita (si valida una serie, non venti).
- **Copertura onesta**: major 2018/2019→oggi; alt SOLO dal 2022 (prima non eseguibili su
Deribit → backtestarli pre-2022 = validare un mercato che non potevamo tradare).
Eseguito su 8 asset → 24 feed (5m/15m/1h) il 2026-06-19.
## 3. Il verdetto — la libreria era artefatto
Ri-eseguiti tutti i backtest sul feed pulito con gli engine canonici (ora in `Old/`).
**FADE** (6 sleeve, 1h E 15m): tutte NEGATIVE, ogni anno. Es. MR01_BTC 41% (claim +201%),
MR01_ETH 25% (claim +1238%), MR02_ETH 83% a 15m. I numeri 15m coincidono col check mainnet
indipendente del 18-06 → due path-dati separati, stessa conclusione.
**Intera libreria** (`report_families.py`, ora in `Old/`): ogni portafoglio profondamente
negativo (MASTER Sharpe 2.3…−3.0, DD ~40%; il claim "Sharpe ~5, ogni anno positivo" è falso).
- ☠️ **FADE / PAIRS / XS01 / TSM01**: morti o inerti. Il flagship PR_ETHBTC e il blend 15m
deployato live sono negativi ogni anno.
- 🟡 **HONEST** (TR01 volatile, DIP01 marginale) e **SH01** (specie ETH, 5/6 anni +) mostrano
segnale residuo — ma NON bastano a rendere positivo alcun portafoglio, e vanno distinti da
fortuna di regime. Sono gli UNICI candidati a sopravvivere a una ri-validazione seria.
## 4. La certificazione dello storico
`scripts/analysis/certify_feed.py` (TENUTO) — suite read-only, 4 blocchi:
1. **Integrità**: 24/24 feed OK (zero violazioni OHLC, NaN, prezzi≤0, dup; **zero gap**).
2. **Coerenza resample**: 5m→15m/1h ricalcolato == salvato, **maxΔ 0.00 bps**.
3. **Spike**: i pochi sospetti sono crash REALI (COVID 2020, mag-2021, FTX 2022), non contaminazione.
4. **Cross-venue vs Coinbase USD** (venue indipendente, USD non USDT), storia intera per anno:
| Asset | median bps | barre >1% | Verdetto |
|---|---|---|---|
| **BTC** | 2.06.4 | 0.00.2% | 🟢 certificato pulito, 2018→oggi |
| **ETH** | 2.06.0 | 0.00.2% | 🟢 certificato pulito, 2019→oggi |
| SOL | 48 | 01.3% | 🟡 pulito da ~2024; 2022-23 rumoroso |
| ADA | 913 | 0.33.5% | 🟡 basis largo persistente |
| XRP | — | — | ⚠️ non certificabile (Coinbase delistò XRP 2021-23, causa SEC) |
| LTC / DOGE | 2436 (2022) | 121% | 🔴 divergenti + 50-82% barre flat |
| BNB | — | — | ⚠️ non listato su Coinbase + storia da 2024-10 |
I max bps su BTC/ETH (889/594) sono singole barre di crash; mediana annua 2-6 bps → **la
storia vecchia, dove viveva la contaminazione, è ora pulita contro un venue USD indipendente.**
**Illiquidità alt** (barre flat O=H=L=C): BTC/ETH ~0% a 1h; alt pesanti (LTC 5m 82%, run fino a
~3 giorni; DOGE/BNB ~78%). I 5m/15m alt "tradano" un book fermo — spiega a posteriori la
fragilità di pairs-su-LTC e XS01.
## 5. REGOLE per la nuova ricerca
- **Universo certificato = BTC / ETH**, ogni timeframe (5m/15m/1h). È l'unico dato attivo in
`data/raw` (gli alt sono archiviati in `Old/data/raw`). Il guardrail è fisico: `load_data`
su un alt solleva `FileNotFoundError`.
- **Fonte di verità = Deribit mainnet** (dove eseguiamo). Binance/USDT solo come check, mai
come ancora. Aggiornare il dato con `rebuild_history.py`, MAI col vecchio `download_all`
(token testnet).
- **Metodologia** (CLAUDE.md, invariata): ingresso eseguibile (direzione/prezzo decisi entro
`close[i]`, mai entry su estremi di candela), backtest netto fee 0.10% RT, OOS held-out +
griglia + sweep fee. **In più, lezione di oggi**: il gate PORT06 full+OOS NON basta — un
edge va incrociato con la **liquidità reale** del book e con la **plausibilità del prezzo**
(cross-venue), o si finisce per "validare" un book fermo / wick fantasma.
## 6. Stato della ripartenza (cleanup eseguito)
- **Archiviato in `Old/`** (git preserva tutto): tutte le strategie, lo stack live
(`src/live`, `src/portfolio`, runner/executor, yml, docker), i ~100 script di ricerca/gate,
waste/games/portfolios, i dati non certificati + cache, le 60+ voci di diario, le spec vecchie.
- **Skeleton tenuto**: `src/strategies/{base,indicators}` (Strategy ABC), `src/fractal`,
`src/backtest/engine`, `src/data/downloader` (`load_data`); i 4 tool dati certificati
(`rebuild_history`, `certify_feed`, `audit_feed`, `multi_source_check`); dati BTC/ETH;
config base; i due summary sui frattali (tesi di ricerca).
- **Esecuzione DISABILITATA**, conto mainnet flat. La riorganizzazione è in staging (non
committata).
### Code minori rimasti
- 3 dir di stato live root-owned (`data/portfolio_paper{,_stats}`, `data/portfolios`) non
archiviabili senza `sudo` → spostare a mano in `Old/data/` quando comodo.
- `clean_feed.py` (arbitrava verso Binance) è già archiviato — approccio superato.
- XRP ri-certificabile solo su venue USD con storia profonda (marginale, non core).
- `CLAUDE.md` è in gran parte stale (descrive strategie morte) → va riscritto per il reset.