Momentum and mean reversion appear to contradict each other. One says buy what has been going up, the other says buy what has been going down. Both are well documented. The resolution is that they operate at different horizons and are driven by different mechanisms, and confusing the two is how a strategy ends up fighting itself.
Two clocks
Over three to twelve months, returns continue. That is momentum: information diffuses slowly, investors underreact to it, and the drift persists.
Over days to a few weeks, returns reverse. That is short-term reversal, and De Bondt and Thaler documented the long-horizon version of it in 1985, showing extreme losers subsequently outperform extreme winners.
The mechanism at the short horizon is not underreaction. It is liquidity.
What a sharp drop without news actually is
When a large, heavily covered stock falls 8% in three sessions with no announcement, no downgrade and no sector move, somebody is selling for a reason that has nothing to do with what the company is worth. The candidates are always the same: a fund meeting redemptions, a levered holder facing a margin call, an index deletion forcing mechanical selling, a block being placed, a family office rebalancing.
That seller does not want the best price. They want immediacy — the trade done now, in size — and they are willing to pay for it by accepting a worse price. That payment goes to whoever takes the other side.
Buying the dislocation is not a prediction about the company. It is the decision to supply immediacy to someone who needs it and collect the discount they are paying. Once you see it that way, several design choices stop being arbitrary.
Why this only works in liquid large caps
If the return comes from providing liquidity, the strategy is only viable where the drop is likely to be liquidity-driven rather than information-driven.
In a Nifty 100 constituent, dozens of analysts and thousands of participants watch continuously. Genuine bad news is priced within minutes. A multi-day drop with nothing attached is therefore much more likely to be flow than fundamentals.
In a smallcap, the opposite holds. Nobody is watching. A 20% drop over three days frequently is the news arriving — a receivable gone bad, a customer lost, a promoter selling ahead of a disclosure. Buying it is not liquidity provision, it is buying a repricing you have not read yet. This is the value trap, and mean reversion is the screen that walks straight into it.
The universe restriction is not a nicety here. It is the difference between the mechanism working and the mechanism being absent.
The rolling z-score
“Cheap relative to its own recent history” needs a scale-free definition, because a ₹50 move means something different in a ₹200 stock and a ₹4,000 one. The standard measure is the z-score against the stock’s own trailing window:
z = (close − mean(close, 60)) / stdev(close, 60)
A z of −2 means the price sits two standard deviations below its own sixty-day average, measured in the units of that stock’s own volatility. It is comparable across a ₹200 stock and a ₹4,000 one because both are expressed in their own sigmas.
This is deliberately measured against the stock’s own history, not against its peers. That is what makes it a time-series signal, distinct from the cross-sectional factors that rank a name against everything else in the universe right now. The two answer different questions: “is this stock unusual for itself?” versus “is this stock unusual compared to its peers?”
A practical note: this expression needs two functions — a rolling mean and a rolling standard deviation — which most expression grammars, including ours, will not accept in a single line. Rather than forcing an awkward decomposition, a rolling z-score is available as a first-class rule with the lookback, threshold and direction as parameters.
Threshold and lookback
Both are trade-offs rather than optima.
Threshold. At 1.5 sigma you will catch dislocations early and also catch ordinary volatility, holding a lot of names that were never dislocated. At 3 sigma you will be right more often and trade almost never. Two sigma corresponds to roughly the 2.3% tail under normality, and financial returns have fatter tails than that, so in practice it fires more often than the arithmetic suggests — which is the right side to err on.
Lookback. Sixty trading days is about three months. Shorter windows react faster and are noisier; a twenty-day window will flag anything that moves. Longer windows blur the distinction between a dislocation and a slow derating, because a stock that has fallen steadily for six months eventually establishes a new mean and stops registering as unusual.
Minimum-variance sizing
Having selected fifteen dislocated names, equal weighting them creates a hidden problem: the most dislocated stock is usually the most volatile, so equal rupee weights hand the largest risk contribution to the shakiest holding. The portfolio becomes a concentrated bet on whichever name fell hardest.
Minimum-variance weighting solves for the combination with the lowest total portfolio variance, accounting for how the holdings move together. Two names that fell together for the same reason get treated as one risk rather than two, which is exactly right when a sector-wide flow event has dislocated several stocks at once.
It needs covariance shrinkage to be usable — an unshrunk sample covariance matrix estimated from sixty days of data on fifteen assets is numerically unstable and will produce extreme weights. Shrinkage pulls the estimate toward a simpler structure and is what makes the output sane.
Where it breaks
Mean reversion is short volatility. It works in choppy, range-bound markets and loses in sustained trends, because in a real downtrend every dip is followed by a lower one. The strategy is structurally on the wrong side of a crash. Sizing and a market-level filter, not conviction, are the defences.
It is the highest-turnover template in the equity catalog. Weekly rebalancing on a fast signal means paying costs weekly. Run it once with your real cost assumptions and once with slippage doubled; if the second run is unprofitable, the first was measuring your cost model.
Sector events look like fifteen opportunities. When a policy announcement hits every PSU bank on the same day, the screen sees fifteen independent dislocations. They are one. Minimum-variance weighting mitigates this by recognising the correlation, but does not eliminate it.
Try it
The Oversold Large Caps template screens Nifty 100 constituents for a rolling z-score more than two standard deviations below their own sixty-day mean, applies a rupee-turnover floor, and holds the fifteen most dislocated names under minimum-variance weighting with a weekly rebalance.
Worth testing yourself: run it with the same rules but on the full NSE universe instead of the Nifty 100. The backtest will probably look better, and the difference between those two curves is a measurement of how much of the improvement is edge and how much is the value trap the large-cap restriction was keeping out.
Further reading
- Momentum investing in India: why the best signal skips last month describes the same short-horizon reversal from the other side, as something to avoid rather than to trade
- Delivery percentage: the volume filter only Indian markets have on separating a real move from churn, which matters as much here as it does on a breakout
- The low volatility anomaly for more on the sizing scheme this template borrows
Glossary: z-score, minimum variance, volatility, Bollinger Bands.