Skip to content

View original

BtcSpot4hTrendFilteredPullbackMRLong

Hypotheses

BTC Spot 4H Trend-Filtered Pullback Mean-Reversion Long (Vol-Normalized EMA-Distance, Buy-the-Dip in Uptrend)

Hypotheses

A long-only, single-instrument, single-venue, OHLCV-ONLY pullback mean-reversion strategy on BTCUSDT.BINANCE_SPOT (CASH account, no leverage) using 4-HOUR bars. It fills the under-represented BINANCE_SPOT venue (11.7% vs >=15% quota) — the highest-survival venue in the portfolio — with a mechanism explicitly engineered around this session's failure log. Core thesis: in a CONFIRMED uptrend, short-term pullbacks are driven by transient profit-taking and revert as dip-buyers and trend-continuation flow re-enter; buying these dips (and ONLY in uptrends, never in downtrends) is one of the most robust long-only crypto edges. Three deliberate design choices defeat the recurring abandons: (1) 4-HOUR cadence (not daily) so qualifying dips occur dozens of times per year and populate all three walk-forward OOS windows + holdout — directly fixing the event-sparsity / OOS-all-zero failures that killed the daily RSI-bounce, daily breakout, three-white-soldiers, and squeeze strategies; (2) a VOL-NORMALIZED dip depth (distance below a fast EMA measured in ATR units) instead of a fixed RSI threshold, so the trigger adapts to changing volatility and avoids the core-parameter sensitivity CLIFF that abandoned the ETH RSI-oversold strategy (fixed thresholds become knife-edges as vol regime shifts); (3) a regime filter that only buys dips when the longer-term trend is up, preventing the catch-a-falling-knife losses. It is simple (5 core parameters) to resist the overfitting that produced is_overfitted=TRUE across this session, uses only deep-history Binance spot OHLCV (BTC spot ~2017-present, no options/HL/COIN-M/cross-venue/supplementary dependencies — all confirmed unvalidatable), and on BTC (deepest liquidity, most robust trend) avoids the alt-specific pattern-non-transfer that killed the ADA strategy.

Hypotheses

Implements the hypothesis exactly and routes to the correct venue. Because the strategy is long-only, unleveraged, and not funding-based, it belongs on BINANCE_SPOT (CASH, leverage hard-capped at 1) — the venue the hypothesis targets to fill its quota — and it never submits a SELL to enter (only BUY entries; the base class exits longs via SELL), satisfying the spot CASH constraint. The three engineered defenses are coded: (1) 4-HOUR cadence so qualifying dips occur dozens of times per year, populating all walk-forward OOS windows and avoiding the event-sparsity zero-trade abandons; (2) a VOL-NORMALIZED trigger — dip depth measured in ATR units, (fast_ema-close)/ATR — so the entry adapts to volatility regime instead of a fixed-RSI knife-edge that produced sensitivity cliffs; (3) an explicit uptrend regime filter (rising trend SMA + fast EMA above trend SMA) so it only buys dips in confirmed uptrends, never catching a falling knife. It keeps to 5 core parameters (fast_ema_period, trend_sma_period, atr_period, entry_dip_atr, stop_loss_pct) to resist overfitting, and uses only deep-history Binance spot OHLCV — no options/HL/COIN-M/cross-venue/supplementary dependencies, so no data_unavailable risk. calculate_signal returns the continuous dip value every bar (varies bar-to-bar, defeating the Layer-2 frozen-signal check) while the discrete uptrend+threshold entry decision lives in should_enter. The mean-reversion target (revert to EMA after a >=1 ATR dip on 4H BTC) comfortably exceeds the ~0.20% spot round-trip fee, meeting the spot avg-trade-return viability bar. leverage=1.0 and sizing never references leverage, so it is not flagged leverage_set_but_unused.

Hypotheses

Fundamentally negative-edge mechanism, not a tuning problem. The trend-filtered pullback mean-reversion long loses in 6 of 8 calendar years (only the 2019-2020 bull-recovery years are positive; negative every year since 2021), with profit_factor 0.77, Sharpe -1.60, expectancy -$243/trade, and a 57% max drawdown over a meaningful 205-trade sample. The defining symptom is a structural payoff inversion: a healthy 58.5% win rate is overwhelmed by avg_loss ($2562) being ~1.8x avg_win ($1400). The exit design caps winners at the EMA reversion while losers run to the 5% stop, so the minority of dips that do NOT revert — because the SMA-slope regime filter lags the actual trend break and BTC's large declines begin from apparent uptrends — become large losses that swamp the many small wins. This is the buy-the-dip pullback-MR family the hypothesis itself concedes is double-falsified (XRP pullback -7.15 Sharpe, DOGE triple-screen -2.63, ETH buy-the-dip); the vol-normalized dip + 4H cadence + trend filter engineering did not change the result. Optimizing entry_dip_atr/stop_loss_pct/exit_dip_atr could only rebalance the payoff by overfitting the 2019-2020 window, which the DSR/PBO/holdout gates would then reject (the same overfit-to-bull-window signature seen across this session's pullback and breakout abandons). Recommend abandon rather than spend 2 hours optimizing a falsified mechanism that loses across nearly every regime. FAILURE PATTERN: long-only trend-filtered buy-the-dip pullback mean-reversion on a major (BTC 4H spot) produces a high win rate but a >1.7x larger average loss, because lagging trend filters let dip-buys catch the onset of major declines; the pullback-MR family is regime-dependent bull beta that loses out-of-bull and cannot be salvaged by vol-normalizing the trigger.

