CVD & Order-Flow Research Report

Four hypotheses tested on Binance 1-minute klines · exploratory, single-regime (2026) · generated 2026-10-09

Headline

NO EDGE (H0)  All four order-flow hypotheses tested today were rejected. Every preregistered pass/fail criterion failed in every study, and no parameter region in any robustness sweep was stable.

Data covers 2026-01-01 → 2026-09-30 only for the tested universe (BTCUSDT is the sole symbol with multi-year history). Every verdict is therefore exploratory: a negative is as unconfirmable out-of-sample as a positive would have been.

Summary of tested hypotheses

#HypothesisUniversePrimary spec Design ICTest IC [95% CI]Verdict
1Spot–perp CVD divergencetop-10 crypto (spot∩perp) 1h · 4h · w=60+0.0248 −0.0040 [−0.0239, 0.0170]NO EDGE
2H1 — Price absorptiontop-10 crypto perps 1h · 4h · W=720+0.0049 −0.0187 [−0.0379, 0.0007]NO EDGE
3H2 — Failed liquidity sweepstop-10 crypto perps 1h · 4h · L=48+0.0495 −0.0022 [−0.0807, 0.0654]NO EDGE
4H3 — Flow-confirmed breakouts62 crypto perps 1h · 4h · L=48, w=4−0.0296 −0.0146 [−0.0504, 0.0259]NO EDGE
4bH3 — same, +TradFi perps100 symbols 1h · 4h · L=48, w=4−0.0107 −0.0057 [−0.0362, 0.0243]NO EDGE

Jump to: Common methodology 1 · Divergence 2 · Absorption 3 · Sweeps 4 · Breakouts Synthesis Recommendation Reproducibility

Common methodology

Data & features

Causality & timing contract

Evaluation

Universal caveat: single regime (2026), in-sample. No cross-regime out-of-sample exists for this universe.

1 · Spot–Perp CVD Divergence

status: completeexploratoryNO EDGE

Question. Does divergence between spot taker flow and perp taker flow predict forward returns? A move led by spot may be “real” demand; a move led by perps may be crowded leverage prone to reversal.

Signal. D = z(spot rolling flow) − z(perp rolling flow), each flow a 60-bar rolling sum z-scored over a 720-bar window. Events = |D| ≥ trailing q95. Predicted: sign(D) → forward return (spot-led ⇒ continuation).

Data / spec. Top-10 crypto cross-market (present in both spot and perp top-100); 1h bars (from 1m); primary horizon 4h; market-neutral (cross-sectionally demeaned) forward returns; 12 bps.

Primary result — pooled rank IC(D, forward return)

PeriodPooled ICCross-sectional ICn
Design (Jan–Apr)+0.0248+0.006425,920
Test (May–Sep)−0.0040−0.003733,205

Test 95% block-bootstrap CI: [−0.0239, +0.0170] (spans zero). Design IC crossed the 0.02 bar and then flipped sign out-of-sample.

Disconfirming evidence

Artifacts: reports/spot_cvd_divergence_study.md, reports/spot_cvd_divergence_results.md.

2 · H1 — Price Absorption

status: completeexploratoryNO EDGE

Question. When aggressive selling produces unusually little downward price movement (absorption), does price subsequently outperform comparable strong-selling events? Symmetric for buying.

Signal. Rolling OLS r ~ α + β·f over a trailing 720-bar window (f = quote flow / trailing activity). Residual s = r − r̂ (impact surprise); absorption score A = −sign(f)·s, z-scored. Strong-flow events = |f| ≥ trailing q90. Outcome = oriented forward return y = −sign(f)·fwd_ret. A regression-based impact model is used deliberately instead of a naive return/flow ratio (unstable as flow → 0).

Data / spec. Top-10 crypto perps; 1h; primary horizon 4h; 12 bps.

Primary result

PeriodPooled IC(A, y)n
Design+0.004923,830
Test−0.018736,670

Test CI [−0.0379, +0.0007]; strong-flow-only test IC −0.0047. Horizons: 1h −0.0171 · 4h −0.0187 · 24h +0.0014 · 3d −0.0035.

Matched control & regression

  • Matched spread (absorbed − control): +17.2 bps, CI [−7.6, +37.0] — includes zero.
  • Regression A coefficient ≈ 0.00001, CI [−0.00039, +0.00042] — zero.
  • Per-symbol: 8 of 10 negative.

Robustness

18 cells (timeframe × window × quantile): test IC negative in every cell; design IC positive in most → systematic design→test sign flip.

Artifacts: reports/cvd_absorption_study.md, reports/cvd_absorption_results.md, reports/cvd_absorption_findings.md.

3 · H2 — Failed Liquidity Sweeps

status: completeexploratoryNO EDGE

Question. When price sweeps a prior swing level and closes back inside (a failed sweep / stop-run), does the magnitude and direction of aggressive flow during the sweep predict reversal strength?

Signal. Level = trailing prior-range extreme over 48 bars (excludes the current bar). Failed sweep = wick beyond the level, close back inside (24-bar cooldown). Aligned flow af = −d·F / activity (spends in the sweep direction), z-scored; outcome = oriented reversal return y = d·fwd_ret. Hypothesis: large aligned flow (trapped chasers) ⇒ stronger reversal.

Data / spec. Top-10 crypto perps; 1h; 4h; 1,262 events (508 design / 754 test).

Primary result

PeriodEvent pooled IC(af, y)n
Design+0.0495508
Test−0.0022754

