Strategies
BTC Perp-Premium-Confirmed Momentum, Long-Short (Single-Instrument BTCUSDT.BINANCE Perp, 4H Bars — Trade Price Momentum ONLY When the Perp Mark-vs-Index PREMIUM Confirms Leveraged Conviction in the Same Direction, Flat on Divergence, ATR-Trailing, 3-Parameter)
Outcome: Abandoned
BtcPerpPremiumConfirmedMomentumLS
Faithful, dense implementation: the real premium/funding feed loads and the strategy trades a measurable 271-trade sample over 6.7 years (metrics_reliable=true), so the edge is genuinely measured rather than unmeasured.
Hypothesis
Reliable 271-trade/6.7-year sample with avg_trade_return_pct 0.123% (below the 0.15% Binance USD-M fee floor) and profit_factor 1.0067 — the classic fee_edge signature where the gross edge sits entirely inside the ~0.10% round-trip cost. information_ratio -0.82 vs buy-hold, Sharpe 0.164 (CI low -0.60 straddles zero), and impact_cost_pct 73.97% (capacity only ~$183k) confirm no net edge. Optimization cannot lift a per-trade edge below trading costs, so the QA edge concern is borne out on the full backtest. The premium-confirmation axis adds no directional persistence (near-flat regime spread). Not worth 2 hours of optimization.
Implementation
Verification Results
Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: BTCUSDT.BINANCE-4-HOUR-LAST-EXTERNAL, Bars processed: 14391 Diagnostics: should_enter() returned a side 0 times over 14360 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Confirm in the full backtest logs that _prem_source resolves to premium_index (not funding_rates); if it silently keeps falling back to funding, the strategy is testing a related-but-different feed than the hypothesis intends.
In the Layer-3 sandbox the confirm signal is funding_rates (8h cadence), not the premium_index (mark-vs-index) the hypothesis centers on, because premium_index is not in the sandbox SUPP_KEYS and the synthetic stand-in is too sparse to pass the density gate. The developer documents this and treats funding as the same-quantity 8h time-average of the premium (the hypothesis lists it as the same-quantity alternate), so this is acceptable — but the sandbox edge is measured on the proxy, not the intended feed. Verify the real premium_index loads and is preferred in the full backtest.
No action required unless the framework relies on its own min_bars_required semantics; the override value is reasonable.
min_bars_required(self) overrides the framework method (base_shadow static-analysis warning). It returns max(atr_period+2, mom_lookback+2) which is a sensible warm-up and honors a parameter override, so behavior is correct; noted only because it shadows the base implementation.
Sandbox (unoptimized single draw) shows avg_trade_return_pct 0.024% (< the 0.15% futures fee floor), profit_factor 0.96, negative expectancy (-$26/trade), win_rate 33%, and information_ratio -0.78 vs buy-hold over 374 trades. This is a smoke test on default params, so it does not block, but the mechanism's per-trade edge is thin and the confirm axis in the sandbox is funding_rates (8h) rather than the 1-min premium_index the hypothesis names — the analyst should verify on the full backtest that (a) the real premium_index actually loads and passes the density gate (so the intended feed, not the funding proxy, drives entries) and (b) the ~2-4% BTC 4H legs the hypothesis claims materialize net of the ~0.10% round trip and 7.8% commission drag seen here. Regime spread is small (calm/normal/stressed all near-zero Sharpe), suggesting weak directional persistence in the confirmed signal.
Backtest Review
- Sharpe
- 0.16
- Total return
- 18.57%
- Max drawdown
- 22.94%
- Trades
- 271
- Win rate
- 35.1%
- Profit factor
- 1.01
Faithful, dense implementation: the real premium/funding feed loads and the strategy trades a measurable 271-trade sample over 6.7 years (metrics_reliable=true), so the edge is genuinely measured rather than unmeasured.
Reasonable drawdown control (max_drawdown 22.9%) and near-zero market beta (0.017) — the mechanism does what it claims, it just has no edge.
avg_trade_return_pct 0.123% is BELOW the 0.15% Binance USD-M fee floor — the per-trade edge is smaller than the ~0.10% round-trip cost (L22).
profit_factor 1.0067 with 271 trades — the fee_edge signature: gross edge sits entirely inside commissions and cannot be tuned above cost (L18).
information_ratio -0.82 vs a meaningful buy-hold benchmark; alpha ~0.028 is negligible and Sharpe 0.164 with sharpe_ci_low -0.60 straddles zero.
impact_cost_pct 73.97% and capacity_usd ~$183k — market impact consumes ~3/4 of gross PnL; the edge is real only at toy scale.
Regime spread near-zero across calm/normal/stressed and 4 of 7 years negative — no directional persistence in the confirmed signal.
Iteration History
Verification failed (Layer 3 — sandbox backtest): No trades produced Bar type used: BTCUSDT.BINANCE-4-HOUR-LAST-EXTERNAL, Bars processed: 2182 Diagnostics: should_enter() returned a side 0 times over 2151 evaluated bars -> your ENTRY CONDITION never triggered. Loosen the entry logic / thresholds. Ensure your strategy produces trades with the given data and parameters.
Backtest and paper results are hypothetical. Trading involves risk of loss.