BtcMacdSignAlwaysInTrendLS
Hypotheses
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)
Hypotheses
A LONG-SHORT, single-instrument BTC trend model engineered directly against the death mode that just killed three of my trend sleeves at OPTIMIZATION: the efficiency-gate, the OI-gate, and the Donchian breakouts all died because they contained a THRESHOLD parameter the optimizer pushed to an extreme (er_period 59, oi_z 2.49, channel 53), collapsing the book to 3–9 trades — a degenerate few-trade corner that fails the hard DSR/OOS gates. The one strategy that survived (BTC dual-TF momentum) has NO rare-event gate; it is essentially always taking a side. This hypothesis takes that lesson to its logical minimum: it is ALWAYS in the market (long or short, never flat), has NO threshold that can gate trade count, and exposes only 2 tunable parameters (the fast and slow EMA spans of a MACD). The position is simply the SIGN of the MACD histogram (fast EMA − slow EMA of the daily close); it flips long↔short whenever the histogram changes sign. Because there is no gate and the model reverses on every cross, the optimizer physically CANNOT collapse the trade count into a corner — trade count is bounded below by the cross frequency at any parameter setting — which structurally defends the DSR/holdout gates. It stays on the ONE proven asset+edge (BTC directional trend), is distinct in construction from the pending sleeves (MACD-sign always-in, not momentum-confluence / MA-regime / breakout / pullback / rotation), and is pure OHLCV and computationally trivial (two EMAs). Avoids every graveyard: NOT reversion/pairs/funding/options (dead/broken), NOT a gated breakout (corner-collapses), NOT a symbol-respray (L56 — it is BTC, the proven asset, with a distinct always-in construction). Exactly 2 tunable parameters: fast EMA span and slow EMA span.
Hypotheses
Iteration 4 makes the single change the QA feedback demands and nothing else: the bar type reverts from 1-DAY to 8-HOUR. The Python source is unchanged from previous_code apart from the timeframe paragraph of the module docstring, which now records WHY 8H is binding, so no earlier-passing layer can regress (imports, class structure, signal logic, sizing and the 2-parameter surface are byte-identical). Fix for feedback item 1 (measurability): at 1-DAY the MACD sign flips only ~13x/yr (13 trades in the 362-day sandbox, ~87 lifetime), below the ~100-trade floor that already rejected the weekly-MA, HL-daily and regression-daily sleeves; the identical model on 8-HOUR flips ~35x/yr (~221 round trips over the ~6.7-year history), which is the configuration QA PASSED at iteration 1. Fix for feedback item 2 (no fee-clearing edge, no full-history rebuttal): the negative 1D sandbox (avg_trade_return_pct -0.134%, PF 1.03, Sharpe 0.10 on 13 trades) was a property of the daily cadence, not the construction — the 8H configuration being restored is the one that produced a positive sandbox AND the full-history parameter-box sweep of 50-652 trades at Sharpe 0.85-1.17 across the whole (fast_span, slow_span) box, which is the evidence QA's pass bar asks for. One honest note: the hypothesis title specifies daily bars, and I am overriding that to 8-HOUR because the measurability floor is a hard gate the daily version provably cannot clear with this construction; 8H still holds each position for days-to-weeks (median hold ~1 week at the default spans), so it remains the multi-day directional trend model the hypothesis describes, only sampled finely enough to populate the walk-forward / holdout / DSR gates.
Hypotheses
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
Verification failed (Layer 4 — QA review):
- Moving to 1-DAY bars reintroduced the sub-100-trade measurability failure (L16). At daily cadence the MACD sign flips only ~13x/yr (13 trades in the 362-day sandbox), extrapolating to ~87 over the ~6.7-year history -- BELOW the ~100 measurability floor that has already rejected the weekly-MA (17), HL-daily (56) and regression-daily sleeves this session. This is a REGRESSION from iteration 1 of this exact strategy, which I PASSED on 8-HOUR bars with 221 trades (~35/yr) and a positive sandbox. The 8H->1D change was made to satisfy a timeframe-match audit finding, but daily single-asset MACD is structurally too low-frequency to populate the walk-forward/holdout/DSR gates.
- No fee-clearing edge on the only measured result, and no full-history rebuttal (checklist #7). The 1D sandbox is net-negative per trade: avg_trade_return_pct -0.134% (below the fee floor), PF 1.03, Sharpe 0.10, over 13 trades (the +0.83% total is dollar-weighting from a couple of larger winners, not a per-trade edge). Unlike iteration 1 (which supplied a full 8H parameter-box sweep: 50-652 trades, Sharpe 0.85-1.17), this iteration provides NO full-history dry-run for the 1D configuration, so the negative sandbox stands unrebutted. My consistent bar -- pass requires EITHER a positive sandbox OR a demonstrated positive full history -- is met by neither for the daily version.
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.
Verification Results
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.
Verification Results
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.
Verification Results
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
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
Backtest Review
avg_trade_return_pct 1.24% clears the fee floor decisively; PF 1.486 and DD 18.7% are acceptable in isolation
Backtest Review
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
Backtest Review
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
Backtest Review
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
Backtest Review
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
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.
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.
Outcome Summary
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.
Outcome Summary
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.
Outcome Summary
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.