Strategies
BTC Always-In MACD-Sign Trend (Gate-Free, Corner-Resistant by Design) — Position = Sign of the MACD Histogram, Reverse on Every Sign Flip, Vol-Targeted, NEVER Flat (BINANCE USD-M, Daily Bars, Long-Short, 2-Parameter)
Outcome: Abandoned
BtcMacdSignAlwaysInTrendLS
Outcome Summary
This strategy was a direct engineering response to the corner-collapse that killed three gated trend siblings: by making the book always-in on the sign of the MACD histogram with only two EMA-span parameters and no threshold, it made a degenerate few-trade corner structurally impossible. It succeeded at that — 222 well-sampled trades, PF 1.486, drawdown 18.7% — but the base Sharpe came in at just 0.701 with a CI-low of 0.09, placing it in the L63 always-in kill-band where the base figure is the ceiling. With every stronger single-name BTC-trend sibling already failing the DSR/OOS gates and two prior optimization runs showing no improvement, the analyst abandoned it at BACKTEST_REVIEW after four iterations rather than spend more budget on a sub-1.0-Sharpe class already shown not to survive.
Hypothesis
L63 always-in OHLCV directional class: base Sharpe 0.701 (CI-low 0.09, straddling zero) is the ceiling for a gate-free always-in composite — the 3-phase deflation/holdout only lowers it below the DSR 0.95 and OOS>0 gates. Confirmed by every stronger single-name BTC-trend sibling failing those exact gates this session (pullback OOS -1.13/PBO 0.66, diversified TSMOM OOS -3.34/holdout -0.64). Record is outlier-carried (kurtosis 13.5) and regime-dependent (losing 2025, negative rolling Sharpe into 2026). Two prior optimization runs at identical metrics showed no path forward. Failure pattern: always_in_ohlcv_trend_sub_1.0_sharpe (base Sharpe below ~1.0 floor, class-overfit confirmed by stronger sibling walk-forward failures).
Implementation
Always-in long/short BTC USD-M trend model on 8-HOUR bars. Position = sign of the MACD histogram (fast EMA minus slow EMA of the close, expressed as a fraction of price): long while positive, short while negative, reversing on every sign flip, never flat. There is no gate and no threshold anywhere, so trade count is bounded below by the cross frequency at every point of the parameter box and the optimizer cannot collapse the book into a few-trade corner. Exactly 2 searchable parameters (fast_span, slow_span); every other constant (vol target, vol lookback, notional cap, warmup minimums) is a class constant invisible to the search. Sizing is volatility-targeted: notional = equity * min(0.20 / realized annualized vol, 1.0), capped at 1x equity so leverage stays 1.0. Pure OHLCV, fully incremental (two EMA recursions plus running return sums).
Verification Results
Research Lead: RATIFY the 8-HOUR horizon (or edit the hypothesis text from 'daily' to '8H') so the timeframe-match check stops re-flagging it. Do not send it back to daily -- daily cannot clear the measurability floor with this construction, which is now demonstrated four times. No code change is needed.
Timeframe deviation from the hypothesis (checklist #1) -- now a PROCESS-CHURN problem that the Research Lead must resolve. The hypothesis says DAILY bars but config.bar_type is 8-HOUR. This is empirically correct and justified: daily is provably unmeasurable for this ~monthly-flipping MACD sign (13 trades/yr -> ~87 lifetime, below the ~100 floor, negative sandbox -- which I failed at iteration 2), while 8H flips ~35x/yr (~221 lifetime), is measurable, and is positive. The strategy has now round-tripped daily<->8H across four iterations: a timeframe-match audit re-flags it to daily, I re-fail daily on measurability, and the developer re-reverts to 8H (this version, identical to the ones I passed at iterations 1 and 3). The strategy is correct; the loop is the waste.
At BACKTEST_REVIEW judge on the vol-targeted equity path / Sharpe over win rate, and confirm the recent-regime edge is intact; the iter-1 full-box sweep (Sharpe 0.85-1.17 across the whole parameter box) establishes the mechanism but the DSR/OOS gates remain the binding test.
Right-tail dependence and the usual recent-regime caveat (non-blocking, for BACKTEST_REVIEW). Win rate 35% with a fat right tail (kurtosis 11, largest win 18.2k vs largest loss 3.6k) -- the record is carried by a few big trend winners, by design for an always-in trend model, so per-trade/win-rate floors must respect payoff asymmetry. BTC 8H trend has been regime-dependent in 2024-2026 across this session's sleeves, so the walk-forward's recent OOS window is the risk.
Backtest Review
- Sharpe
- 0.70
- Total return
- 274.47%
- Max drawdown
- 18.72%
- Trades
- 222
- Win rate
- 29.3%
- Profit factor
- 1.49
Genuinely corner-resistant construction: always-in, no threshold, 2 searchable params — trade count bounded below (222 trades) so it cannot collapse to a degenerate few-trade corner like the gated siblings
avg_trade_return_pct 1.24% clears the fee floor decisively; PF 1.486 and DD 18.7% are acceptable in isolation
Base Sharpe 0.701 with sharpe_ci_low 0.09 — CI effectively straddles zero; this is the L63 kill-band (always-in OHLCV directional, Sharpe 0.55-0.85, PF 1.3-1.7) where base Sharpe is the CEILING and deflation only lowers it
Every stronger single-name BTC-trend sibling just failed the 3-phase gates: pullback OOS -1.13/PBO 0.66, diversified TSMOM basket OOS -3.34/holdout -0.64. A 0.70/0.09 base has no path through the same DSR/OOS gates those far-stronger sleeves could not clear
Outlier-carried and regime-dependent: return_kurtosis 13.5, record driven by a few +23% to +37% single days; full losing 2025 (-11.7%) with rolling Sharpe negative into early 2026
Already consumed two optimization runs at essentially identical metrics — no improvement path demonstrated
Analysis
Code↔hypothesis misalignment found by the semantic auditor — the code does NOT implement the hypothesis. Re-code the strategy to implement the hypothesis EXACTLY (instrument, timeframe, direction, the named edge/mechanic, sizing). Concrete issues: hypothesis_title states "Daily Bars" and the hypothesis body defines the signal as "the SIGN of the MACD histogram (fast EMA − slow EMA of the daily close)", but config.bar_type is BTCUSDT.BINANCE-8-HOUR-LAST-EXTERNAL and the implementation computes the EMAs/histogram on 8-HOUR bar closes (module docstring: "TIMEFRAME — 8-HOUR bars"; rationale: "revert the bar type from 1-DAY back to 8-HOUR"). The hypothesis artifact was never updated after the iteration-3 revert, so the specified timeframe contradicts the implemented one — and it is material, since the hypothesis's trade-count/measurability argument (~35 flips/yr vs ~13/yr on 1-DAY) depends on the cadence.
Outcome Summary
Solving corner-collapse by removing all thresholds does not create an edge — a gate-free always-in construction whose base Sharpe is ~0.7 with a CI on zero has no headroom, because deflation and OOS testing only subtract from that ceiling.
The analyst abandoned it at the pre-optimization BACKTEST_REVIEW gate: at Sharpe 0.701 it fell below the 1.0 review threshold and sat squarely in the L63 always-in-OHLCV-directional kill-band, where base Sharpe is the ceiling and the 3-phase deflation/holdout can only lower it below the DSR and OOS gates — gates that far stronger BTC-trend siblings had already failed.
A long-short single-instrument BTC USD-M trend model engineered against the corner-collapse death mode — always in the market (long when the 8H MACD histogram is positive, short when negative, never flat), vol-targeted, with only 2 searchable parameters (fast and slow EMA spans) and no threshold the optimizer could push to a degenerate few-trade corner.
The full-history backtest achieved its structural goal — 222 trades (trade count bounded below by cross frequency), avg trade return 1.24% of notional, profit factor 1.486, max drawdown 18.7%, total return 274.5% — but base Sharpe was only 0.701 with sharpe_ci_low 0.09 (a confidence interval effectively straddling zero), and the record was outlier-carried (return kurtosis 13.5) and regime-dependent, with a losing 2025 (-11.7%).
Backtest and paper results are hypothetical. Trading involves risk of loss.