Quant Memo

Residual Momentum (Factor-Neutral Trend in Single Names)

Rank stocks on the part of their past return that factor exposures cannot explain, so you buy real winners instead of accidental bets on beta, size or sector.

backtestUpdated 2026-07-13

Overview

Plain price momentum buys the stocks that went up the most over the last year. The problem is that you often are not buying skill or persistent demand, you are buying whatever happened to be exposed to the thing that went up. If energy stocks doubled, plain momentum hands you an energy portfolio. If high-beta names ran, plain momentum hands you a leveraged bet on the market.

Residual momentum fixes this by asking a sharper question: after stripping out what a stock's known risk exposures already explain, how much of its move is left over? That leftover piece is the residual. You rank stocks on the residual instead of the raw return, and you end up owning the names that genuinely outran what their risk profile predicted.

The practical payoff is a smoother ride. Residual momentum historically delivered a similar or better return to price momentum with noticeably less volatility, because it is not silently loading up on whichever factor is hot.

Thesis (why the edge exists)

Two stories, both plausible, and they are not mutually exclusive.

The behavioural story: investors underreact to firm-specific news. A company posts a genuinely good quarter, the price moves part of the way, and the rest of the move dribbles out over the following months as slower investors catch up. That slow drift is firm-specific by nature, which is exactly what a residual captures.

The risk story: raw momentum's returns are partly compensation for taking on time-varying factor exposures, and those exposures are what blow up in a crash. Removing them removes the compensation, but it also removes the bomb. If residual momentum still pays after the exposures are gone, the leftover is closer to real alpha.

Strategy logic

  • Estimate exposures. For each stock, regress its monthly returns on a small set of factors (market, size, value is the standard starting point) over a rolling window of about three years. The regression gives you a residual for every month: the return the factors did not explain.
  • Build the signal. Add up the residuals over the past twelve months, but skip the most recent month. That skip matters, because very recent returns tend to reverse for microstructure reasons and will pollute an otherwise clean signal.
  • Scale by noise. Divide the summed residual by its own standard deviation over the window. A stock with a small but very steady residual drift is a stronger signal than a stock with one huge lucky month.
  • Rank and trade. Sort the universe on the scaled residual, buy the top slice, short the bottom slice, rebalance monthly.

Parameters (knobs)

  • Factor set: Market only (crude), market plus size plus value (standard), or a full commercial risk model with sectors and currencies. More factors means a cleaner residual but also more estimation noise.
  • Regression window: 36 months is conventional. Shorter windows adapt faster to changing exposures but produce jumpier betas.
  • Formation window: 12 minus 1 months is standard. Some run 6 minus 1 for a faster, higher-turnover version.
  • Scaling: Raw summed residual, or residual divided by residual volatility. The volatility-scaled version is usually the better behaved one.
  • Portfolio slice: Deciles, quintiles or a continuous z-score weighting. Deciles are punchier and more expensive.
  • Long-short vs long-only: Long-only strips out roughly half the signal but avoids borrow costs entirely.

Portfolio construction

Rank, then neutralise. Take your residual scores, convert them to z-scores, then demean them within each sector so you are not making an accidental sector bet. Size the positions so the book is roughly dollar-neutral and beta-neutral.

Weighting inside the legs can be equal weight (simple, but overweights small illiquid names) or liquidity weighted (more capacity, slightly weaker signal). For anything managing real money, liquidity weighting wins.

Cap single-name weight at something like 1 to 2 percent so one bad earnings report cannot wreck the month.

Costs, capacity and turnover

This is the part that kills naive versions. Monthly decile rebalancing on a 1500-name universe generates turnover in the range of 150 to 250 percent per year per side. At even 15 basis points round trip, that is a meaningful annual drag before you have made a rupee or a dollar.