Implementation

Long-only pullback mean-reversion on BTCUSDT.BINANCE_SPOT (CASH, no leverage) using 4-HOUR bars. Each bar it computes a fast EMA(20), a trend SMA(100), and ATR(14), then the VOL-NORMALIZED dip depth = (fast_ema - close)/ATR in ATR units. It buys a dip (dip >= entry_dip_atr = 1.0 ATR below the fast EMA) ONLY when the regime is a confirmed uptrend (trend SMA rising over the last 10 bars AND fast EMA above the trend SMA). It exits on the earliest of: reversion back to/through the fast EMA (dip <= exit_dip_atr = 0), a 5% hard stop-loss, or a 30-bar (~5-day) time stop. Sizing is 75% of cash equity per trade (no leverage). Spot long-only: entries are BUY-only, exits are SELL.

Backtest Review

Fixed event-sparsity as intended: 205 trades over 8 years populate walk-forward windows; clean execution (0 dropped), no liquidation.

Backtest Review

Sensible engineering (vol-normalized dip, trend filter, 4H cadence) and a genuinely under-quota venue (BINANCE_SPOT).

Backtest Review

Entry timing has some merit — 58.5% win rate shows dips do often revert.

Backtest Review

Loses in 6 of 8 calendar years; the only positive years (2019-2020) are bull-recovery beta. Negative every year since 2021.

Backtest Review

profit_factor 0.77, Sharpe -1.60 (CI fully spans into deeply negative), expectancy -$243/trade, max_drawdown 57%.

Backtest Review

Structural payoff inversion: avg_loss $2562 is ~1.8x avg_win $1400 — winners capped at EMA reversion, losers run to the 5% stop when the regime filter lags a real trend break.

Backtest Review

This is the buy-the-dip pullback-MR family the hypothesis itself admits is double-falsified (XRP, DOGE, ETH); the engineering did not change the outcome.

Outcome Summary

BtcSpot4hTrendFilteredPullbackMRLong was carefully engineered against the session's failure log — a 4H cadence to populate walk-forward windows, a vol-normalized ATR dip to avoid sensitivity cliffs, and a trend filter to dodge falling knives — applied to deep-liquidity BTC spot to fill the under-represented venue. The engineering fixed event-sparsity (205 trades, no blow-up) and dips did often revert (58.5% win rate), but the edge was still negative: -44% return, -1.60 Sharpe, 0.77 profit factor, losses in 6 of 8 years, because the lagging trend filter let dip-buys catch the onset of big declines and avg losses ran ~1.8x avg wins. The analyst ruled it the same double-falsified pullback-MR family — regime-dependent bull beta unsalvageable by trigger tweaks — and abandoned it. It ended after one iteration as abandoned, never advancing to optimization or risk review.

Outcome Summary

Long-only trend-filtered buy-the-dip pullback mean-reversion on a major produces a high win rate but a >1.7x larger average loss because lagging trend filters let dip-buys catch the start of major declines — it is regime-dependent bull beta that loses out-of-bull, and vol-normalizing the trigger, raising the cadence, or adding a regime filter does not change the falsified outcome (consistent with the XRP/DOGE/ETH pullback abandons).

Outcome Summary

It was abandoned at the pre-optimization backtest-review gate (verdict: abandon) as a fundamentally negative-edge mechanism — the lagging SMA-slope trend filter lets dip-buys catch the onset of major declines, so winners cap at EMA reversion while losers run to the stop — part of the double-falsified buy-the-dip pullback-MR family that the engineering did not rescue, so optimization and all later stages were never reached.

Outcome Summary

A long-only single-instrument pullback mean-reversion on BTCUSDT.BINANCE_SPOT (4H bars, OHLCV-only, CASH/no leverage) that bought confirmed-uptrend dips — entering when price fell at least 1 ATR below a 20-period fast EMA while a 100-period SMA was rising and the fast EMA sat above it — exiting on reversion to the EMA, a 5% stop, or a 30-bar time stop, using a vol-normalized (ATR-unit) dip depth and a trend filter explicitly to dodge the session's event-sparsity, sensitivity-cliff, and falling-knife failures.

Outcome Summary

Over 8 years and a healthy 205-trade sample it was a structural negative edge: total return -44.2%, Sharpe -1.60 (CI into deeply negative), profit factor 0.77, expectancy -$243/trade, max drawdown 57%, and losses in 6 of 8 years (only the 2019-2020 bull-recovery years positive) — with a payoff inversion where a healthy 58.5% win rate was overwhelmed by avg loss ($2,562) ≈ 1.8x avg win ($1,400).
Strategy report

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