What mean reversion actually means
"It fell a lot, so it should bounce" is not mean reversion — it is hope with a chart attached. The real claim is about stationarity, and it is testable.
Ask ten traders what mean reversion is and you will get ten versions of “what goes down must come up.” That is not a strategy. It is a mood.
The statistical claim underneath the phrase is specific, and worth stating carefully, because the specificity is what makes it possible to be wrong in a useful way.
The claim
A series is mean-reverting if deviations from its long-run level tend to be temporary — if the size of the next move is negatively related to the current distance from that level. Formally, you are describing something closer to an Ornstein-Uhlenbeck process than a random walk:
dX = θ(μ − X) dt + σ dW
Three parameters carry all the meaning:
- μ — the level being reverted to.
- θ — the speed of reversion. Bigger θ means the pull back is faster.
- σ — how violently the series wanders in the meantime.
The half-life of a deviation is ln(2) / θ. That single number is more useful
than most indicators: it tells you how long you should expect to hold before the
thesis is either confirmed or dead. If the half-life on a spread is 40 days and
you are trading it with weekly options, the statistics are not your problem —
your holding period is.
A pure random walk has θ = 0. No pull, no reversion, and the expected value of tomorrow is exactly today no matter how far the series has run. Most individual stock prices, in levels, look far more like this than traders want to believe.
Where reversion actually lives
This is the part people skip. Mean reversion is not evenly distributed across things you can trade. It shows up reliably in a few places and is largely absent in others.
| Series | Typically reverting? | Why |
|---|---|---|
| Index returns over 1–5 days | Weakly, yes | Liquidity provision — someone is paid to absorb forced selling |
| Volatility (VIX, realized vol) | Strongly | Vol is bounded below and mechanically clusters then decays |
| Spreads between related assets | Often | An economic link ties them; arbitrage enforces it |
| Single-stock price in levels | Rarely | Nothing anchors the level; companies compound or die |
| Single-stock valuation multiple | Sometimes | Multiples are bounded in practice, but the anchor drifts |
The pattern: reversion is strongest where something enforces it. An index of 500 names cannot go to zero because of one bad quarter. Volatility cannot stay at 80 forever because the world does not stay that frightening. Two share classes of the same company cannot diverge indefinitely because someone will arbitrage them.
Where nothing enforces the level, the “mean” is a line you drew, not a force.
How to check, cheaply
You do not need to be a statistician to avoid the worst errors. Three checks, in increasing order of effort:
1. Look at the autocorrelation of returns. Not prices — returns. Mean-reverting series have negative first-order autocorrelation in returns. Trending ones have positive. If it is indistinguishable from zero, you have a random walk and no edge from either direction.
2. Compute the Hurst exponent. H < 0.5 indicates reversion, H = 0.5 a random walk, H > 0.5 trending. It is a rough instrument and sensitive to the window you choose, but it is fast and it will stop you from betting on reversion in something that is trending.
3. Run an ADF test. The augmented Dickey-Fuller test asks whether the series has a unit root. Rejecting the null is evidence of stationarity — the thing you actually need. This is the standard tool for validating a pairs spread before you trade it.
from statsmodels.tsa.stattools import adfuller
stat, pvalue, *_ = adfuller(spread, autolag="AIC")
print(f"ADF stat {stat:.3f}, p = {pvalue:.4f}")
# p < 0.05 → evidence the spread is stationary
All three of these are computed on history, which means all three are subject to the objection that history is not the future. A spread that has been stationary for six years can stop being stationary the day one of the two companies is acquired. The tests do not tell you the relationship will hold. They tell you whether it has held, which is strictly better than assuming it.
The error the tests catch
Here is the mistake in its natural habitat: a stock drops 40% on an earnings miss. Its RSI is 19. It is three standard deviations below its 50-day average. Every oversold indicator on the screen is flashing.
None of that is evidence of mean reversion. It is evidence of a large move. The z-score is enormous precisely because the recent standard deviation was computed on a quiet period that just ended. The distribution changed underneath the measurement. What the indicator is really telling you is “something happened here,” and the whole question — the only question — is whether the thing that happened changed μ.
Reversion trades work when price moved and value did not. They fail when both moved and only one of them was visible on your chart.
The practical upshot
Before taking a reversion trade, you should be able to answer, in one sentence each:
- What is the mean, and what enforces it?
- How far is price from it, in units that account for this instrument’s own volatility?
- What is the half-life — how long until this is resolved?
- What observation would tell me the mean itself moved?
If you cannot answer the fourth one, you do not have a stop. You have a hope.
Next: building a z-score screen that surfaces stretched prices rather than recent disasters.
This post is research and opinion for educational purposes only. It is not investment advice and not a recommendation to buy or sell any security. Full disclaimer.