Three levers help:

  • Buffer zones. Do not sell a name the moment it drops out of the top decile. Let it fall to, say, the top 30 percent before you exit. This alone can cut turnover by a third with almost no signal loss.
  • Trade slowly. Spread the rebalance over several days rather than dumping it all at the monthly close, which is exactly when everyone else is trading the same names.
  • Cost-aware optimisation. Instead of trading to the exact target portfolio, solve for the portfolio that maximises expected signal minus estimated trading cost. You will end up holding slightly stale positions, and you will keep more of the return.

Capacity is decent in large caps and thin in small caps. The signal is strongest in smaller names, which is precisely where you cannot put much money to work. That tension is permanent.

Backtest design checklist

  • Point-in-time factor data. If you regress on factor returns that were revised later, you have leaked the future into the past.
  • Survivorship. Delisted and acquired names must stay in the historical universe, otherwise you have quietly deleted the losers.
  • The skip month. Forgetting to skip the most recent month is the single most common bug, and it usually makes the backtest look worse, not better, so it can hide for a long time.
  • Borrow feasibility. Check that the short leg names were actually borrowable and at what rate. Hard-to-borrow names often show the biggest apparent short alpha, which is not a coincidence.
  • Momentum crash windows. Isolate the months after March 2009 and April 2020. If your strategy sails through them unharmed, you have probably made an error somewhere.
  • Regression stability. Log how often betas swing wildly. Unstable betas mean the residual is mostly noise.

Common failure modes

  • Momentum crashes. When the market bottoms violently, the beaten-down junk you are short rips higher and the safe winners you are long lag. Residual momentum softens this but does not remove it.
  • Crowding. Residual momentum is well known. When too many funds hold the same names, an unwind in one becomes an unwind in all of them.
  • Cost blindness. Backtests that assume 5 basis points of cost look wonderful and are science fiction for anything below mega-cap.
  • Over-neutralisation. Strip out too many factors and you are left regressing noise on noise, then ranking the result.
  • Decay. Published anomalies weaken after publication. Assume the live Sharpe is materially lower than the backtest.

Variants

  • Dynamic scaling. Cut exposure when momentum's own realised volatility spikes. This is the single most effective known fix for momentum crashes.
  • Industry residual momentum. Regress only on industry returns, keeping it simpler and cheaper to compute.
  • Combine with reversal. Pair long-horizon residual momentum with short-horizon reversal on the same names; the two are close to uncorrelated.
  • Long-only tilt. Overlay the residual score on a benchmark portfolio with a tracking-error budget, which is how most large asset managers actually deploy this.

Our notes and suggestions

The honest summary: residual momentum is a genuinely better mousetrap than plain momentum, but it is a better mousetrap for a mouse that a lot of people are already hunting. Build it, but build the cost model before you build the signal, and treat the turnover control as part of the strategy rather than an afterthought. If your version cannot survive 20 basis points of round-trip cost, it does not exist.

Our Notes & Suggestions

See the "Our Notes" subsection in the body above for practical guidance, gotchas, and best practices. Always validate regime assumptions and transaction cost assumptions before scaling.

Implementation Checklist

  • Universe: liquid names only, e.g. top 1500 by market cap with a minimum average daily traded value and a minimum price floor
  • Run a rolling regression of each stock's monthly excess returns on market, size and value factors over a 36 month window
  • Signal: sum the residuals from months t-12 to t-2, skip the most recent month, then divide by the standard deviation of those residuals
  • Rank cross-sectionally, go long the top decile and short the bottom decile, or long-only the top quintile if shorting is off the table
  • Rebalance monthly; cap turnover with a buffer zone so names do not churn in and out on tiny rank changes
  • Neutralise the book to sector, beta and size after ranking, not before
  • Model costs: spread, market impact, short borrow fee and financing on the levered legs
  • Stress test the momentum crash: check performance in the months after a deep market bottom
  • Guard against look-ahead: use point-in-time factor returns and lag the regression by one day
  • Compare against plain price momentum; if residual momentum is not clearly better after costs, it is not worth the complexity

Related

ShareTwitterLinkedIn