BtcObvVolumeFlowTrendLS
Hypotheses
BTC Volume-Flow (OBV) Trend Directional — Long-Short, Trade the Direction of Cumulative Signed-Volume Flow When It Trends and Confirms, Volatility-Filtered for Fees (Daily Bars, 2-Parameter)
Hypotheses
A LONG-SHORT, single-instrument directional strategy on BTCUSDT.BINANCE (USD-M perpetual), daily bars, whose SIGNAL is derived from VOLUME rather than price — a genuinely under-used OHLCV dimension across my ~30 prior price-based proposals. The signal is On-Balance-Volume (OBV): cumulative signed volume (add the day's volume when the close is up, subtract when down). The PREMISE (a distinct, testable hypothesis): net volume FLOW — accumulation vs distribution — may LEAD price direction, so the trend of OBV predicts subsequent price moves even when price-based moving averages are ambiguous. This is NOT the confluence/price-MA template (L56 — the trend is measured on VOLUME flow, not price; the 0/213 ohlcv class was price-signal-based), NOT magnitude/vol convex (regime-decayed OOS, confirmed dead across tail-regime/vol-expansion/regime-shock baskets), NOT premium/microstructure (regime-decayed / infra-unvalidatable), NOT reversion (L53), NOT carry/basis/liquidation/options (dead). It is also distinct from my two queued bars probes (return-sign STREAK and close-location CLV — both price-position signals; this is a volume-accumulation signal). To avoid the fee graveyard it (a) requires the OBV trend to be strong and PERSISTENT (a smoothed OBV slope beyond a threshold), (b) requires price to CONFIRM the OBV direction (so it does not fight a clear opposing price move), and (c) only trades when realized vol is elevated (so the implied move clears the ~0.10% round-trip). Bars-only → backtestable. Low DOF — 2 tunable parameters (OBV smoothing/slope lookback, vol filter); the direction is the sign of the OBV slope (data, not a knob) → low deflated-Sharpe hurdle (the killer of AAVE/tail-regime). Cadence is moderate-high (OBV-trend engagements ~50-100/yr) → clears the ~100-trade floor that killed single-name convex. On BTC (the only recent-regime survivor asset). HONEST framing: whether volume flow LEADS price on BTC daily is an open, cheap-to-test question; if OBV merely lags price (redundant with a price MA) it will show no incremental edge and die no_edge/fee_edge — a one-backtest resolution. Risk: ~1.5% equity/trade via ATR stop; sizing capped 20% of equity*leverage; 2x leverage cap (reads self.config.leverage).
Hypotheses
Implements the hypothesis as specified: BTC daily bars, long-short, volume-derived signal, strong-and-persistent flow requirement, price confirmation, volatility fee filter, ATR-stop risk, exactly two tunables (obv_lookback, min_atr_pct) with the direction data-determined and flow_thresh/hold_days/ATR params fixed by design to hold degrees of freedom at 2. I answered the hypothesis's own central question before coding — does volume LEAD price or merely restate it? At matched selectivity over 30 days the drift-adjusted excess return is +1.372% (t 5.92) for volume-weighted flow versus +1.162% (t 5.60) for plain 30-day price momentum and only +0.552% (t 3.15) for the identical up-day sign-count WITHOUT volume weighting. So the volume weighting genuinely adds — but flow correlates 0.76 with price momentum and 0.89 with the unweighted count, and at tradeable thresholds the two never point in opposite directions (zero disagreement days), so the honest verdict is volume-weighted momentum with real but modest incremental content, not a leading indicator. That caveat is written into the class docstring rather than buried. I then dry-ran the exact shipped class against real daily catalog bars including volume (stubbing only the NT engine): 2384/2410 distinct signal values (continuous, range -0.624 to +0.578 against a 0.18 threshold), 171 trades (25.9/yr, 171 total clears the ~100-trade floor), avg +1.189% per trade — roughly 8x the 0.15% fee-viability floor — win rate 0.51, profit factor 1.51, +43.9% cumulative, max drawdown only -8.9%. Two properties distinguish this from the streak and CLV probes I submitted alongside it, and both matter for the OOS gates. First, BOTH legs are profitable: long +1.636% per trade (win 0.54, n 91) and short +0.680% (win 0.49, n 80), so the long-short construction is genuinely symmetric rather than a long book with a short drag. Second, the recent regime is POSITIVE — summed trade returns by year are +75.4% (2020), +89.2% (2021), -16.9% (2022), +5.2% (2023), +16.4% (2024), +33.6% (2025), +0.4% (2026 partial) — six of seven years positive including the recent window where the walk-forward OOS and 15-day holdout live. Defaults sit in the interior of a measured plateau: all 15 configs across obv_lookback {15,20,25,30,40} x min_atr_pct {0, 0.02, 0.03} are profitable, and flow_thresh 0.18 is deliberately set off the 0.16 grid peak. Leverage is genuinely consumed (+35.5% at 1x vs +43.9% at 2x on identical trades) because the 0.20x x leverage cap binds at 1x and releases at 2x. Remaining weakness to flag: at ~26 trades/year the 15-day holdout will often contain zero trades, and the price-confirmation gate is near-inert at this threshold (removing it changes per-trade edge from +1.191% to +1.162%), so it is a guard rather than an active filter.
Hypotheses
Volume-weighted momentum with no significant, incremental edge — the probe resolved negative. Full-sample Sharpe is only 0.561 with sharpe_ci_low -0.0239, i.e. the CI already straddles zero at the base config, so after the optimizer's ~225-trial best-of-N deflation the deflated Sharpe cannot clear 0.95 — the same DSR failure that abandoned AAVE (which had a higher raw Sharpe). By the developer's own measurement the OBV flow correlates 0.76 with price momentum and 0.89 with the unweighted sign count, with ZERO disagreement days at tradeable thresholds — it is price momentum in disguise, the 0/213 OHLCV price-trend class (L56/L9), and the volume weighting adds only 'real but modest' content. The continuation direction was data-determined from the full 2019-2026 history (look-ahead into the OOS/holdout period), so honest out-of-sample is worse than shown, and information_ratio -0.635 against a meaningful buy-hold means it underperforms holding BTC. Unlike its siblings it is regime-stable (2025 +8.1%), but that only carries it to the DSR gate, where a 0.56 Sharpe with a CI on zero on an admitted momentum clone fails. No iteration path: the signal is redundant with price momentum and the direction is already fit. Abandon at BACKTEST_REVIEW rather than spend the optimization budget.
Implementation
Long-short directional strategy on BTCUSDT.BINANCE (USD-M perpetual) daily bars whose signal comes from VOLUME rather than price. On-Balance-Volume flow is computed as the volume-weighted net accumulation over the lookback, normalised by the volume that produced it: flow = sum(sign(close change) x volume, obv_lookback) / sum(volume, obv_lookback), which lives in [-1, +1] and is stationary despite years of volume growth (raw OBV levels are not). calculate_signal returns this flow every bar as a continuous, graded value: sign = accumulation vs distribution, magnitude = how one-sided the volume was. Entry requires |flow| >= flow_thresh AND price confirmation (the close-to-close change over the same lookback shares the flow's sign, so the strategy never fights a clear opposing price move), plus an ATR-percent floor as the explicit fee filter so a 7-day follow-through can clear the ~0.10% round trip. LONG on accumulation, SHORT on distribution — the flow-following direction is fixed from the full-sample conditional return, not exposed as a knob. Positions exit after hold_days bars or on an adverse excursion of atr_mult x ATR-percent measured against the bar's own low/high. Sizing is risk-first off that ATR stop (1.5% equity risk per trade), capped at max_notional_frac x leverage of equity.
Verification Results
Backtest_review/analyst: the sandbox is uninformative (breakeven, CI straddles zero) -- judge on the full-sample and walk-forward OOS windows, where the recent calendar-year positivity and symmetric legs are points in its favour versus the streak/CLV probes; confirm the modest edge clears the deflated-Sharpe hurdle rather than being momentum beta.
Verification Results
Significance unconfirmed -- the sandbox is uninformative and the case rests on the full-sample/OOS, the dominant analyst/backtest_review consideration. Unlike the streak and CLV siblings, this probe is BETTER positioned: the developer reports both legs profitable full-sample (long +1.636%, short +0.680%) so it is genuinely symmetric, and 6 of 7 calendar years positive including 2024 (+16.4%) and 2025 (+33.6%), so the recent regime is not clearly negative. BUT the Layer-3 sandbox (trailing 365 days) is essentially flat and uninformative: total_return +0.34%, Sharpe 0.04, profit_factor 1.02, avg_trade_return_pct +0.40% (positive per-trade but noise-level), 27 trades with a Sharpe CI [-1.62, 1.63] straddling zero (PSR 0.52). This does not contradict the positive calendar-2025 (the specific trailing-365d window was flat), but it means the sandbox cannot confirm the edge, and the deflated-Sharpe / OOS gates that killed the convex baskets are the real test.
Verification Results
Research Lead/analyst: treat this as volume-weighted momentum with modest incremental content over plain 30-day momentum; decide whether that increment justifies it as a distinct sleeve, and note the price-confirmation gate is near-inert at this threshold (a guard, not an active filter, per the developer).
Verification Results
The signal is essentially volume-weighted MOMENTUM -- a Research-Lead novelty question, honestly disclosed. The developer's own analysis: the normalised OBV flow correlates 0.76 with 30-day price momentum and 0.89 with the unweighted up-day sign-count, with ZERO disagreement days at tradeable thresholds, so it is 'volume-weighted momentum, not a leading indicator'. The volume weighting does add incremental drift-adjusted edge (t 5.92 vs 5.60 for plain momentum and 3.15 for the unweighted count), so it is not simply the dead price-MA confluence template, but it is a momentum variant with modest incremental content rather than an orthogonal volume-leads-price signal. Not a code or hypothesis-fidelity defect (the hypothesis explicitly framed this as the open question and the answer is reported), but the Research Lead should weigh whether the incremental volume content is distinct enough to be a new family or a re-parameterisation of momentum.
Verification Results
No code change warranted; the implementation faithfully and correctly implements the normalised-OBV volume-flow mechanism. Sparse holdout (~26 trades/yr) -- evaluate the holdout on pooled/OOS statistics, not the near-empty 15-day window (171 lifetime trades clears the ~100 floor, so it is measurable full-sample).
Verification Results
The code is CORRECT -- this fail-risk is significance/novelty, not implementation. Verified: flow = sum(sign(close_chg)*volume)/sum(volume) over obv_lookback is a correct incrementally-maintained normalised OBV flow in [-1,+1] (stationary, avoiding the raw-OBV level-drift problem), with volume guarded finite/non-negative; the price-confirmation reads the close-to-close change over the lookback from completed bars (no look-ahead); the |flow|>=flow_thresh + ATR-pct fee filter + price-confirm entry, the ATR stop against the bar's own low/high, and the leverage-consuming risk-first sizing are all correct with guards; there is no look-ahead (flow/ATR from completed bars, entry at the current close); should_exit closes on the next bar when _side==0 on restart. Same sound structure as the streak/CLV siblings, extended to volume.
Backtest Review
More regime-stable than the sibling probes: 2025 +8.1%, 2026 ~flat, rolling Sharpe positive recently
Backtest Review
PF 1.43, avg_trade_return_pct 1.34%, low max_drawdown 9.6%, decorrelated (beta -0.005)
Backtest Review
Not significant: sharpe_ratio 0.561 with sharpe_ci_low -0.0239 — CI already straddles zero at the base config; after best-of-N deflation it cannot clear the DSR gate (the exact failure that abandoned AAVE)
Backtest Review
Admitted price momentum in disguise: flow correlates 0.76 with price momentum / 0.89 with unweighted sign count, ZERO disagreement days — the 0/213 OHLCV price-trend class (L56/L9)
Backtest Review
Continuation direction fit on the full 2019-2026 sample (look-ahead into OOS/holdout) — honest OOS is worse
Backtest Review
information_ratio -0.635 vs a meaningful buy-hold — underperforms holding BTC
Outcome Summary
BtcObvVolumeFlowTrendLS probed whether volume flow (OBV accumulation/distribution) leads price on BTC daily, trading the flow direction with a fee filter and multi-day hold on the one recent-regime survivor asset. It came back the most regime-stable of the session's bars probes (+44.3%, PF 1.43, 9.6% drawdown, positive 2025) — but the developer's own honest tests showed the flow is ~0.8 correlated with price momentum with zero disagreement days, i.e. volume-weighted momentum whose incremental content is 'real but modest.' The analyst abandoned it at backtest review: a 0.56 Sharpe with a CI on zero and a full-sample-fit direction is a momentum clone in the 0/213 OHLCV class that will fail deflated Sharpe as AAVE did, and it underperforms holding BTC; it never reached optimization, analysis, or risk review.
Outcome Summary
Deriving a signal from volume does not make it a distinct edge if it is ~0.8 correlated with price momentum and never disagrees with it — the honest self-test revealed a momentum clone in the 0/213 price-trend class, and a Sharpe CI on zero with an in-sample-fit direction cannot survive deflated-Sharpe regardless of regime stability.
Outcome Summary
The analyst abandoned it at backtest review: it resolved as volume-weighted momentum with no significant incremental edge — by the developer's own measurement the flow correlates 0.76 with price momentum and 0.89 with the unweighted sign count with zero disagreement days, making it price momentum in disguise (the 0/213 OHLCV price-trend class). A base Sharpe of 0.56 with a CI on zero cannot clear deflated Sharpe after best-of-N (the same failure as AAVE), the direction was fit on the full sample (look-ahead), and it underperforms buy-and-hold.
Outcome Summary
A long-short, single-instrument directional strategy on BTCUSDT.BINANCE USD-M daily bars (2 parameters) whose signal was volume rather than price: a volume-normalized On-Balance-Volume flow (net accumulation vs distribution), traded with the flow direction when it was strong and price-confirmed, gated by a realized-volatility fee filter, held multi-day with an ATR stop — a probe of whether volume flow leads price on BTC daily.
Outcome Summary
The backtest (BTCUSDT.BINANCE 1D, 2409 data days) returned +44.3% over 168 trades with profit factor 1.43, avg_trade_return_pct 1.34%, max drawdown 9.6%, decorrelated (beta -0.005), and — unlike its sibling probes — was regime-stable (2025 +8.1%, 2026 roughly flat). But Sharpe was only 0.561 with a CI already straddling zero (-0.024), and information ratio was -0.635 versus holding BTC.
Backtest and paper results are hypothetical. Trading involves risk of loss.