Skip to content

View translation

EthSpotVolatilityManagedRiskOnOffLongFlat

Hypotheses

ETH Spot Volatility-Managed Risk-On/Off, Long-Flat (Single-Instrument ETHUSDT.BINANCE_SPOT, Daily Bars, Hold ETH Only in Low-Realized-Vol Uptrend Regimes and Sit in Cash When Volatility Spikes, Vol-Targeted Sizing, Pure OHLCV, 3-Parameter)

Hypotheses

A LONG-FLAT, single-instrument regime-timing strategy on ETHUSDT.BINANCE_SPOT that implements the well-documented volatility-managed-portfolio anomaly (Moreira & Muir): risk-adjusted returns are systematically higher in LOW-volatility regimes and the worst drawdowns cluster in HIGH-volatility regimes, so scaling exposure inversely to realized volatility raises Sharpe and cuts tail risk out-of-sample. It fills the under-represented BINANCE_SPOT venue (12.0% vs >=15% target) using nothing but daily OHLCV — the best-surviving data class (no_supplementary_data, 4%). It is deliberately the OPPOSITE of the buy-the-dip / accumulate-the-flush spot ideas that overfit (it sits OUT during capitulation, not into it) and is NOT a price-trend chaser, a rank-rotation basket, a VWAP/RSI fade, or a supplementary-feed signal — so it avoids every enumerated failure mode (overfit-on-rare-events, cross-sectional fee arithmetic, verification-loop instrument swaps, liquidation-data walls). Only 3 parameters (vol lookback, vol threshold percentile, trend filter length) keeps the optimization surface tiny against the 233-death overfit graveyard. The academic pedigree of vol-managed timing gives it genuine out-of-sample support rather than an in-sample-tuned curve.

Hypotheses

IMPORTANT — the previous_code attached to this task is not this hypothesis's strategy. It is EthMomentumIgnitionContinuationLS, a 30-minute long-SHORT momentum-ignition book on the USD-M perp, with its own docstring about an iteration-1 COIN-M inverse-contract failure. This hypothesis is a daily, long-FLAT, volatility-managed spot timer. I could not make a minimal venue edit to that file and satisfy the reported failure: Layer 1.5 demands ETHUSDT.BINANCE_SPOT, and a long-short book on a CASH spot account has every SELL entry dropped by the base template's spot-short guard, so half its signals would be dead and its identity would still contradict the hypothesis. So I implemented the hypothesis as written and flag the mismatch rather than shipping a strategy that cannot be what it claims. The Layer-1.5 failure itself is fixed directly: instrument_id and bar_type are now ETHUSDT.BINANCE_SPOT with 1-DAY bars, leverage 1.0. Design follows the hypothesis exactly — Moreira-Muir volatility management, with realized vol ranked against its OWN trailing history (scale-free across eras rather than an absolute vol constant, which would not survive 2018 vs 2026 regimes), an SMA used only as a regime filter, and inverse-vol position sizing. It sits OUT during capitulation rather than into it, reads no supplementary data, and keeps exactly three searched parameters against the overfit graveyard. I validated the gate on the real series — 3,305 ETH spot daily bars from 2017-08 to 2026-09 — and at defaults it is invested 37.1% of days with 172 regime flips (~86 round trips, average hold ~14 days). That rules out both a zero-trade Layer-3 failure and the churn that would breach spot's 0.2% round-trip cost, since multi-week holds amortize it. Sizing only occurs while flat, so on a CASH account get_account_equity() is the full portfolio at that instant; quantities are floored to the instrument's own size precision with a min-notional check. Buffers are bounded and per-bar work is O(1) amortized, so there is no timeout exposure.

Hypotheses

L49/L19 long-only vol-targeted crypto-beta family: beta-carried (beta 0.23, corr 0.56) with NEGATIVE information ratio (-0.449) versus its own buy-hold benchmark, so the vol-managed regime timing underperforms simply holding ETH on a risk-adjusted basis. Max drawdown 52.95% (CI to 75%) exceeds the 50% hard-abandon bar and falsifies the tail-truncation thesis (stressed tercile -52.5%). Sharpe 0.72 with CI low 0.063 straddles zero. Same signature as BtcSpotVolatilityTargetedLongAccumulation and VolTargetedLongCashBasket10Majors abandoned this session; no tuning of the 3 parameters converts a beta stream with negative IR and a 53% drawdown into a promotable edge — not worth 2 hours of optimization.

Implementation

Long-flat volatility-managed regime timer on ETHUSDT.BINANCE_SPOT, daily bars, pure OHLCV. Each close it measures realized volatility as the stdev of the last vol_lookback daily log returns, ranks that value against its own trailing vol_rank_window history, and compares price to its trend_len-day SMA. It holds ETH only while the vol percentile is at or below vol_pct AND price is above the SMA — a calm uptrend regime — and otherwise sits in cash, so it exits into volatility spikes rather than buying them. Exposure is volatility-targeted: the invested fraction is target_vol / realized_vol clamped to [min_frac, max_frac] and hard-capped at 1.0x equity, so calm regimes get full size and choppier ones get scaled down. CASH account, long-only, no shorts, no leverage, no liquidation risk. Three searched parameters: vol_lookback, vol_pct, trend_len.

