Four hypotheses tested on Binance 1-minute klines · exploratory, single-regime (2026) · generated 2026-10-09
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.
| # | Hypothesis | Universe | Primary spec | Design IC | Test IC [95% CI] | Verdict |
|---|---|---|---|---|---|---|
| 1 | Spot–perp CVD divergence | top-10 crypto (spot∩perp) | 1h · 4h · w=60 | +0.0248 | −0.0040 [−0.0239, 0.0170] | NO EDGE |
| 2 | H1 — Price absorption | top-10 crypto perps | 1h · 4h · W=720 | +0.0049 | −0.0187 [−0.0379, 0.0007] | NO EDGE |
| 3 | H2 — Failed liquidity sweeps | top-10 crypto perps | 1h · 4h · L=48 | +0.0495 | −0.0022 [−0.0807, 0.0654] | NO EDGE |
| 4 | H3 — Flow-confirmed breakouts | 62 crypto perps | 1h · 4h · L=48, w=4 | −0.0296 | −0.0146 [−0.0504, 0.0259] | NO EDGE |
| 4b | H3 — same, +TradFi perps | 100 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
delta = 2·taker_buy_volume − volume, quote_delta = 2·taker_buy_quote_volume − quote_volume. Working in quote (USDT) units for cross-asset comparability. CVD is taker flow only — it cannot see maker intent, hidden liquidity, or cancellations.Universal caveat: single regime (2026), in-sample. No cross-regime out-of-sample exists for this universe.
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.
| Period | Pooled IC | Cross-sectional IC | n |
|---|---|---|---|
| Design (Jan–Apr) | +0.0248 | +0.0064 | 25,920 |
| Test (May–Sep) | −0.0040 | −0.0037 | 33,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.
Artifacts: reports/spot_cvd_divergence_study.md, reports/spot_cvd_divergence_results.md.
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.
| Period | Pooled IC(A, y) | n |
|---|---|---|
| Design | +0.0049 | 23,830 |
| Test | −0.0187 | 36,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.
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.
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).
| Period | Event pooled IC(af, y) | n |
|---|---|---|
| Design | +0.0495 | 508 |
| Test | −0.0022 | 754 |
Test CI [−0.0807, +0.0654]. Horizons: 1h −0.0067 · 4h −0.0022 · 24h +0.0068 · 3d +0.0063.
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.
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.
| Universe | Events | Design IC | Test IC [95% CI] |
|---|---|---|---|
| 62 crypto perps | 6,806 | −0.0296 | −0.0146 [−0.0504, 0.0259] |
| 100 symbols incl. TradFi | 9,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.
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.
breakout_regime_study already found the cvd_20>0 breakout
filter insignificant; H3's result is directionally the same.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.
# 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
| Study | Design | Results | Findings | Machine outputs |
|---|---|---|---|---|
| Divergence | spot_cvd_divergence_study.md | spot_cvd_divergence_results.md | — | — |
| H1 Absorption | cvd_absorption_study.md | cvd_absorption_results.md | cvd_absorption_findings.md | experiments/reports/absorption/ |
| H2 Sweeps | cvd_failed_sweeps_study.md | cvd_failed_sweeps_results.md | cvd_failed_sweeps_findings.md | experiments/reports/sweeps/ |
| H3 Breakouts | cvd_breakout_flow_study.md | cvd_breakout_flow_results.md | cvd_breakout_flow_findings.md | experiments/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.