Skip to content

View translation

BtcEnsembleVoteDirectionalLS

Hypotheses

BTC Ensemble-Vote Directional, Long-Short (Single-Instrument BTCUSDT.BINANCE Perp — Trade When a MAJORITY of Three Real-Edge Signals Agree: 4H Momentum, 1D Momentum, and Open-Interest Fuel — Soft Vote Not Strict AND, ATR-Trailing, 3-Parameter)

Hypotheses

A LONG-SHORT strategy on the BTCUSDT.BINANCE USD-M perpetual that aggregates the three signals which each showed real directional edge this session via a MAJORITY VOTE (2-of-3) rather than a strict AND: (1) 4H momentum and (2) 1D momentum (the two components of the paper-stage survivor's confluence) and (3) OPEN-INTEREST FUEL (which alone delivered +26% total return, PF 1.16, avg +0.635%/trade). It is a genuinely different AGGREGATION from everything pending or dead: the survivor uses a strict dual-timeframe AND (works but is BTC-specific and overfits when ported/cloned), and the flagged strict-AND momentum+OI-confirm died — a soft MAJORITY VOTE is neither. Voting is a documented ensemble-robustness technique: it prevents any single noisy signal from dominating (the OI-fuel's low win-rate/Sharpe problem, or a momentum whipsaw), lets a strong 2-of-3 consensus through (more trades / better sample than a 3-way AND, avoiding the over-filter that starves the strict version), and diversifies the noise across three semi-independent real-edge sources — the plausible route to a higher, more robust risk-adjusted profile (PF≥1.2) than any single signal or brittle strict-AND achieved. Per L38 it adds a new information source (OI) to momentum. It stays on BTC (the one tradable instrument), single perp execution (dev-safe), pure OHLCV + well-covered open_interest, long-short (fills the 13.4% bucket vs 86.6% long-only), 4H cadence, ATR trail. 3 parameters.

Hypotheses

MEASURED BEFORE SUBMITTING (real BTCUSDT.BINANCE 4H catalog, 14,412 bars, 2019-12 to 2026-07, with the real merged OI feed and the exact shipped exit engine). At the shipped defaults: 390 trades, 41% win rate, +0.534% average net return per trade after a 0.10% round trip, PF 1.27. Exit mix 356 trail / 18 consensus-flip / 16 max-hold, so the trail does ~91% of the work as designed. That clears the PF>=1.2 target the hypothesis set and sits well above the 0.15% per-trade fee floor, on a decisive sample rather than a handful of trades. THE PARAMETER SURFACE IS A PLATEAU, NOT A PEAK. entry_vote 0.45/0.50/0.60 give PF 1.29/1.27/1.27 and mom_slow_bars 42/60 give 1.22/1.27, so I set defaults mid-plateau rather than at the measured optimum (0.45 was marginally best) specifically to avoid handing the optimizer a pre-overfit starting point. Trail is monotone in the expected trend-following way -- 1.5 -> PF 1.16, 2.5 -> 1.17, 3.0 -> 1.27, 4.0 -> 1.38 but at only 242 trades and a 36% win rate -- so I chose 3.0 as the last point that still keeps a large sample rather than 4.0, which buys PF with sample size. TWO FINDINGS THE ANALYST SHOULD SEE. (1) THE OI VOTER CONTRIBUTES, BUT MODESTLY. Ablating it (same engine, voter forced to abstain): with OI 390 trades / +0.534% / PF 1.27 versus momentum-only 328 trades / +0.442% / PF 1.21. So the third voter is worth roughly +0.09% per trade and +0.06 PF, mostly by admitting 62 additional trades. That is a real but small effect, and it is smaller than the hypothesis's framing implies -- partly because the voter is only available 42% of the time and partly because its direction is derived from the momentum consensus sign, so it is a confirmation channel rather than a genuinely independent third source. At a tighter 2.5 trail the contribution disappeared entirely (PF 1.17 with vs 1.16 without), so the benefit is trail-dependent. (2) REGIME DEPENDENCE. The trailing 365-day window produces 61 trades at PF 0.93 / -0.093% per trade -- the recent year is a losing regime for this strategy even though the full history is clearly positive. That is characteristic of trend following, but it means the sandbox/holdout windows may look materially worse than the full backtest, and that should be read as regime rather than as a broken implementation. DATA COVERAGE -- THE HYPOTHESIS'S CLAIM IS WRONG AND I CORRECTED FOR IT. The brief calls open_interest 'well-covered'. It is not: the `open_interest` feed for BTCUSDT holds only ~4 months (2026-03-23 onward), and the multi-year coin-denominated history lives in `metrics` (5-minute, 2020-09 to 2026-07). This strategy therefore MERGES both feeds. Even merged, the series is block-structured with holes up to ~20 days and the OI voter is available on only 42% of bars (6,042 of 14,412) -- and widening the staleness tolerance from 4h to 24h moves that by ~5 points, because the holes are structural. The vote architecture is precisely what makes this survivable: under the strict AND the hypothesis contrasts itself against, 58% of bars would be untradeable; here the ensemble simply runs two-voter with a harder threshold to clear. DESIGN DECISIONS THAT MATTER. The fixed denominator of 3 is the one I would flag as most important: dividing by the number of AVAILABLE voters would make an abstention RAISE the apparent consensus (two agreeing momentum voters scoring 1.0 instead of 0.667), silently promoting a two-voter agreement to a unanimous one exactly when information is missing. Clipping each voter to [-1,+1] is what makes this a vote rather than a weighted sum -- it is the specific mechanism preventing the OI voter's occasional huge z from overriding two disagreeing momentum voters. OI is read COIN-DENOMINATED, never the USD notional series, whose rate of change would contain the price move the momentum voters already measure, making the 'independent' voter partly a copy of the other two. The OI rate is computed as a per-24h rate off an irregular grid (pairing samples and normalizing by actual elapsed time) rather than demanding an exact t-24h anchor, which is the right way to measure a rate from a gappy feed. RISK AND VENUE. Sizing is anchored to a 3-ATR gap floor rather than to the trail itself, so a tight trail cannot produce the largest position where the stop is least enforceable -- the pattern behind the 90%+ drawdowns in this book -- and gross notional is capped at 0.5x equity independently of the equity path, with risk_frac locked so an optimizer cannot buy Sharpe with notional instead of edge. Warmup is 182 bars (~8% of a 365-day 4H window), so there is no starved-sample risk. Per-bar cost is two searchsorted calls against a precomputed prefix-sum grid -- no per-bar rescan of the OI series. Futures (BINANCE USD-M MARGIN) is required rather than preferred: a bearish consensus is traded SHORT, which a CASH spot account cannot do. leverage stays 1.0 and no sizing path reads it, so there is no leverage-set-but-unused mismatch.

