Skip to content

View translation

BtcCvdOrderFlowTrendLS

Hypotheses

BTC Cumulative-Volume-Delta Trend, Long-Short (Single-Instrument BTCUSDT.BINANCE Perp — NEW Information Source: Trade WITH the Trend of Aggressive Taker Order-Flow (CVD), CONTINUOUS Not Event-Gated, Price-Aligned, ATR-Trailing, 3-Parameter)

Hypotheses

A LONG-SHORT MOMENTUM strategy on the BTCUSDT.BINANCE USD-M perpetual driven by a genuinely NEW, momentum-aligned INFORMATION SOURCE — CUMULATIVE VOLUME DELTA (CVD = running sum of taker-buy minus taker-sell volume) from the taker_ratio/aggressive-flow feed, per L38. It rides the TREND of aggressive order flow, aligned with the ONE edge that survives here (momentum/continuation), not a fade. It is deliberately constructed to fix why my earlier taker idea died: that one used a STRICT EXTREME-EVENT confirm gate and produced only 4-10 trades ('coverage ceiling'); this uses a CONTINUOUS CVD trend evaluated every bar, which consumes all available data and yields a measurable trade count (~100-200) from the same feed — testing whether the taker data supports a continuous signal at all. Thesis: sustained net aggressive BUYING (rising CVD) reflects informed/urgent demand consuming resting liquidity, which pushes price and tends to continue short-term; sustained aggressive SELLING (falling CVD) the reverse. Trading WITH the CVD trend, filtered by price agreement, captures that order-flow-driven continuation. It trades the liquid BTC perp (dev-safe, signal=execution), single instrument, long-short (fills the 13.4% bucket vs 86.6% long-only), 4H cadence, ATR trail to ride continuation. It is distinct from all pending (basis/funding/OI/DVOL regime-continuations use positioning/vol feeds; this uses aggressive TRADE FLOW). 3 parameters.

Hypotheses

Iteration 2 fixes the single QA failure: the coverage ceiling. The signal logic, sizing and exits are unchanged (they passed Layers 1-3); the only change is the data source for aggressive taker flow. taker_ratio on disk for BTCUSDT spans just 1774296000000-1785398400000 ms (~4 months), which capped the run at 16 trades and made it unmeasurable. The metrics feed (data/supplementary/metrics/BTCUSDT) carries taker_long_short_vol_ratio -- the identical taker buy/sell volume ratio -- at 5-minute granularity from 2020-09-01 through 2026-07-26, so _load_taker_flow now merges both feeds into one timestamp-deduped series (taker_ratio preferred where it exists, metrics filling everything else). That extends the tradeable window from ~4 months to the full price history, lifting the expected trade count from 16 to a measurable few hundred without changing the edge being tested. Because the two feeds carry different auxiliary fields (metrics has no buy/sell volumes), the within-bar aggregation switched from volume-weighted to a simple mean of sub-bar imbalances -- otherwise taker_ratio rows (weight ~3000) would swamp metrics rows (weight 1) in the overlap. CVD still scales by the bar volume, so the delta magnitude is unchanged.

Hypotheses

No edge net of costs — decisively measured. Now that the coverage ceiling is fixed (309 trades across the full history, metrics_reliable=true), the continuous CVD order-flow signal shows avg_trade_return_pct -0.055% (the average trade LOSES money as a % of notional, below the fee floor and below zero — disqualifying per L22), profit_factor 1.048 (breakeven, gross wins ≈ gross losses), Sharpe 0.072 with a 95% CI [-0.54, 0.74] that straddles zero, information_ratio -0.687, and total_return 6.8% over ~6.4 years (~1% CAGR). Performance is a regime coin flip (2021 -9.9%, 2023 -11.4%, 2026 -5.2%; rolling Sharpe swings +8 to -9) with no persistent signal. This is the OHLCV+taker-flow momentum/continuation class (L9, zero survivors), and the enlarged sample proves the aggressive-flow feed does not support a continuous directional edge. Optimizing best-of-225 trials cannot create an edge that 309 trades across every regime show is absent; it would only overfit noise. Abandon rather than spend 2 hours.

Implementation

Long-short CVD order-flow trend on the BTCUSDT.BINANCE perp (4H). Builds Cumulative Volume Delta from aggressive taker buy-vs-sell imbalance, merged from TWO feeds that carry the same quantity: metrics.taker_long_short_vol_ratio (5-minute, multi-year history) and taker_ratio buy/sell volumes (recent months). Signal is the continuous z-score of the 12-bar CVD change vs its own 60-bar distribution, computed every bar. Enters WITH the flow trend when |z| >= entry_z and price agrees over the same lookback; exits on an ATR trailing stop or a flow-trend flip. Sized at 1% equity risk per ATR-trail stop distance with an independent gross-notional cap.

