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>
This commit is contained in:
@@ -0,0 +1,68 @@
|
||||
# 2026-05-31 — Studio sugli EXIT delle fade: scalping, TP dinamico, TP-ATR
|
||||
|
||||
> Innescato da una domanda operativa ("un TP è stato raggiunto, non si poteva
|
||||
> scalpare / fare un TP dinamico?"). Studio fee-aware su MR02 (Donchian fade,
|
||||
> segnali invariati `n=20 sl_atr=2.0 max_bars=24`, fee 0.10% RT, leva 3x). Tre
|
||||
> alternative di uscita misurate contro il baseline attuale (**TP = centro del
|
||||
> canale**). Verdetto: **il design attuale è già ottimale; nessuna alternativa lo batte.**
|
||||
|
||||
## 1. "Scalping" = timeframe più veloce (15m vs 1h)
|
||||
A fee 0.10% il 15m rende di più in lordo (~4× più trade), MA è molto più **fragile**:
|
||||
|
||||
| | trade | PnL @0% | @0.10% | @0.20% | DD @0.10% |
|
||||
|---|--:|--:|--:|--:|--:|
|
||||
| BTC 1h | 2041 | +22.768 | +16.645 | +10.522 | 29% |
|
||||
| BTC 15m | 8251 | +65.286 | +40.533 | +15.780 | 29% |
|
||||
| ETH 15m | 9388 | +120.103 | +91.939 | +63.775 | **62%** |
|
||||
|
||||
Da 0% a 0.20% il 15m perde **~76%** del profitto (vs 54% del 1h) e il DD esplode
|
||||
(ETH 15m → 93% a 0.20%). 4× più trade = 4× più fee + slippage (non modellato, ma
|
||||
peggiore su book sottili). **L'1h è scelto per il margine di sicurezza, non per il PnL
|
||||
lordo.** Lo scalping vero (<0.3% target) è in pieno territorio "morte da fee".
|
||||
|
||||
## 2. TP dinamico / trailing ("lascia correre il vincitore")
|
||||
Stessi segnali, exit per trailing a k·ATR dal massimo favorevole invece del TP fisso:
|
||||
|
||||
| policy | BTC win% | ETH win% | equity |
|
||||
|--------|---------:|---------:|--------|
|
||||
| FIXED (centro, attuale) | **48%** | **49%** | 🟢 di gran lunga il migliore |
|
||||
| TRAIL (lascia correre) | 36% | 36% | 🔴 azzerato |
|
||||
| MID+TRAIL | 47% | 47% | 🔴 peggio |
|
||||
|
||||
Il win-rate crolla 48%→36%: i trade che avrebbero incassato il TP fanno andata-e-ritorno
|
||||
e stoppano fuori. **Concettuale:** l'edge della fade è la reversione *fino* alla media;
|
||||
una volta toccata, l'edge è esaurito. Lasciar correre *oltre* = scommettere sulla
|
||||
continuazione, che sui perp crypto NON ha edge (rientra). È la stessa logica per cui
|
||||
SMA/ORB/WR (continuazione) hanno fallito: **let-it-run = trend = il lato perdente.**
|
||||
|
||||
## 3. TP scalato all'ATR (TP = entry + dir·m·ATR, SL fisso 2 ATR → R:R = m/2)
|
||||
| Config | win% | avg %/trade | Sharpe | sumRet% |
|
||||
|--------|-----:|-----------:|-------:|--------:|
|
||||
| **BTC MID (attuale)** | 48% | **0.816** | **3.8** | **1664** |
|
||||
| BTC ATR m=0.5 (RR0.25) | **77%** | −0.081 | −1.0 | −217 |
|
||||
| BTC ATR m=1.0 | 67% | 0.192 | 1.6 | 465 |
|
||||
| BTC ATR m=2.0 | 53% | 0.563 | 3.0 | 1199 |
|
||||
| BTC ATR m=3.0 | 46% | 0.679 | 3.0 | 1331 |
|
||||
| **ETH MID (attuale)** | 49% | **1.738** | **7.5** | **4169** |
|
||||
| ETH ATR m=0.5 | 77% | 0.041 | 0.5 | 134 |
|
||||
| ETH ATR m=3.0 | 46% | 1.082 | 4.7 | 2515 |
|
||||
|
||||
OOS (ultimo 30%) identico: **MID** batte ogni `m` (BTC MID avg 1.14/Sh 3.2; ETH MID avg
|
||||
4.43/Sh 10.9). Due lezioni:
|
||||
- **TP stretto (m=0.5) = trappola dello scalping quantificata:** win-rate **77%** ma edge
|
||||
**zero/negativo** (BTC −0.08%/trade). I rari stop a 2 ATR spazzano via le micro-vincite,
|
||||
la fee mangia il resto. **Win-rate alto ≠ edge.**
|
||||
- **Nessun multiplo ATR fisso batte il centro del canale**, su avg/trade E Sharpe, FULL e OOS,
|
||||
entrambi gli asset.
|
||||
|
||||
## Verdetto unificato
|
||||
Il **TP al centro del canale è ottimale** perché è un target *adattivo alla struttura*: un
|
||||
multiplo fisso di ATR misura solo *quanta* vol c'è, ma ignora *dove* sta la media; il centro
|
||||
adatta al punto reale di reversione **ed è già scalato alla volatilità** (il canale si allarga
|
||||
in regime volatile). Per una mean-reversion il punto giusto dove chiudere è **la media — niente
|
||||
prima, niente dopo.** Tre alternative escluse coi numeri (15m, trailing, TP-ATR) → la scelta
|
||||
di design corrente è blindata.
|
||||
|
||||
> Nota metodologica ricorrente: diffidare del **win-rate alto**. Il segnale vero è
|
||||
> rendimento-medio-per-trade × Sharpe; un TP stretto regala win-rate e nasconde l'assenza
|
||||
> di edge. (Stesso tranello dei guru: backtest cherry-picked ad alta % di vincite.)
|
||||
Reference in New Issue
Block a user