Skip to content

View original

BtcFourHourConvictionCompositeLS

Hypotheses

BTC 4H Multi-Factor Conviction Composite — Long-Short, Diversified 4H Factor Composite Gated by the Daily Trend (Flat on Disagreement), Volatility-Targeted, Trailing-Stop Winners (4H+Daily, 3-Parameter)

Hypotheses

A LONG-SHORT, single-instrument directional strategy on BTCUSDT.BINANCE (USD-M perpetual) that ports the diversified conviction-composite construction to the SURVIVOR'S ACTUAL HORIZON — 4H bars gated by the daily trend — rather than the pure-daily horizon where all ~37 of this session's probes landed Sharpe ~0.47–0.64 (DSR-failing). The decisive evidence: the ONLY strategy that clears the deflated-Sharpe gate (BTC dual-TF confluence, Sharpe ~2.0) operates at 4H+1D; its edge is HORIZON-SPECIFIC and lives intraday-to-daily, while daily-bar single factors and daily composites are the weakest sampling of it. This applies the same three survival ingredients — DIVERSIFICATION (equal-weight composite of orthogonal 4H factors), SELECTIVITY (engage only when the composite AND the daily trend agree; flat otherwise), and RISK DISCIPLINE (vol-targeted size, trailing-stop winners) — but at 4H, which (a) matches where BTC's edge empirically exists and (b) gives ~6x more observations than daily, tightening the Sharpe CI toward the 0.95 DSR bar that daily probes (~0.6) provably cannot reach. It is NOT the confluence template sprayed on a ticker (L56 — the fast signal is a multi-factor composite, not a single EMA), NOT a single-signal probe (all ~0.6), NOT the two queued DAILY composites (this is 4H+1D — different horizon/sampling), NOT the regime-decayed convex family, NOT cross-sectional (L52), NOT reversion (L53), NOT microstructure/carry/basis/options (dead/infra). LOW-DOF: 4 pre-registered equal-weight 4H factors (fast momentum, close-location pressure, volume-flow, range-position — all standardized), only 3 tuned params (composite threshold, daily-trend lookback, trailing-ATR multiple). On BTC (sole recent-regime survivor). HONEST framing: this is the most-targeted remaining attempt — it tests whether the survivor's edge is STRUCTURE-general (composite at its horizon reproduces it) or CONFIG-specific (only its exact EMAs work); if the latter, it lands a near-miss, which is decisive information. Risk: ~1.5% equity/trade anchored to the trailing stop; vol-targeted size capped 20% of equity*leverage; 2x leverage cap (reads self.config.leverage).

Hypotheses

Iteration 2 fix for the Layer-3 'No trades produced / 0 evaluated bars' failure. Root cause: the base class buffers at most self._max_bars = 500 primary bars and skips ALL processing while len(self._bars) < min_bars_required(); the previous min_bars_required() returned z_window + longest lookback + 5 = 545 > 500, so _maybe_process_primary() never ran, calculate_signal() was never called and should_enter() was evaluated 0 times (exactly what the diagnostics reported). The only change is min_bars_required() -> 25 (plus the docstring note): all indicator warmup was already internal (deques fed from the first bar, self._ready set only once all four z-scores exist) and should_enter() already refuses to act until self._ready, so no premature trades are possible. Signal logic, entry/exit rules, sizing and imports are untouched, so Layers 1-2 stay green. Dry-run on the actual catalog 4H BTCUSDT bars over the last 2179 bars (the sandbox window): 1761 bars evaluated past internal warmup and the full entry conjunction (|composite| >= 0.55 AND composite sign == 30-day trend sign) fires on 578 of them, so the sandbox will comfortably produce >= 1 trade.

Hypotheses

Momentum/trend-confluence OHLCV composite on BTC — the 0/213 OHLCV / 0/97 HL survival class (L41/L9). Per-trade and drawdown metrics look clean, but the base Sharpe is only 0.77 with sharpe_ci_low 0.1175 (CI floor near zero). After the optimizer selects best-of-~225 trials, expected-max Sharpe from noise alone exceeds 1.0, so this base will fail the deflated-Sharpe gate — exactly as the ~37 sibling daily probes of this identical idea already did this session (Sharpe 0.47-0.64, all DSR-failing). The 4H horizon's tighter CI is not enough to close that gap. Abandon at BACKTEST_REVIEW rather than spend the 2-hour optimization budget to reach the same DSR/OOS collapse.

