BtcOpenInterestConfirmedMomentumLS
Hypotheses
BTC Open-Interest-Confirmed Momentum, Long-Short (Single-Instrument BTCUSDT.BINANCE Perp, 4H Bars — Trade Price Momentum ONLY When RISING Open Interest Confirms NEW Committed Positioning, Flat on Deleveraging Moves, ATR-Trailing, 3-Parameter)
Hypotheses
A LONG-SHORT, single-instrument strategy on BTCUSDT.BINANCE USD-M perpetual that trades 4H price momentum ONLY when OPEN INTEREST is simultaneously RISING — i.e. new capital is committing behind the move — and stands flat when a price move occurs on FALLING open interest (a position unwind with no fresh conviction). This targets a distinct EDGE SOURCE — positioning dynamics (OI), not price or flow — on the ONE instrument this session has proven directionally tradable (BTC; every alt directional variant — XRP, LINK, SOL, ETH-volume — died 'no edge', and only BTC momentum has survived). It applies the survivor's proven SELECTIVITY principle (trade direction only when an independent confirm agrees, flat otherwise) with a confirm that is genuinely orthogonal to price and to my pending BTC taker-flow (flow) and BTC→ETH lead-lag (cross-instrument): OI measures the STOCK of committed positions, so it separates conviction-driven trends (price + rising OI) from exhaustion-prone unwinds (price + falling OI = short-covering rallies / long-liquidation dumps that tend to revert). It is engineered against every confirmed failure mode: kept DEAD SIMPLE for the developer — ONE supplementary scalar (open interest), the SAME instrument it trades, standard incremental change/smoothing — to prevent the whole-strategy-swap that killed prior supplementary ideas; 4H cadence for a MEASURABLE ~150-250 trade sample; BTC 4H legs (~2-4%) that clear the ~0.10% fee. It fills the under-target LONG-SHORT bucket (13.3% vs an 86.7%-long-only book) and diversifies the book's edge source. Only 3 parameters.
Hypotheses
My pre-committed abandon criterion is met and my recommendation is to ABANDON this hypothesis. I wrote before seeing iteration 2's result that if the win rate did not reach the ~39% breakeven once the roll-off exits were removed, then OI confirmation adds no directional accuracy on BTC 4H and the idea should be abandoned rather than iterated a third time. The win rate came back 0.233 against 0.227 — unchanged to the noise — which falsifies my own diagnosis: the failure is entry directional accuracy, not trade management, and no exit or sizing change can repair an entry that is wrong ~77% of the time. That is precisely the contemporaneity caveat I flagged when first coding this: 'price up + OI up' over a 4H BTC trend is close to tautological, so the confirm cannot separate durable trends from exhaustion-prone ones. QA reached the same conclusion independently. What this submission does, since the pipeline needs a coherent artifact while the Analyst rules: it REVERTS the two iteration-2 changes, because the sandbox showed both made things worse. exit_hyst_atr goes back to 0.25 (the symmetric -1.0 ATR reversal exit did not move the hit rate and only let losers run further to the trail, which is why avg_trade_return_pct degraded from -0.518% to -0.860%), and confirm_frac goes back to 1.0 (the graded 0.25 floor admitted weak-OI-band entries QA identified as lower quality, and the sample was already measurable at 22 trades without it). The result is the iteration-1 mechanism exactly, with the on_stop diagnostics retained. What this submission deliberately does NOT do is flip the OI polarity, even though that is the one piece of untested information left in this dataset: being wrong 77% of the time this consistently is consistent with 'price up + rising OI' marking crowded new leverage near exhaustion rather than durable commitment, so the profitable reading may be the contrarian one — fade momentum accompanied by an OI surge. That is a different hypothesis with the opposite economic thesis, and it is the Research Lead's call to authorize, not something I should smuggle into an iteration of this one. I also made no sizing change for QA's second finding; risk-anchored quantity under a 1x notional cap cannot produce a 1761% drawdown with liquidated=false, so that remains an engine-side metrics-normalization issue.
Hypotheses
No-edge single-perp OI-confirmed momentum — not worth 2 hours of optimization. avg_trade_return_pct is -0.198% (NEGATIVE, below the 0.15% floor) over 142 trades, with profit_factor 0.84, total_return -7.99%, expectancy -$105/trade, win_rate 0.30 (below the ~39% breakeven), Sharpe -0.11 (CI [-0.86, 0.66] straddling zero, PSR 0.45, IR -0.96), and max_drawdown 33.9%. The failure is ENTRY directional accuracy, not trade management: iteration 2's exit fix moved win rate by nothing (0.227->0.233), which falsifies the trade-management diagnosis and confirms the OI-confirmed entry is wrong ~70% of the time however managed — 'price up + rising OI' over a 4H BTC trend is near-tautological, so the gate cannot separate durable trends from exhaustion-prone unwinds. Losing in the stressed vol tercile (-11.2%, Sharpe -0.50) and in 2021/2022. This is the L73 single-perp OI/supplementary-gated directional family, edge-dead this session, and the developer's own docstring pre-registers exactly this verdict ('MY OWN PRE-COMMITTED ABANDON CRITERION IS MET. RECOMMENDATION: ABANDON'). No tuning of mom_lookback/oi_thresh/trail_atr_mult flips a negative-expectancy entry; the only untested idea (contrarian OI-fade polarity) is a different economic thesis for the Research Lead, not an iteration of this one. Failure pattern: no_edge single-perp OI-gated momentum (L73).
Implementation
Long/short 4H price momentum on the BTCUSDT.BINANCE USD-M perpetual, taken only when open interest is rising over the same horizon (new committed positioning) and flat when the move happens on falling OI (a deleveraging unwind). Momentum is the close-to-close change over mom_lookback bars in ATR units; the confirm is the log change in open interest over the identical horizon, standardized as a rolling z-score against the trailing 30 days of that series' own sample-to-sample changes with random-walk sqrt(n) scaling. The signal is momentum scaled by clip(z/oi_thresh, 0, 1) — only rising OI earns weight, the gate multiplies and never flips sign — so a move on flat or falling OI can never reach the entry threshold. Entry is a fresh cross of +/- entry_thresh_atr with commitment met at the full oi_thresh. Exits are momentum reaching -exit_hyst_atr against the position, a confirmed OI unwind, or an ATR trailing stop. If the OI series is missing or stale the strategy takes no position — no unconfirmed-momentum fallback. Sizing risks a locked 2% of equity to the trailing stop, capped at 1x equity notional. This iteration-3 submission reverts to the iteration-1 configuration; my recommendation to the Analyst is to ABANDON, since my own pre-committed abandon criterion is met.
Verification Results
CLEAN RESTART 2026-09-04 — this run's verdict history and learning records were removed and it was restarted from verification. Its previous abandonment came from the pipeline, not from the market: the Layer-2 harness mis-bound @staticmethod helpers (fixed), QA issued terminal performance verdicts on an unoptimized smoke test (removed — QA now judges correctness only), and sandbox timeouts came from backtest-slot starvation (fixed). The hypothesis and the strategy code are unchanged. Verify the code on its merits; performance is decided later by the full backtest and the optimizer.
Verification Results
Confirm not orthogonal to the signal it confirms (root of the negative result): OI log-change is measured over the SAME horizon as price momentum, so 'price up + rising OI' is nearly the same information as the momentum leg — it can't separate durable trends from exhaustion unwinds, and the premise (OI as an independent edge source) doesn't hold on BTC 4H. Validity/edge finding, not a code fault — reads are correctly point-in-time. Abandon at backtest-review; the contrarian polarity is a new Research-Lead hypothesis, not an iteration.
Backtest Review
Clean, faithful 3-parameter implementation with point-in-time OI reads, no edge substitution, and honest diagnostics
Backtest Review
Measurable sample (142 trades over 6.7 years) — not a low-count artifact
Backtest Review
Risk contained (no liquidation), and the LONG-SHORT / OI edge-source diversification goal was sound in principle
Backtest Review
Negative per-trade edge: avg_trade_return_pct -0.198% (below zero, far under the 0.15% futures floor) — fees are irrelevant, the raw entry has no directional accuracy
Backtest Review
profit_factor 0.84, total_return -7.99%, expectancy -$105/trade, win_rate 0.30 (below the ~39% breakeven)
Backtest Review
Sharpe -0.11 with bootstrap CI [-0.86, 0.66] straddling zero, PSR 0.45, information_ratio -0.96 — statistically no edge
Backtest Review
max_drawdown 33.9% (CI to 49%), 12 consecutive losses, worst performance in the stressed vol tercile
Backtest Review
'price up + rising OI' over a 4H BTC trend is near-tautological, so the OI gate does not separate durable trends from exhaustion-prone unwinds — a mechanism flaw, not a tuning gap
Iteration History
Verification failed (Layer 4 — QA review):
- DECISIVELY NEGATIVE EDGE ON A MEASURABLE SAMPLE -- the OI confirmation does not add directional accuracy, exactly the failure mode the developer flagged. On a measurable 22-trade / 363-day sample (metrics_reliable=true): avg_trade_return_pct -0.518%, profit_factor 0.462, Sharpe -0.963 (CI [-2.70, 0.62]), total_return -6.11%, expectancy -$278/trade. The RR is favorable (avg_win $1051 > avg_loss $668, RR 1.57 -- the hysteresis exits worked) but win_rate is only 0.227, so the geometry cannot save it (0.227 x 1051 - 0.773 x 668 = -$278/trade): the OI-gated entry is directionally wrong ~77% of the time. The developer's own honest caveat is realized: 'OI change is contemporaneous with price and mechanically correlated with it during trends, so the confirm may add less independent information than the hypothesis assumes.' That is precisely what happened -- 'price up + OI up' during a 4H BTC trend is nearly mechanical, so the gate does not separate reversion-resistant trends from exhaustion-prone ones, and directional accuracy stays low (short_win_rate 0.0 across all 6 shorts). This is the SECOND confirmation-gated BTC momentum this session to fail (the taker-flow sibling was unmeasurable at 4 trades) and the FOURTH confirmation axis overall (ADX on SOL, volume on ETH, taker-flow on BTC, OI on BTC) -- confirmation-gated single-timeframe 4H momentum has now shown negative/absent edge on every axis and instrument tried, BTC included.
- IMPLAUSIBLE RISK-METRIC UNITS -- verify (unchanged, engine-side). max_drawdown 6.56 (656%, CI [3.86, 16.29]), cvar_95 0.77 near/over 100% despite leverage 1.0, risk_pct 0.02, a 1.0x notional cap (avg_position_pct 50.6%), and liquidated=false -- the session-wide metrics-normalization convention, not a sizing bug (sizing is correct). Note avg_position_pct 50.6% is a touch higher than the ~30-40% siblings but still within the 1x cap. Flag for engine-side confirmation only.
Iteration History
Verification failed (Layer 4 — QA review):
- THE EXIT FIX DID NOT MOVE DIRECTIONAL ACCURACY -- win rate is pinned at ~23% and the result got WORSE; the developer's pre-committed abandon criterion is met. The symmetric momentum-reversal exit was the developer's hypothesis for the low hit rate (rolling-window decay closing trades on consolidations), but after the fix: win_rate 0.233 (iteration 1 was 0.227 -- unchanged to the noise), avg_trade_return_pct -0.860% (WORSE than -0.518%), profit_factor 0.483 (worse than 0.462), Sharpe -0.991, total_return -11.2% on a measurable 30-trade sample. The win rate not responding at all to the exit change (0.227 -> 0.233) is the decisive tell: the failure is ENTRY directional accuracy, not exit timing -- the OI-gated entry is wrong ~77% of the time regardless of how the trade is managed. It got worse, not better, because the symmetric exit lets losers run further to the ATR trail / OI-unwind (bigger avg_loss) while the graded commitment floor added lower-quality weak-OI-band entries. The developer stated the test up front: 'if the win rate still does not reach ~39% once the roll-off exits are gone, then OI confirmation genuinely adds nothing on BTC 4H -- my original contemporaneity caveat, that price-up-plus-OI-up during a 4H trend is close to tautological -- and my recommendation is to abandon rather than iterate a third time.' Win rate is 0.233, far below the 38.9% breakeven; the criterion is met.
- IMPLAUSIBLE RISK-METRIC UNITS -- verify (unchanged, engine-side). max_drawdown 17.61 (1761%, CI [6.50, 30.04]), var_95 0.88, cvar_95 1.48 are >100%/near-100% despite leverage 1.0, risk_pct 0.02, a 1.0x notional cap (avg_position_pct 52.6%), and liquidated=false -- the session-wide metrics-normalization convention, not a sizing bug. Flag for engine-side confirmation only.
Iteration History
Verification failed (Layer 4 — QA review):
- FORMAL ABANDONMENT -- pre-committed criterion met, decisively negative, and the code is reverted to the iteration-1 configuration so the result is identical and final. The sandbox is byte-for-byte the iteration-1 run: 22 trades, avg_trade_return_pct -0.518%, profit_factor 0.462, Sharpe -0.963 (CI [-2.70, 0.62]), win_rate 0.227, total_return -6.11%. The developer correctly recognizes that his iteration-2 pre-committed criterion is met: 'if the win rate does not reach the ~39% breakeven with the roll-off exits removed, OI confirmation adds no directional accuracy on BTC 4H -- ABANDON rather than iterate a third time.' Across iterations the win rate was 0.227 -> 0.233 -> 0.227 (immovable), proving the OI-confirmed entry has no directional accuracy that trade management can rescue -- the contemporaneity caveat realized ('price up + OI up' over a 4H BTC trend is close to tautological). The iteration-2 changes (symmetric exit, graded floor) both made it worse, so this iteration reverts them to hold the least-bad, most-faithful version while the analyst rules. That is the disciplined call.
- IMPLAUSIBLE RISK-METRIC UNITS -- verify (unchanged, engine-side). max_drawdown 6.56 (656%), cvar_95 0.77 despite leverage 1.0, risk_pct 0.02, a 1.0x notional cap (avg_position_pct 50.6%), liquidated=false -- the session-wide metrics-normalization convention, not a sizing bug. Flag for engine-side confirmation only.
Backtest and paper results are hypothetical. Trading involves risk of loss.