Momentum — selection & rebalancing

How the top stocks are selected

At each rebalance, every S&P 500 company is scored by its trailing 12-month return, skipping the most recent month (the classic "12‑1" momentum):

score = (price one month ago ÷ price thirteen months ago) − 1

The engine sorts all ~500 companies by that score and holds the top N (the strongest performers) in equal weight. The most recent month is deliberately left out because last month's biggest winners often reverse short-term — skipping it avoids buying at a local top. Momentum has high turnover and tends to pile into whatever sector is hottest.

When it buys and sells (the rebalance)

Prices are month-end closes (last trading day of the month). Momentum differs from Market Cap in which close it ranks on: it ranks using the prior month-end (the 1-month skip), then trades at the current month-end close.

Worked example — N = 5, monthly rebalance

Consider the March 2021 rebalance:

So a "March rebalance" decides on February's data and executes at the end of March. That 1-month gap between the signal and the trade is intentional for momentum (it is the skip), unlike Market Cap, which ranks and trades on the same day.

Because momentum needs a full year of history to compute, the backtest effectively begins about a year after your start date.

Why month-end close? Every trade is modeled at the month-end closing price — no specific clock time, next-day open, or intraday fills. Monthly closes keep the backtest auditable.

The Rebalance style controls what happens to the weights at each rebalance — a full equal-weight reset, a reset only when the line-up changes, or trading just the additions and removals.

Run this backtest →