Dal branch parallelo strategy-research-calendar (continuazione della linea TP01). Porta su main il record di ricerca + la fondazione del lead opzioni (NIENTE blob dati, niente codice in conflitto): - Tracks F/G/H/I (seasonality/calendar, prior-levels, volume-vol, momentum-reversal): tutti NEGATIVI/spurii -> confermano il soffitto Sharpe ~1.3 su BTC/ETH direzionale (calendar = buy&hold travestito; mean-reversion morta anche a fee 0). Diari + script. - trackD_lookahead_audit.py: audit anti-look-ahead (stesso esito del nostro fix >=12h). - eval-crypto-backtest-options.md: valutazione strategia esterna crypto_backtest. Cross-valida TP01 (il loro sleeve spot 12h ~ TP01: due ricerche indipendenti, stessa conclusione). Identifica il LEAD: sleeve income OPZIONI (vendita put settimanali delta-0.28, VRP IV>RV), scorrelato ~0.22 al trend -> via per superare il soffitto ~1.3. - options_real_quote_check.py + cerbero-bite-mainnet-verified.md: VERIFICATO su QUOTE REALI Deribit mainnet (cerbero-bite/MCP = mainnet, bit-identico a ccxt.deribit). Premio reale (BID, con skew) = 1.29x il modellato -> il backtest SOTTOSTIMA il premio; il rischio vero e' la CODA (short-vol) + liquidita' di roll in stress, non la magnitudine. NB: lo sleeve opzioni e' un LEAD, NON deployato: prezzato da modello (BS su DVOL) + 1 snapshot in regime calmo. Serve validazione real-chain multi-regime + stress crash + paper su testnet prima di aggiungerlo al portafoglio. Portafoglio attivo invariato: TP01 70% + XS01 30%. Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
4.5 KiB
Track H — Volume, Range & Volatility-Regime signals (BTC/ETH, certified, >=12h)
Date: 2026-06-19
Script: scripts/research/trackH_volume_vol.py (runnable, self-contained)
Question: does any volume / range / volatility-regime signal ADD to the deployed winner
TP01 (vol-targeted trend portfolio, 12h, Sharpe ~1.32) — i.e. net-positive OOS on BOTH BTC &
ETH AND uncorrelated (|corr|<~0.3) — OR work as a regime filter that lifts TP01's Sharpe / cuts
its DD?
Method (honest)
- Same causal per-bar engine as
TrendPortfolio.net_returns: build a continuous TARGET decided with data<= close[i], HOLD it during bari+1(pos_held[t]=target[t-1]), gross = pos×ret, fee on|Δpos|. Identical in spirit toharness.backtest_signals(decide≤close[i], fill at close[i]); two discrete signals cross-checked throughbacktest_signalsdirectly. - All features (volume z-score, OBV, ranges, realized vol) use prior/rolling windows shifted so
bar
isees only<= i. 12h/1d resampled from certified 1h viaresample_tf(label='left'), consumed index-based with the +1 hold → no open-label leak. - Fee 0.10% RT baseline + sweep 0.00–0.40% RT. OOS 65/35 + per-year. Grid on BOTH assets. Turnover and correlation-to-TP01 reported for every signal.
- >=12h only (12h + 1d). Sub-12h excluded per the standing lesson (fees + HF-noise overfit + the 4h open-label look-ahead trap).
Signals tested
VT-long (volatility-managed long), VolBreakout (volume-z-confirmed Donchian), OBV-trend, VW-mom (volume-weighted momentum), RangeExpand (range-expansion breakout), NR7-break (narrowest-range breakout), DeclVolRev (declining-volume fade/reversal). Plus regime overlays on TP01: keep-low-vol, keep-high-vol, vol-managed ×1.5, OBV-up confirmation.
Results (12h headline, fee 0.10% RT)
| signal | corr→TP01 | OOS Sharpe BTC/ETH | note |
|---|---|---|---|
| VT-long | 0.66 / 0.69 | 0.80 / 0.14 | trend-in-disguise; weak OOS ETH |
| VolBreakout | 0.69 / 0.71 | 0.54 / 0.49 | profitable but correlated |
| OBV-trend | 0.61 / 0.63 | 0.96 / 0.68 | profitable but correlated; turnover ~75/yr |
| VW-mom | 0.64 / 0.67 | 0.98 / 0.74 | basically TSMOM; correlated |
| RangeExpand | 0.48 / 0.49 | 0.37 / 1.04 | lower corr but BTC weak; ETH negative on 1d |
| NR7-break | 0.48 / 0.49 | 0.79 / 0.02 | fails OOS on ETH |
| DeclVolRev | -0.15 / -0.11 | -1.15 / -0.44 | negative even at zero fee |
Grid robustness (12h, % cells positive full+OOS on both assets): VW-mom 100%, VT-long 100%, VolBreakout 96%, RangeExpand 96%, OBV-trend 75% — but the robust ones are precisely the ones that are highly correlated to TP01. Fee sweep: trend-family signals survive to 0.40% RT; DeclVolRev gets worse with fees (it trades constantly).
Regime filters on TP01 (12h, 50/50 portfolio)
| variant | full Sharpe | OOS Sharpe | maxDD | CAGR | turn/y |
|---|---|---|---|---|---|
| TP01 baseline | 1.32 | 0.90 | 13.3% | 16.2% | 11.5 |
| × keep LOW-vol | 0.94 | 1.11 | 14.1% | 7.7% | 9.5 |
| × keep HIGH-vol | 0.98 | 0.18 | 9.9% | 7.9% | 4.9 |
| × vol-managed ×1.5 | 1.33 | 0.96 | 17.9% | 18.1% | 15.4 |
| × OBV-up only | 1.49 | 1.04 | 10.1% | 14.4% | 18.2 |
OBV-up filter across EMA span: full Sharpe 1.49–1.52 (span 15–30), DD 7–10%, but OOS gain is marginal (0.90→1.04 at span 30) and fades for span≥45 (OOS 0.69–0.73). It cuts ~2pp CAGR and raises turnover ~60%.
Verdict (honest)
- No uncorrelated additive edge exists. Every profitable volume/range/vol signal is trend in disguise (corr 0.61–0.75 to TP01) → cannot raise the 50/50 portfolio Sharpe. The genuinely lower-corr signals (RangeExpand, NR7 ~0.48) fail OOS on at least one asset.
- Mean-reversion / declining-volume fade is dead — negative net AND at zero fee on both assets. Reconfirms the v2.0.0 contamination lesson; MR is not a real edge on certified data.
- Vol-regime gating hurts (keep-low / keep-high both drop Sharpe to ~0.95). The vol-managed overlay is Sharpe-neutral but DD-worse.
- The only non-harmful overlay is OBV-up trend-confirmation: it cuts DD (13.3%→10.1%) and nudges full Sharpe to ~1.49, but it is trend double-confirmation (de-risking), not new alpha; it costs CAGR, raises turnover, and the OOS Sharpe gain is within noise and span-sensitive. It is worth keeping in mind as a defensive DD overlay, not as a Sharpe improver.
- Bottom line: the ~1.3 portfolio-Sharpe ceiling on BTC/ETH-only holds. TP01 stays the deployable winner. Volume/range/vol add nothing uncorrelated.