Trading strategies·stat-arb

Intraday mean reversion

still alpha
Reviewed 4 June 2026. As of 2026: a real edge still exists for those who can run it well.

Microstructure reversion (the bid-ask bounce and short-horizon overshoots) is mechanical and survives, but it is tiny and brutally cost-sensitive. Niche alpha for low-cost, high-fill-rate setups.

The idea

Intraday mean reversion annotated diagramfigure
Microstructure reversion (the bid-ask bounce and short-horizon overshoots) is mechanical and survives, but it is tiny and brutally cost-sensitive. Niche alpha for low-cost, high-fill-rate setups.

Reference figure. This concept is explained in prose and diagram; the interactive widgets live on the flagship pages it links to under Where this fits.

What is intraday mean reversion?

Intraday mean reversion is the short-horizon tendency for a single instrument's price to over-react and snap back: buy the dip, sell the rip, on a seconds-to-minutes scale. A taker order pushes the price past fair value; it reverts as the book replenishes. Unlike pairs trading, it is not relative value between two instruments; it is single-name reversion driven by microstructure (transient order-flow pressure and the bid-ask bounce), not economics.

Intuition first. A big market buy walks up the order book and prints higher; for a moment the price is above where steady supply and demand would put it. As fresh sell orders arrive to replenish the consumed depth, the price drifts back down. That transient overshoot-and-reversion is the raw material, and it is a fraction of the spread, not a fundamental gap.

The statistical signature is negative short-horizon autocorrelation: an up-tick is slightly more likely to be followed by a down-tick than another up-tick. On longer horizons this washes out (or flips to momentum) so reversion is strictly a short-horizon phenomenon. The contrast with the rest of the stat-arb family is the whole point: pairs trading bets a spread between two names reverts because of an economic link; intraday reversion bets a single price reverts because of transient microstructure pressure. Same words, different mechanism, different risks.

The raw signal is negative one-step autocorrelation in returns: a price change tends to be partly undone by the next one. That is the mechanical reversion you are trying to harvest, and most of it is the bid-ask bounce, not free money.
ρ1=Cov(Δpt,Δpt1)Var(Δpt)  <  0\rho_1 = \frac{\mathrm{Cov}(\Delta p_t,\,\Delta p_{t-1})}{\mathrm{Var}(\Delta p_t)} \;\lt\; 0

Where does the short-horizon reversion come from?

Three sources, in decreasing honesty. The bid-ask bounce: trades alternate between hitting the bid and lifting the ask, so the transaction price oscillates even when fair value is flat; this looks like reversion but is an artefact. Transient order-flow pressure: a large taker temporarily exhausts depth and the price overshoots until replenishing limit orders arrive. And liquidity-provider overreaction: makers skew quotes too far after a print, leaving the mid briefly off fair value.

The bid-ask bounce is mostly an artefact. If fair value is constant but trades land alternately at the bid and the ask, the printed price bounces by the spread, generating spurious negative autocorrelation. Roll (1984) showed this lets you back out the spread from the return autocovariance: the bounce is a measurable property of the transaction series, not a tradable edge. The crucial honest point: a naive "buy when price drops a tick, sell when it rises" strategy that thinks it is harvesting reversion is often just paying the spread to chase the bounce, since you cross to buy at the ask and cross to sell at the bid, losing the spread each round-trip. Where the bounce is actually measured is on bid-ask bounce (IX-BOUNCE).

Roll's measure: when prints alternate across the spread, the spread itself falls out of the lag-one autocovariance of returns. The negative covariance you see in tick data is largely this artefact: recover the spread from it rather than trade it.
spread    2Cov(Δpt,Δpt1)\text{spread} \;\approx\; 2\sqrt{-\mathrm{Cov}(\Delta p_t,\,\Delta p_{t-1})}

Transient order-flow pressure is the real, small edge. A genuinely large taker order consumes more depth than steady-state, pushing price past fair value until replenishing limit orders arrive. The post-impact reversion of the temporary component is real: it is the temporary part of market impact. Capturing it means providing the replenishing liquidity, not paying the spread to chase. Liquidity-provider overreaction is the third strand: makers skew quotes after a print to manage inventory and sometimes over-skew, so a reader of order-flow imbalance and the microprice can detect when the mid is mispriced relative to book imbalance.

Why this is mostly a market-making strategy in disguise

The reversion you want to harvest is the temporary price overshoot from a taker order, and the way to capture it without paying the spread away is to be the resting limit order that fills the overshoot and profits as it reverts. That is market making. Chasing reversion with marketable orders pays the spread twice and usually loses.

