Trend Following and Momentum Strategies › Behavioral and Structural Sources of Momentum
Quantitative FinanceAll chapters Trend Following and Momentum Strategies › Behavioral and Structural Sources of MomentumOne section · Sections in this chapter4 / 9 ↓
Reading tools Definitions & inline links
Choose your expertise level to adjust how many terms are explained. Beginners see more tooltips, experts see fewer to maintain reading flow. Hover over underlined terms for instant definitions.
Article links
Make inline references clickable
The profitability of momentum strategies requires explanation. If markets are efficient, past returns should not predict future returns. Several theories attempt to explain why momentum persists.
Investor Underreaction
The most widely cited explanation involves gradual information diffusion and investor underreaction. When new information arrives, prices do not immediately adjust to reflect its full implications. Instead, the adjustment occurs gradually as more investors learn about and trade on the information.
Underreaction can arise from several psychological biases:
- Conservatism bias: Investors are slow to update their beliefs when confronted with new evidence, anchoring too heavily on prior views
- Inattention: Not all investors monitor all securities continuously; information spreads gradually through the investor population
- Disposition effect: Investors are reluctant to realize losses and eager to realize gains, creating selling pressure on winners and buying pressure on losers that slows price adjustment
The underreaction hypothesis predicts that prices will continue to drift in the direction of initial news as the market gradually incorporates information, generating momentum in returns.
Overreaction and Positive Feedback
An alternative view suggests that momentum itself creates more momentum through positive feedback mechanisms:
- Herding: Investors observe others buying and interpret this as a signal of private information, leading them to buy as well
- Overconfidence: Traders who profit from momentum trades may become overconfident and increase their positions, pushing prices further
- Feedback trading: Technical traders and trend followers explicitly buy rising assets and sell falling assets, amplifying price movements
Under this view, momentum returns eventually reverse as prices overshoot fundamental value. This is consistent with long-horizon return reversals documented at 3- to 5-year horizons.
Risk-Based Explanations
A third perspective argues that momentum returns represent compensation for bearing systematic risk. Possible risk sources include:
- Crash risk: Momentum strategies are exposed to sudden, severe losses when trends reverse abruptly
- Liquidity risk: Momentum portfolios may load on less liquid securities that require compensation
- Macroeconomic risk: Winners and losers may have different exposures to business cycle risk
The debate between behavioral and risk-based explanations remains unresolved, and the truth likely involves elements of both.

Visualizing Momentum Across Horizons
We can examine how the next month's long-short return changes with the formation-period lookback. Because the stock paths here are synthetic and contain no deliberately embedded momentum factor, the diagnostic should be read as a calculation example rather than evidence for the empirical horizon pattern:
# Calculate average returns for different formation periods
formation_periods = [1, 3, 6, 12, 24, 36, 48] # in months
average_spreads = []
for period in formation_periods:
lookback = period * 21 # Convert to trading days
# Calculate momentum for this lookback
mom_scores = stock_prices.pct_change(lookback)
# Rank at month-end, then measure the subsequent one-month spread
spreads = []
for i, date in enumerate(rebalance_dates[:-1]):
try:
scores = mom_scores.loc[date].dropna()
if len(scores) >= 10:
sorted_scores = scores.sort_values(ascending=False)
winners = sorted_scores.head(5).index
losers = sorted_scores.tail(5).index
next_date = rebalance_dates[i + 1]
forward_returns = stock_returns.loc[date:next_date].iloc[1:]
winner_ret = (
1 + forward_returns[winners].mean(axis=1)
).prod() - 1
loser_ret = (
1 + forward_returns[losers].mean(axis=1)
).prod() - 1
spreads.append(winner_ret - loser_ret)
except (KeyError, IndexError):
pass
average_spreads.append(np.mean(spreads) if spreads else np.nan)
lookback_analysis = pd.DataFrame(
{
"Formation Period (months)": formation_periods,
"Average Winner-Loser Spread": average_spreads,
}
)
The noisy profile is a useful guardrail: computing a winner-minus-loser statistic is not enough to manufacture momentum. The broad empirical finding discussed above comes from long market histories and carefully specified portfolios; a short, factor-free simulation need not reproduce it.