50ETF Momentum Rotation · the most robust factor
Monthly cross-sectional momentum on CN blue chips with an Amihud illiquidity penalty. The simplest viable production momentum strategy.
Cross-sectional momentum is the most replicated anomaly in finance. This template is the minimum implementation that avoids the three classic mistakes.
Monthly 12-1 momentum with Amihud illiquidity penalty
Why this works
Cross-sectional momentum is the single most robust equity factor globally — it shows up in every market regime studied (Jegadeesh & Titman 1993, replicated in CN by Chi et al.). The 12-1 construction specifically excludes the most recent month to dodge the short-term reversal effect. Amihud illiquidity penalty is the simplest way to avoid loading up on micro-caps that look great in backtest and untradeable in practice.
Common pitfalls
- Including the last month in the momentum window — it contaminates the signal with reversion noise.
- Ignoring liquidity. The 50ETF universe varies in tradability; without penalty your top picks are often the least liquid.
- Rebalancing daily. Momentum is a slow signal; daily rebalance just trades commission.
Try it yourself
Fork the template into your workspace. The entire configuration — code, parameters, backtest window, cost model — lands in a new private session. Tweak it, break it, and see how robust the edge actually is.
Backtest result
Equity curve
Rank by r(t-12, t-1) adjusted by Amihud illiquidity. Long top 10, monthly. Volatility overlay halves exposure when SHIBOR 3M > 4%.
Related tutorials
Momentum: the only factor that keeps working
From Fama–French critique to A-share rotation — a working primer on the most robust anomaly in finance.
MA-Cross on HSTECH · regime-aware trend following
A disciplined 5/20 moving-average crossover on Hang Seng TECH, filtered by realised volatility. Designed to teach when trend-following works and when it quietly bleeds.
LightGBM Factor Stack · CSI 300
Gradient-boosted nonlinear factor interactions on A-shares, with proper walk-forward validation and turnover caps. A working production ML template.
Fork it into your workspace.
The whole template — code, parameters, backtest config — lands in a new private session. Tweak it, run it, break it, learn.