Implementation

BTC 4H long-short directional strategy: an equal-weight composite of four standardised 4H factors (5-day momentum, 1-day close-location pressure, 7-day volume flow, 10-day range location), traded only when the composite agrees in sign with the 30-day (daily) trend measured on the 4H grid. Vol-targeted risk-first sizing off a 2xATR initial stop, converting to a 5xATR trailing stop once the trade moves one initial-stop distance in favour, with a 30-bar (5-day) max-hold backstop. 2x leverage consumed via the exposure cap.

Verification Results

Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: BTCUSDT.BINANCE-4-HOUR-LAST-EXTERNAL, Bars processed: 2179 Diagnostics: should_enter() returned a side 0 times over 0 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.

Verification Results

Backtest_review/analyst: this is measurable and positive but at ~0.5 Sharpe it will most likely miss the deflated-Sharpe / OOS gates (singles-level, not the survivor's ~2.0). Judge on the full-sample and walk-forward OOS Sharpe versus the DSR hurdle; the hypothesis itself frames a near-miss here as decisive evidence that the survivor's edge is config-specific (its exact EMAs) rather than structure-general, so a fail at the DSR gate is an informative result, not a surprise.

Verification Results

Sharpe ~0.51 is below the DSR 0.95 bar the hypothesis targets -- the deciding analyst/backtest_review concern, but not a code defect. Unlike the daily composites (which were unmeasurable at 2-4 sandbox trades), the 4H port is now genuinely MEASURABLE and POSITIVE: the sandbox produced 51 trades with total_return +8.21%, Sharpe 0.51, profit_factor 1.26, avg_trade_return_pct +0.51%, PSR 0.73, metrics_reliable=TRUE -- the 4H horizon's ~6x observations delivered exactly the measurability the hypothesis argued for, and the sandbox corroborates a positive result rather than contradicting it. BUT the hypothesis's thesis was that the composite at the survivor's 4H horizon would reproduce the survivor's ~2.0 Sharpe and clear the deflated-Sharpe 0.95 gate; instead it lands ~0.5, squarely in the singles-level dead-zone that DSR provably rejects, and the bootstrap Sharpe CI [-1.06, 2.07] still straddles zero. So the 'structure reproduces the survivor' premise is NOT confirmed -- it is the near-miss the hypothesis honestly pre-registered as the likely outcome.

Verification Results

Research Lead/analyst: treat as a stabilised 4H momentum composite gated by the daily trend; its value if any is horizon (4H sampling) + selectivity, not orthogonal factor diversification.

Verification Results

Momentum-correlated composite -- the same Research-Lead novelty note as the daily composites. The four 4H factors (momentum, CLV pressure, OBV flow, range location) are, per the sibling daily analyses, largely views of one momentum state, so this is a stabilised (equal-weight) momentum composite rather than orthogonal diversification. Not a code or hypothesis-fidelity defect (the equal-weight composite is faithfully implemented), but the diversification premise is weaker than the title implies.

Verification Results

No code change warranted; the internal-warmup pattern is the correct way to run a >500-bar-warmup strategy against the base class's buffer cap, and should be reused for any future long-warmup strategy.

Verification Results

The min_bars_required() framework fix is CORRECT and well-engineered -- credit. Iteration 1 stalled because min_bars_required returned 545 > the base class's 500-bar primary-bar buffer cap, so processing never started (the '0 evaluated bars' failure); this matches the 500-bar constraint confirmed in the channel-breakout review. The fix -- min_bars_required()->25 with the real (~420-bar) warmup enforced internally via self._ready (all four z-scores must exist) and should_enter() refusing to act until then -- is verified safe: the strategy maintains its own incremental deques and running sums and never scans self._bars for history (only self._bars[-1] for the current bar in should_exit), so the 500-cap does not affect its state, and no premature trade can occur (should_enter gates on self._ready). The composite, daily gate (sign of the trend_days-day return from 4H closes -- no second feed, no cross-alignment risk), armed trailing stop, and vol-targeting (per-bar stdev x sqrt(6) daily-scaled) are all correct with guards and no look-ahead.

Backtest Review

Healthy sample: 406 trades over 6.6 years (not the <100-trade overfit tell)

Backtest Review

avg_trade_return_pct 0.858% is well above the 0.15% futures fee floor

Backtest Review

Low drawdown (12.1%), PF 1.36, genuine long-short (beta 0.04, positive alpha 0.106) — not leverage-carried beta

Backtest Review

4H sampling gives ~6x more observations than the daily siblings, tightening the Sharpe CI

Backtest Review

Base Sharpe only 0.77 with sharpe_ci_low 0.1175 — CI floor barely clears zero; after best-of-225-trial selection this is essentially certain to fail the deflated-Sharpe gate (DSR>=0.95)

Backtest Review

Momentum/trend-confluence OHLCV composite — the 0/213 (OHLCV) / 0/97 (HL) survival class per L41/L9

Backtest Review

~37 sibling probes of this exact idea (daily) already DSR-failed this session at Sharpe 0.47-0.64; the 4H variant at 0.77 is only marginally better, not enough to cross the DSR bar

Backtest Review

information_ratio -0.47 vs a meaningful benchmark; recent-year Sharpe modest and mean-reverting (2024 ~0)

Outcome Summary

BtcFourHourConvictionCompositeLS was the session's most-targeted final attempt: it took the diversified conviction-composite construction and moved it to 4H+1D — the exact horizon where the sole BTC-confluence survivor (~2.0 Sharpe) lives — betting that the right sampling plus ~6x more observations would tighten the Sharpe CI over the deflated-Sharpe bar that ~37 daily siblings (Sharpe 0.47-0.64) provably could not reach. It came closest of the family — +196.1% over 406 trades, PF 1.36, 0.86% per trade, 12.1% drawdown, positive alpha, and a Sharpe of 0.769 with a CI floor (0.1175) that finally cleared zero — but 0.77 is still far below the ~0.95 DSR gate after best-of-~225-trial deflation, and it remained the same 0/213 OHLCV momentum class with an information ratio underperforming the benchmark. The analyst abandoned it at backtest review as a marginal improvement that still lands short, resolving the session's key question: the survivor's edge is config-specific, not a transferable structure. It never reached optimization, analysis, or risk review.

Outcome Summary

Moving a diversified OHLCV momentum composite to the survivor's actual 4H+1D horizon does lift the raw Sharpe (0.77 vs the daily siblings' 0.47-0.64) via ~6x more observations, but not far enough — the survivor's ~2.0 Sharpe edge is config-specific, not reproducible by a generic composite at the right sampling, so ~0.77 remains structurally below the deflated-Sharpe bar.

