Finding, not used

Order-flow reversal

An hour of unusually aggressive buying is followed by reversal over the next two hours, in 14 of 14 assets — and the entire edge lives inside the spread.

The question: The taker buy ratio came back null daily. Is there no signal, or does daily aggregation destroy it?

What was found

It's the project's first signal that met all four conditions at once: a prior economic mechanism, replication across 14 independent assets, out-of-sample survival, and a specific control for the artifact that would have explained it away. And it still isn't money — which, properly understood, isn't a disappointment but the economically correct reading of the finding itself: the reversal IS the compensation paid to whoever PROVIDES liquidity. Collecting it means posting limit orders and earning the spread, not crossing it. That's a different business.

-14.6-8.3-1.94.410.70 bp1 bp2 bp5 bpcost per unit of turnoverExplorationHoldout 2023+
Sharpe of the net, cross-sectional, dollar-neutral backtest against cost per unit of turnover. Out of sample the curve already crosses zero before 1 basis point.analysis/scripts/phase5b_order_flow_2026-09-07.py
Out-of-sample break-even cost · 0.80 bpCheapest achievable taker fee · 2.00 bp
The whole finding in one line: where it stops being profitable, and where the cost of actually trading begins.analysis/scripts/phase5b_order_flow_2026-09-07.py

Try it yourself

The out-of-sample gross edge was 2.13 basis points per hour, at a turnover of 2.7 per hour. Drag the cost and see what's left.

Net edge (bp/hour) = Gross edge − Cost × Turnover
Net edge per hour

Break-even: the fee it survives up to:

Lower the cost to 0.80: that is exactly the measured break-even point, and it sits below the cheapest taker fee obtainable. The edge exists and lives entirely inside the spread.

Illustrative example numbers for practice — not real data.

How it was tested, step by step

  1. Instead of one data point per day, one per HOUR is used: 536,130 exploration observations across 14 assets.
  2. The correlation between one hour's aggressive buying and the following hours' return is measured at different lags: 0 (contemporaneous), 1, 2 and 3 hours.
  3. The decisive control: separating signal and target by ONE HOUR. A negative correlation at lag 1 can be plain bid-ask bounce, a mechanical artifact carrying no information. At lag 2 that's impossible. The signal survives at lag 2 (IC −0.0157 in exploration, −0.0105 out of sample, with agreement across 14 of 14 assets in sample and 13 of 14 out).
  4. And that control mattered enormously: the reversal conditioned on low volume, spectacular at first sight (IC −0.197, 14/14 in both windows), collapses to −0.032 once separated by an hour. It was almost pure bounce. Without that control, two false findings would have been declared with 990,000 observations behind them.
What this does NOT say. The out-of-sample break-even cost is 0.80 basis points per unit of turnover, at a turnover of 2.7 per hour. The realistic floor for taker fees on Binance spot is 2 to 4 basis points even in VIP tiers, plus spread. Lowering the frequency doesn't save it: at 4 hours the Sharpe goes from 1.22 in exploration to −1.20 in the holdout, and at 12 hours and daily it's negative everywhere. What does change for the project is the reading of the 2026-09-05 daily null: it wasn't absence of signal, it was destruction of the signal by aggregation.

Tracking

This finding does have a real number that gets published and kept updated.

Data last updated on 2026-09-09.

← All research