Module 5 — Strategy Design
Momentum vs Mean Reversion
Trend, reversion, and the diagnostic discipline that separates real edge from a curve fit.
Learning objectives
- ▸Recognise the timescales at which each regime tends to dominate.
- ▸Implement a 12-1 momentum factor.
- ▸Implement a short-horizon mean-reversion signal.
TEXT
Two empirical regularities, two timescales
Cross-sectional momentum (12 months minus the most recent month) earns a positive premium across nearly every asset class — winners keep winning over 3–12 month horizons. At the same time, daily and intraday returns mean-revert: a stock that ran +5% today tends to give back a bit tomorrow. The same stock can be momentum at the monthly level and mean-reverting at the daily level.
CODE
12-1 momentum factor
# For a panel of returns indexed by date and ticker lb_12m = returns.rolling(252).sum() recent_1m = returns.rolling(21).sum() mom = lb_12m - recent_1m # Long top decile, short bottom decile rank = mom.rank(axis=1, pct=True) long = (rank > 0.9).astype(int) short = (rank < 0.1).astype(int)
CODE
Short-horizon mean reversion
# 5-day reversal: bet against last week's winners short_term = returns.rolling(5).sum() rank = short_term.rank(axis=1, pct=True) position = -2*(rank - 0.5) # linearly fade extremes
TEXT
Why both can coexist
Momentum is driven by slow incorporation of fundamental news and behavioural underreaction. Daily mean reversion is driven by liquidity demand — somebody had to push the stock up, and liquidity providers fade them. Different mechanisms, different horizons.