BtcDailyMomentumVolatilityFilterLongShort
Hypotheses
BTC Daily Momentum with Volatility Filter
Hypotheses
A simple daily-timeframe momentum strategy on BTCUSDT futures. Enters in the direction of recent momentum when volatility is expanding (favorable for trend continuation) and stays out during low-volatility chop. Uses only 2 core indicators (ROC and ATR ratio) with 3 tunable parameters, minimizing overfitting risk. Daily bars mean ~1-2 trades per week, keeping fee drag negligible. This is deliberately simple — the edge comes from BTC's well-documented momentum persistence at the daily timeframe, filtered by a volatility regime gate to avoid whipsaws in ranging markets.
Hypotheses
Implements the BTC daily momentum-with-volatility-filter hypothesis with deliberate minimalism. calculate_signal returns the signed ROC (continuous, varies every bar) as the momentum signal and caches the volatility regime gate (short ATR / long ATR) plus ATR for risk. should_enter requires the volatility ratio to exceed vol_ratio_min (vol expanding -> favorable for trend continuation) before taking a position in the momentum direction; this filters out low-vol ranging markets where momentum signals whipsaw. The volatility gate is expressed as a dimensionless ATR ratio so it remains valid across BTC's large multi-year price/vol regime shifts (an absolute ATR threshold would drift out of range). Routed to the BINANCE futures venue because the strategy is genuinely long-short. Daily bars produce ~1-2 trades/week, keeping round-trip fee drag negligible relative to the per-trade move. Risk is bounded by an ATR stop and a time stop; only three indicators/parameters are tuned to minimize overfitting.
Hypotheses
Failed deflated Sharpe: DSR=0.0 (vs 0.95 bar), expected-max=9.53 over 225 trials — the optimized Sharpe of 1.18 is FAR below the best-of-N luck bar, indistinguishable from selection noise (is_significant=false). Every forward gate confirms overfitting: the HOLDOUT FAILED (ratio 0.224, holdout Sharpe 0.625 vs WF-OOS 2.79), PBO 0.6389 (>0.5), sharpe_ci_low -0.69 (CI straddles 0), and sensitivity FAILED with 4 cliffs on the CORE defining parameters (atr_period, roc_period, atr_long_mult, and the vol_ratio_min regime gate itself — Sharpe swings 0.46->0.012->0.20 across small steps). The optimizer over-thinned a weak base (initial Sharpe 0.226, PF 1.07, max_DD 43%, 120 trades) down to just 20 trades (13L/7S), curve-fitting to a tiny sample; the walk-forward is_overfitted=FALSE flag is misleading because it is propped by two lucky OOS windows ([4.15, 0.0, 4.21]) with one window producing zero trades, while the honest forward holdout collapses. Not iterate (attempt 1 of 2): the failure is structural — 4 cliffs on core params, over-thinning to 20 trades, DSR nine points below the luck bar, and a failed holdout — not a single under-explored robust region, so a second sweep re-finds another thin, lucky-window fit. Not revise_hypothesis: BTC daily momentum is well-trodden and the volatility-expansion gate is exactly what creates the cliffs, with no proven sibling stranded on a dead target. FAILURE PATTERN: a deliberately-simple long-short daily momentum + volatility-regime-filter on BTC produces a marginal base (Sharpe 0.23) that the optimizer inflates by over-thinning to 20 trades (Sharpe 1.18, PF 2.72), but it fails deflated Sharpe (0.0, far below a 9.53 luck bar), a failed holdout (ratio 0.224), PBO 0.64, and sensitivity with 4 cliffs including the volatility gate itself — the regime filter is a knife's-edge parameter, not a robust edge. Adding a vol-expansion gate to a basic momentum signal trades trade-count for fragile cliff dependence; the same overfit-to-few-trades signature as prior abandoned single-asset trend strategies.
Implementation
Simple daily-timeframe momentum strategy on BTCUSDT.BINANCE (USD-M perp), long-short, on 1-DAY bars. Direction comes from rate-of-change (ROC) over roc_period days; trades are only permitted when volatility is expanding, measured by a dimensionless ratio of a short-window ATR to a longer baseline ATR (>= vol_ratio_min). It goes long on positive momentum and short on negative momentum during vol-expansion regimes, and stays flat in low-volatility chop. Exits when momentum flips against the position, an ATR stop (3x ATR) is hit, or a 30-day max-hold time stop expires. Three core tunable parameters (roc_period, atr_period, vol_ratio_min). Positions sized at 50% of account equity.
Backtest Review
Positive expectancy (+$131/trade), total return +34% across a dense 120-trade sample over 6.4 years — adequate for walk-forward.
Backtest Review
Trend payoff geometry (avg_win 2.2x avg_loss at 32% win rate); simple design (3 core params, low overfit surface); recent years positive (2025 +1.4%, 2026 +20.1%).
Backtest Review
Clear tuning lever: roc_threshold is currently 0.0 (enters on any momentum direction — crude); raising it plus tuning vol_ratio_min can lift selectivity and cut chop losses.
Backtest Review
Thin, fee-fragile edge: profit_factor only 1.07, Sharpe 0.23 with CI straddling 0 (sharpe_ci_low -0.83).
Backtest Review
Large drawdown (43%) and a catastrophic 2022 (-23.9%); outlier-dependent (return_kurtosis 87.7 — the +34% rests on ~4 huge days).
Backtest Review
Tiny capacity ($11.5M) with impact 9.3% of gross at the backtested size.
Backtest Review
These properties make it a strong candidate to fail the deflated-Sharpe/holdout gates post-optimization.
Analysis
Optimized headline metrics look superficially good (Sharpe 1.18, PF 2.72, max_DD 25.5%)
Analysis
Walk-forward is_overfitted flag is technically FALSE
Analysis
Deflated Sharpe 0.0 (is_significant FALSE): optimized Sharpe 1.18 is far below the expected-max luck bar of 9.53 over 225 trials — indistinguishable from best-of-N selection noise
Analysis
Holdout FAILED: ratio 0.224 (holdout 0.625 vs WF-OOS 2.79), well below the 0.70 floor — forward window collapses
Analysis
Sensitivity FAILED with 4 cliffs on core params (atr_period, roc_period, atr_long_mult, vol_ratio_min) — the volatility regime gate itself is a knife's edge
Analysis
PBO 0.6389 (>0.5) and sharpe_ci_low -0.69 (CI straddles 0)
Analysis
Optimization over-thinned 120 trades down to 20 — curve-fit to a tiny sample; one walk-forward OOS window produced zero trades
Analysis
Base backtest was already marginal (Sharpe 0.226, PF 1.07, max_DD 43%)
Outcome Summary
BtcDailyMomentumVolatilityFilterLongShort was a deliberately simple three-parameter bet on BTC's daily momentum persistence, gated by a self-normalizing volatility-expansion filter to avoid ranging-market whipsaws. The base backtest was honestly marginal — Sharpe 0.23, profit factor 1.07, a 43% drawdown, and returns concentrated in a handful of outlier days — but its dense 120-trade sample earned an optimization slot. Optimization produced a flashy Sharpe 1.18 by over-thinning the book to just 20 trades, and although the walk-forward overfit flag read false, that was propped by two lucky OOS windows (one with zero trades) while the time-ordered holdout collapsed to a 0.224 ratio. The analyst abandoned it as a structural overfit — deflated Sharpe 0.0 far below the 9.53 luck bar, PBO 0.64, and four sensitivity cliffs on the core params including the vol gate itself — the same overfit-to-few-trades signature as prior abandoned single-asset trend strategies.
Outcome Summary
Adding a volatility-expansion gate to a basic momentum signal trades trade-count for fragile cliff-dependence: when optimization must over-thin a weak base to a tiny sample and the regime filter is a knife's-edge parameter, the headline Sharpe is selection noise that collapses in the honest holdout.
Outcome Summary
It passed backtest review (verdict: optimize) but the analyst abandoned it after optimization: deflated Sharpe 0.0 vs a 9.53 expected-max luck bar, a failed holdout (ratio 0.224 vs the 0.70 floor), PBO 0.64, sharpe_ci_low -0.69, and a failed sensitivity test with 4 cliffs on the core parameters — including the volatility-regime gate itself — while the optimizer over-thinned 120 trades down to 20.
Outcome Summary
A deliberately simple long-short BTCUSDT daily momentum strategy that traded in the direction of rate-of-change when a short-window ATR exceeded a longer-baseline ATR (volatility-expansion regime gate) and stayed flat in low-vol chop, exiting on momentum flips, an ATR stop, or a time stop — using only three core tunable parameters to limit overfitting.
Outcome Summary
The base backtest was marginal over ~6.4 years: 120 trades (61 long, 59 short), a 32.5% win rate, profit factor 1.07, Sharpe 0.23 (CI straddling zero, low -0.83), a +34% total return resting on ~4 outlier days (kurtosis 87.7), and a 43% max drawdown. Optimization thinned it to 20 trades with a superficially strong headline (Sharpe 1.18, profit factor 2.72, max drawdown 25.5%).
Backtest and paper results are hypothetical. Trading involves risk of loss.