The cost trap is arithmetic. Short-horizon reversion is small, a fraction of the spread per round-trip. If you capture it by crossing the spread with marketable orders, you pay the full spread on entry and exit, which typically exceeds the reversion you were trying to harvest. The strategy is net-negative before it starts. The fix is to capture it passively: post a resting buy a tick below the mid; when a taker overshoots down into your order, you fill at a favourable price and profit as the mid reverts up. You earned the spread plus the reversion.

The taker pays the spread; the maker earns it. If the reversion you can capture is smaller than the spread, only the resting order is ahead; crossing the spread to chase the bounce is structurally a loss.
πtaker=rreversions,πmaker=rreversion+s2,r<s\pi_{\text{taker}} = \underbrace{r}_{\text{reversion}} - s, \qquad \pi_{\text{maker}} = \underbrace{r}_{\text{reversion}} + \tfrac{s}{2}, \qquad r \lt s

But the maker also took on the market maker's risks: adverse selection (the overshoot might be information, not noise) and inventory risk. This is exactly the Avellaneda–Stoikov problem. So "intraday mean reversion" as a standalone taking strategy is largely a beginner's mirage; the durable version lives inside market making and the order-flow / information family, where the reversion is harvested as a maker and filtered by toxicity (VPIN) so you fold the moves that are information, not noise. The one exception: genuinely fast, low-cost cross-sectional reversion (residual reversion across hundreds of names at once) can be traded by takers when the per-name edge is tiny but diversified, but that is a capital- and cost-engineering problem, and crowded.

Is intraday mean reversion profitable in 2026?

Marginally, and only with very low costs and high fill rates. The pure taker version (chase the dip with marketable orders) loses to the spread. The passive version, harvested as a market maker and filtered for toxicity, is a genuine but small and crowded edge. Most of the "reversion" a naive backtest finds is the bid-ask bounce: an artefact, not P&L.

Dead, as a naive taker strategy. "Buy on a down-tick, sell on an up-tick" with marketable orders pays the spread each way and is net-negative in any liquid market. Live, as passive liquidity provision with adverse-selection filtering, but then it is market making, with all its infrastructure and discipline costs, not a standalone signal.

The backtest warning. Reversion strategies are the single most common victim of backtest sins: assuming you can fill at the mid (you can't), ignoring the spread you pay to enter and exit, and mistaking the bid-ask bounce for tradable reversion. Model fills at the touch you actually trade, and the spread you cross, and most intraday-reversion edges vanish. For the wider verdict, see is HFT still profitable in 2026.

Worked example

A synthetic intraday-reversion check, as of 2026 (illustrative numbers). An instrument with mid =100.00= 100.00 and spread =0.02= 0.02 (best bid 99.99, best ask 100.01). A large taker buy walks the book and prints the mid up to 100.04, a +0.04+0.04 overshoot. Over the next 20 seconds the mid reverts to 100.01 as fresh asks replenish: a +0.03+0.03 reversion of the temporary component, with the remaining +0.01+0.01 permanent (i.e. information).

The taker attempt. You try to short the overshoot at 100.04, but to sell now you must hit the bid at 100.02 (the book has moved), and to cover later you lift the ask at 100.02. After paying the spread both ways your "reversion" trade nets roughly 0.01-0.01 to 0.000.00: the spread ate the edge.

The maker attempt. You had a resting sell at 100.03 before the overshoot. The taker lifts it, so you sell at 100.03, then buy back passively at 100.01 as it reverts, for +0.02\approx +0.02 net. But roughly 30% of the time the "overshoot" was real information and the price keeps rising, so you are now short into a rally (adverse selection).

Your realised maker edge is the reversion captured when the move is noise, minus the continuation loss when it is information, and it is positive only if your toxicity filter keeps the probability of information low. A backtest that fills at the mid would book the full +0.03 on the taker attempt: a phantom edge, the bid-ask bounce masquerading as alpha.
E[π]=rP(noise)captured reversionP(info)continuation loss\mathbb{E}[\pi] = \underbrace{r \cdot P(\text{noise})}_{\text{captured reversion}} - \underbrace{\ell \cdot P(\text{info})}_{\text{continuation loss}}

The live measurement of the bounce (the artefact that contaminates all of this) lives in IX-BOUNCE on bid-ask bounce, and the realistic-fill toggle that kills the phantom edge is in IX-BACKTEST on backtesting & simulation. Numbers are synthetic and illustrative; real reversion magnitudes, decay times and the noise/information split must be measured per instrument and dated, with fills modelled at the side you actually trade. Educational only, not investment advice.

Where this fits