Hypotheses

failed deflated Sharpe: DSR=0.148, expected-max=1.122 over 225 trials — the selected Sharpe (0.793) is BELOW the Sharpe you'd expect to find by luck alone, i.e. indistinguishable from best-of-N noise. This is compounded by three unwaivable hard-gate failures: walk-forward is_overfitted=TRUE (IS Sharpe 1.358 collapses to OOS -0.361, with per-window OOS [0.0, -1.76, 0.68]), out-of-sample Sharpe -0.361 ≤ 0, and PBO 0.571 > 0.5. The soft-vote ensemble construction fit the parameter search rather than a persistent edge — the strong in-sample optimized numbers (PF 1.456, Sharpe 0.79) are a multiple-testing artifact the robustness block correctly discounts. Per the overfit → abandon rule this is not a reframe candidate: the momentum-confluence family this belongs to (triple-timeframe, OI-confirm, ETH lead-lag transfer — all in the known-failure set) has repeatedly died overfit, so pointing the same mechanism at another instrument/regime would overfit again, and there is no robust parameter region to iterate toward when 225 trials already selected the overfit best and the sensitivity plateau is in-sample only. avg_trade_return_pct 0.84% clears the fee floor, so this is a pure overfit failure, not fee fragility. Abandon rather than spend the final iteration re-overfitting the same signal.

Implementation

Long/short BTCUSDT.BINANCE USD-M perpetual on 4H bars driven by a soft 2-of-3 majority vote rather than a strict AND. Three voters each return a continuous opinion clipped to [-1,+1]: fast momentum (locked 2-day log return in trailing-sigma units), slow momentum (the 1D-horizon voter, tunable, default 10 days), and open-interest fuel. Because OI is directionless on its own -- rising OI is new leveraged capital fuelling whatever direction the market is going, falling OI is position-unwinding -- the fuel voter votes WITH the momentum consensus when OI is expanding, AGAINST it when contracting, and ABSTAINS when no reading is available. The ballot is (v1+v2+v3)/3 with a FIXED denominator of 3, so abstention costs conviction instead of inflating it. Entry when |ballot| >= entry_vote, which slides continuously from bare majority (0.33) to strict unanimity (1.0). Exits: an ATR trailing stop from the best close since entry (detected intrabar, booked at the close), a full-strength consensus flip, and a 10-day max hold. Sizing is risk-first and gap-aware (1.5% of equity over a 3-ATR excursion), capped at 0.5x equity notional, leverage 1.0. Three tunable parameters: mom_slow_bars, entry_vote, trail_atr_mult.

Verification Results

Regime-dependent edge — sandbox/recent year net negative (avg_trade -0.072%, PF 0.93); high OOS/overfit risk

Verification Results

OI voter is a momentum-derived confirmation channel (~+0.09%/trade), not an independent third edge — disclosed

Verification Results

Limited capacity (~$205k, impact 69.8%) and 42% OI coverage — for risk officer

Backtest Review