Verification Results

Verification failed (Layer 1.5 — hypothesis/config consistency) [class=hypothesis_mismatch]: - config.instrument_id is ETHUSDT.BINANCE but the hypothesis declares ETHUSDT.BINANCE_SPOT — same asset, DIFFERENT venue/contract type (fees, settlement and the mechanism's premise differ). Trade the declared instrument.

Verification Results

No fix required; verify full-history backtest hits the developer's measured ~86 round trips.

Verification Results

Risk-on requires ~trend_len (100) + min_obs (60) warm-up bars before the first entry can fire (legitimate, no look-ahead). Reduces trade count only on truncated windows; full history unaffected.

Backtest Review

Clean, low-parameter (3 searched) single-instrument implementation on the correct BINANCE_SPOT venue, long-flat with no leverage — structurally sound and not a code defect

Backtest Review

Positive alpha point estimate (0.15) and PSR 0.946 keep it from being obviously dead

Backtest Review

max_drawdown 52.95% (CI high 75.1%) — above the 50% hard-abandon bar; the vol-off switch failed to truncate the tail it exists to cut (stressed regime -52.5%, ftx -17.5%, rate_shock -30.7%)

Backtest Review

information_ratio -0.449 vs its own buy-hold benchmark (benchmark_meaningful=true): the regime timing SUBTRACTS risk-adjusted value versus simply holding ETH — the +706% headline is long-crypto beta (beta 0.23, corr 0.56), not timing skill

Backtest Review

Sharpe 0.72 with bootstrap CI [0.063, 1.34] — low bound essentially at zero; edge indistinguishable from beta capture in the bull years

Backtest Review

avg_trade_return_pct 5.45% is a compounding/position-riding artifact (avg_position_pct 84.9%), not real per-trade edge

Backtest Review

Loses in the stressed vol tercile (-52.5%) — soft gate failure; the thesis (higher Sharpe / smaller tail in vol-managed exposure) is falsified on this instrument

Iteration History

EthSpotVolatilityManagedRiskOnOffLongFlatDaily

Iteration History

Verification failed (Layer 4 — QA review): - The strategy is structurally unmeasurable at the backtest horizon. The sandbox confirms it: over data_days=158 it produced total_trades=0 completed round-trips (trades_count=1 is a single position opened and never closed), metrics_reliable=false, and every performance metric returned 0.0. The config rationale itself estimates only ~13 round trips over ~400 daily bars. A daily long-flat regime timer that holds ETH continuously through low-vol uptrends is inherently very low frequency: the arm gate (vol percentile <= 0.60 AND close > SMA50) plus ~81-bar warmup (vol_pct_window=60 × 21-close vol samples) leaves few usable bars, and each hold spans many. ~13 trades is far below the ~100-trade floor needed to distinguish edge from noise; the analyst will abandon it as unmeasurable downstream — the exact low-fire-rate pattern that burns iterations. - Pure-OHLCV single-instrument strategies have a near-zero historical survival rate in this factory. The academic pedigree and non-overfit design are favorable but don't change the base rate. This is context for the analyst, not a code defect — the code faithfully implements the stated hypothesis. - Spot round-trip ~0.20% with a 0.25% avg_trade_return floor. Multi-day holds should clear it, but with so few trades a couple of boundary whipsaws near the SMA/vol threshold could dominate the average.

Iteration History

SpotMajorsVolatilityManagedRiskOnOffLongFlatDaily

Iteration History

Verification failed (Layer 4 — QA review): - The hypothesis is emphatically and repeatedly a SINGLE-INSTRUMENT strategy: the title says 'Single-Instrument ETHUSDT.BINANCE_SPOT' and the description frames the edge as vol-managed regime timing on ETH ONLY ('NOT a rank-rotation basket'). The code (iteration 2) instead runs the identical sleeve across an 8-name basket: config.extra_instruments = [BTC, BNB, SOL, XRP, ADA, LTC, DOGE].BINANCE_SPOT and on_extra_bar drives 7 additional sleeves. Per the QA checklist, every asset the strategy trades must be named in the hypothesis; 7 of the 8 traded instruments are NOT in the hypothesis. This converts a single-name timer into a diversified basket with a materially different risk profile. The hypothesis itself lists 'verification-loop instrument swaps' as a failure mode to avoid, and this iteration is exactly such an in-loop instrument expansion. The code no longer implements the hypothesis as written. - Informational (analyst domain, not a code defect): the sandbox already shows a decisively negative edge on a measurable sample — avg_trade_return_pct -2.13% (below the spot fee floor), profit_factor 0.32, win_rate 13.8%, total_return -9.5%, Sharpe -1.09. Entry (low-vol uptrend) and exit (trend break or vol spike) polarity correctly matches Moreira-Muir, so this is a timing/edge problem, not an obvious polarity bug. Likely to be abandoned downstream as edge-below-fees. - 65 completed trades over 363 days (~8 per sleeve) is below the ~100-trade measurability floor the developer targeted, so even the basket form is only borderline measurable over this window.

Iteration History

EthMomentumIgnitionContinuationLS
Strategy report

Backtest and paper results are hypothetical. Trading involves risk of loss.