Outcome Summary

The analyst abandoned it at backtest review: despite clean per-trade and drawdown metrics and a Sharpe CI floor that cleared zero, a base Sharpe of only 0.77 is essentially certain to fail the deflated-Sharpe gate (≥0.95) after best-of-~225-trial selection (expected-max Sharpe from noise alone exceeds 1.0), it is the same 0/213 OHLCV momentum/trend-confluence survival class, and the ~37 sibling daily probes of this identical idea already DSR-failed this session at Sharpe 0.47-0.64 — the 4H horizon's tighter CI narrowed the gap but not enough to cross the bar.

Outcome Summary

A long-short, single-instrument directional strategy on BTCUSDT.BINANCE 4H bars gated by the daily trend (3 tunable parameters) that ported the diversified conviction-composite construction — an equal-weight composite of four orthogonal 4H factors (fast momentum, close-location pressure, volume-flow, range-position), a flat-on-disagreement daily-trend selectivity gate, and vol-targeted sizing with armed trailing-stop winners — to the survivor's actual 4H+1D horizon, testing whether the sole BTC-confluence survivor's edge was structure-general or config-specific.

Outcome Summary

The backtest (14460 4H bars, 2019-2026) returned +196.1% over 406 trades with profit factor 1.36, avg_trade_return_pct 0.858% (well above the fee floor), low drawdown (12.1%), genuine long-short character (beta 0.04, positive alpha 0.106), and — thanks to ~6x more observations than the daily siblings — a Sharpe of 0.769 with sharpe_ci_low 0.1175 (CI floor just above zero). Information ratio was -0.47 versus the benchmark and recent-year Sharpe was modest/mean-reverting (2024 ~0).
Strategy report

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