avg_trade_return_pct 0.542% — 3.6x the fee floor; genuinely not fee-fragile

Backtest Review

profit_factor 1.192 at the L9 survivor line, positive alpha +0.064, calmar 4.27, contained max_drawdown 15.1%

Backtest Review

Positive in 6 of 7 years; decisive 376-trade sample; genuine long-short (207/169) trend-following profile with 2:1 favorable reward:risk

Backtest Review

The ensemble vote demonstrably improved the risk-adjusted profile over the single OI-fuel sibling (Sharpe 0.289→0.465, DD 17%→15%, alpha near-zero→+0.064) — the robustness thesis is working, not re-overfitting

Backtest Review

Sharpe 0.465 is modest and sharpe_ci_low -0.118 straddles zero — the risk-adjusted edge is not yet proven robust

Backtest Review

2025 was -10.3% with rolling Sharpe to -3.8 mid-year — real regime fragility

Backtest Review

Fundamentally the momentum/OI class; must clear the deflated-Sharpe / walk-forward OOS gates to survive, which is not guaranteed

Backtest Review

information_ratio -0.560 (underperforms buy&hold), though expected for a market-neutral-ish long-short in a bull tape

Analysis

Full-history optimized metrics look good in-sample (PF 1.456, per-trade 0.84%, DD 8.3%) — but this is exactly the best-of-225 selection that the robustness gates exist to discount

Analysis

avg_trade_return_pct 0.84% clears the fee floor, so the failure is overfit/no-OOS-edge, not fee fragility

Analysis

Walk-forward is_overfitted=TRUE: IS Sharpe 1.358 → OOS Sharpe -0.361; OOS windows [0.0, -1.76, 0.68] negative on average

Analysis

PBO 0.5701 > 0.5 — parameter selection more likely than not overfit

Analysis

deflated_sharpe 0.1484 << 0.95 and optimized Sharpe 0.793 is BELOW expected-max-by-luck 1.122 — selected edge indistinguishable from noise over 225 trials

Analysis

is_significant=false; the whole momentum-confluence family (triple-timeframe, OI-confirm, lead-lag) has died overfit before

Outcome Summary

BtcEnsembleVoteDirectionalLS was a thoughtful attempt to combine the three signals that each showed real edge this session — 4H momentum, 1D momentum, and OI-fuel — through a soft 2-of-3 majority vote rather than the brittle strict-AND that had died, with a fixed-denominator ballot so abstaining voters correctly cost conviction. Its initial backtest was the strongest of the session's candidates (+82.6%, profit factor 1.192 at the survivor line, avg trade +0.542%, drawdown 15%, positive in 6 of 7 years) and demonstrably beat the single OI-fuel sibling, so it earned an 'optimize' verdict. Optimization then exposed the familiar failure: the strong in-sample optimized numbers (PF 1.456, Sharpe 0.793) were a multiple-testing artifact — walk-forward flagged overfit with the IS Sharpe of 1.358 collapsing to OOS -0.361, PBO 0.571, and a deflated Sharpe of 0.148 that put the selected Sharpe below best-of-N noise. The analyst abandoned it, noting the whole momentum-confluence family has repeatedly died overfit and there was no robust parameter region left to iterate toward.

Outcome Summary

Ensemble voting genuinely improved the in-sample risk-adjusted profile over any single signal, but a modest Sharpe (0.465) whose CI straddles zero is still too thin to survive optimization — the momentum/OI-confluence family fits the parameter search rather than a persistent edge, and its optimized Sharpe fell below what 225 trials would find by luck alone.

Outcome Summary

Backtest-review passed it to optimization ('optimize'), but the analyst abandoned it there on failed robustness gates: deflated Sharpe 0.148 (optimized Sharpe 0.793 sat below the expected-max-by-luck of 1.122, i.e. indistinguishable from best-of-225 noise), walk-forward flagged overfit with OOS Sharpe -0.361 ≤ 0, and PBO 0.571 > 0.5 — the soft-vote ensemble fit the parameter search rather than a persistent edge.

Outcome Summary

Trade the BTCUSDT.BINANCE perp long/short when a majority (2-of-3) of three real-edge signals agree — 4H momentum, 1D momentum, and open-interest fuel — via a soft continuous vote (not a strict AND), aiming for a more robust risk-adjusted profile than any single signal achieved.

Outcome Summary

The initial backtest was the session's most promising: 376 trades (207 long / 169 short), total return +82.6%, profit factor 1.192 (at the survivor line), avg per-trade return +0.542% (~3.6x fees), positive alpha +0.064, max drawdown 15.1%, positive in 6 of 7 years — an improvement over the single OI-fuel sibling (Sharpe 0.289→0.465). But optimization revealed overfit: in-sample Sharpe 1.358 collapsed to a walk-forward OOS Sharpe of -0.361, PBO 0.5701, and deflated Sharpe 0.148.
Strategy report

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