Test CI [−0.0807, +0.0654]. Horizons: 1h −0.0067 · 4h −0.0022 · 24h +0.0068 · 3d +0.0063.

Matched control & regression

  • Matched spread (high − low af): −32.0 bps, CI [−125.4, +46.0] — wrong sign, includes zero.
  • Regression af coefficient ≈ 0.00002, CI [−0.00070, +0.00080].
  • Per-symbol wildly mixed (BTC +0.152, ZEC −0.172; n≈80) — noise.

Robustness

18 cells (timeframe × lookback × flow-window): design and test signs disagree across cells; no stable region. The design 0.0495 reverses in test.

Artifacts: reports/cvd_failed_sweeps_study.md, reports/cvd_failed_sweeps_results.md, reports/cvd_failed_sweeps_findings.md.

4 · H3 — Flow-Confirmed Breakout Continuation

status: completeexploratoryNO EDGE

Question. Do breakouts supported by persistent same-direction aggressive flow continue more than breakouts with weak flow or immediate flow reversal — after accounting for the breakout itself?

Signal. Breakout = close beyond the trailing 48-bar prior-range extreme (excludes current bar; 24-bar cooldown). Aligned, activity-normalised flow over 4 bars, z-scored (flow_align_z) plus signed persistence d·mean(sign(delta)). Outcome = oriented forward return, continuation-failure flag, MFE/MAE.

Prior-work overlap. breakout_regime_study.md already tested the single-bar filter cvd_20>0 (validate lift 1.07, not significant). H3 adds multi-bar persistence, displacement, failure-rate outcomes, a wider universe, and an explicit incremental-vs-price-only test.

Primary result — two universes

UniverseEventsDesign ICTest IC [95% CI]
62 crypto perps6,806−0.0296−0.0146 [−0.0504, 0.0259]
100 symbols incl. TradFi9,469−0.0107−0.0057 [−0.0362, 0.0243]

62-crypto horizons (test IC): 1h −0.0179 · 4h −0.0146 · 24h −0.0115 · 3d −0.0086 — negative everywhere.

Matched control & regression (62 crypto)

  • Matched spread (high − low alignment): +21.8 bps, CI [−27.6, +62.7] — includes zero, inconsistent with the negative IC.
  • Incremental regression flow coefficient −0.00093, CI [−0.00235, +0.00047] — zero/negative.
  • Failure rate falls with alignment (0.588 → 0.441 across quintiles) but returns are non-monotone/inverted — no tradable structure.

Robustness

27 cells: at 15m/1h both design and test IC consistently negative; at 4h design is strongly negative (−0.15…−0.21) while test flips small-positive — instability, not a stable region.

Artifacts: reports/cvd_breakout_flow_study.md, reports/cvd_breakout_flow_results.md (+_all), reports/cvd_breakout_flow_findings.md.

Synthesis — what the four negatives say together

Interpretation. At 1-minute→1-hour resolution, net taker flow (CVD) shows no incremental predictive value for future returns in this sample. The proxy nature of CVD (no maker intent, no hidden liquidity) plus the single-regime sample are the two standing limitations.

Recommendation

  1. Do not re-tune any of these. The sweeps already show no stable region; changing thresholds to manufacture a positive would be curve-fitting, not evidence.
  2. Highest-value next step: build 2024–2025 perp 1m history (~2 h, ~3 GB; the downloader supports it). Four hypotheses have been judged on a single regime; without out-of-sample data, negatives are as unconfirmable as positives.
  3. Question whether 1m-bar taker-flow CVD carries incremental information at all. Four independent features show none here. Before more variants, either raise information content (tick/aggTrades — costly, lowers breadth) or move to a structurally different source (funding/basis carry, cross-sectional relative strength).
  4. If continuing the H-series: H5 (impact asymmetry) is best kept as an execution/cost model; H6 (spot lead–lag) is the last distinct flow test but risks re-treading the failed divergence study.
  5. Do not buy tick data yet — the binding constraints are regime breadth and effect existence, not resolution.

Reproducibility

# 1 · Spot–perp divergence
python scripts/divergence_study.py

# 2 · H1 price absorption
python scripts/absorption_study.py

# 3 · H2 failed sweeps
python scripts/sweep_study.py

# 4 · H3 flow-confirmed breakouts
python scripts/breakout_study.py                    # 62 crypto perps
python scripts/breakout_study.py --include-noncrypto # 100 symbols

# full test suite (causality, alignment, synthetic edge/no-edge)
uv run pytest -q

Document & artifact map

StudyDesignResultsFindingsMachine outputs
Divergencespot_cvd_divergence_study.mdspot_cvd_divergence_results.md——
H1 Absorptioncvd_absorption_study.mdcvd_absorption_results.mdcvd_absorption_findings.mdexperiments/reports/absorption/
H2 Sweepscvd_failed_sweeps_study.mdcvd_failed_sweeps_results.mdcvd_failed_sweeps_findings.mdexperiments/reports/sweeps/
H3 Breakoutscvd_breakout_flow_study.mdcvd_breakout_flow_results.mdcvd_breakout_flow_findings.mdexperiments/reports/breakouts/

All paths under reports/ unless noted. No prior reports were overwritten; no existing research code behaviour was changed. Reports were generated by the scripts above without inspecting results first (methods frozen in the design docs).


quant-lab · personal crypto research environment · this report is a research artifact, not investment advice; no live-trading connector is involved.