Verification Results

Verification failed (Layer 4 — QA review): - UNMEASURABLE VIA THE TAKER COVERAGE CEILING, AND NET-NEGATIVE ON THE WINDOW THAT EXISTS. Only 16 trades over 363 days -- and the cause is the developer's own disclosed caveat: Binance's taker buy/sell volume (the taker_ratio feed) history is shallow, spanning roughly the last FOUR MONTHS, so the strategy can only trade in that short window regardless of the 363-day price span. The continuous-CVD reframe correctly consumes all available data every bar (fixing the prior taker idea's event-gate that produced 4-10 trades), but it cannot manufacture history the feed does not have -- so the coverage ceiling that killed the earlier taker strategy and that L38 flagged recurs here as a data property. On the ~4-month window it does cover, the result is net-negative: total_return -3.29%, profit_factor 0.575, Sharpe -0.629 (CI [-2.41, 0.95]), win_rate 0.3125, avg_trade_return_pct -0.865%, expectancy -$207/trade. So it is both unmeasurable (16 trades) and, on the available data, no edge.

Backtest Review

The coverage-ceiling fix worked: 309 trades (vs 16 prior) is now a statistically measurable sample

Backtest Review

Signal fires continuously as designed and max_drawdown 14.9% is contained

Backtest Review

avg_trade_return_pct -0.055% — the average trade LOSES money net of fees (below the fee floor AND below zero)

Backtest Review

profit_factor 1.048 is essentially breakeven (gross wins ≈ gross losses), far below the 1.2 meaningful-edge line

Backtest Review

Sharpe 0.072 with sharpe_ci_low -0.54 — not distinguishable from zero; information_ratio -0.687

Backtest Review

total_return 6.8% over ~6.4 years (~1% CAGR); annual returns are a coin flip (2021 -9.9, 2023 -11.4, 2026 -5.2) with rolling Sharpe swinging +8 to -9 — no persistent edge

Backtest Review

OHLCV+taker-flow momentum/continuation class (L9), which has zero survivors

Outcome Summary

BtcCvdOrderFlowTrendLS was built to fix why an earlier taker-flow idea died: instead of a strict extreme-event gate that produced only 16 trades, it evaluated a continuous Cumulative Volume Delta trend every bar, merging two aggressive-flow feeds to span the full history. The fix succeeded on its own terms — 309 statistically measurable trades — but that larger sample simply proved the signal has no edge: the average trade lost money net of fees (-0.055%), profit factor was a breakeven 1.048, and Sharpe (0.072) was indistinguishable from zero with returns swinging randomly across regimes. The reviewer abandoned it at backtest-review, noting this OHLCV+taker-flow momentum/continuation class has zero survivors and that best-of-225 optimization trials cannot manufacture an edge that 309 trades across every regime show is absent. The honest payoff was a clean falsification: the aggressive-flow feed does not support a continuous directional edge on BTC.

Outcome Summary

Fixing a coverage ceiling to get a measurable sample is valuable precisely because it lets you decisively falsify the signal — here 309 trades across all regimes proved the aggressive-flow feed does not support a continuous directional edge, and a breakeven profit factor with a negative per-trade return is not something optimization can rescue.

Outcome Summary

It was abandoned at the pre-optimization BACKTEST_REVIEW gate: with the coverage ceiling fixed and 309 reliable trades across every regime, the continuous CVD order-flow signal demonstrably had no edge net of costs (negative per-trade return, breakeven profit factor, Sharpe indistinguishable from zero), and performance was a regime coin flip — so optimization would only overfit noise.

Outcome Summary

Trade the BTCUSDT.BINANCE perp long/short WITH the trend of aggressive taker order flow, using Cumulative Volume Delta (running taker-buy minus taker-sell volume) as a continuous, every-bar momentum signal filtered by price agreement.

Outcome Summary

The coverage fix worked — the sample grew from a prior 16 trades to a measurable 309 (142 long / 167 short) — but the signal showed no edge: avg per-trade return -0.055% (the average trade loses money net of fees), profit factor 1.048 (breakeven), Sharpe 0.072 (CI [-0.54, 0.74] straddling zero), information ratio -0.687, and just +6.8% total return over ~6.4 years (~1% CAGR) with max drawdown 14.9%.
Strategy report

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