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:
score = (month-end close ÷ close twelve months earlier) − 1
The engine sorts all ~500 companies by that score and holds the top N (the strongest performers) in equal weight. Momentum has high turnover and tends to pile into whatever sector is hottest. Companies with two share classes in the index are counted once (Alphabet as GOOGL, Fox as FOXA, News Corp as NWSA), so the top N never holds the same company twice.
Ranking timing: which month-end the ranking uses
The Momentum tab has a Ranking timing control with three options. They differ only in which month-end's ranking decides the holdings; every trade still happens at the rebalance month-end close.
- Same month (default). Rank on the rebalance month-end close and trade at that close, the same way Top-N Market Cap works. The September rebalance uses the September 30 ranking.
- Prior month (classic “12‑1”). Rank on the month-end before the rebalance, skipping the latest month. The September rebalance uses the August 31 ranking. Academic momentum research skips the latest month because last month's biggest winners have historically tended to give back some of their gain the following month.
- Confirmed. Hold only stocks that are in both the same-month and prior-month top N. A stock that just dropped out is sold right away; a new entrant is bought a month later, if it's still there. This can hold fewer than N stocks, and the money is split equally among however many qualify.
Why same month is the default. In our 2016–2026 tests on this data, same-month ranking came out ahead of the prior-month skip in most combinations of N and rebalance interval. Most of that edge came from selling a fading stock a month sooner, not from buying winners earlier. It did not win every time: results depend on the start month and on which months the rebalances land on. For top 5 rebalanced quarterly from June 2016 to June 2026, for example, the prior-month skip finished ahead (about $11.9M vs $10.8M on $131,000 invested). The data is also survivorship-biased (today's index members only), which flatters momentum. Use the selector to compare all three over your own dates.
When it buys and sells (the rebalance)
Prices are month-end closes (the last trading day of the month), and every trade is modeled at that close. In real life that means trading at the close or at the next trading day's open.
Worked example: N = 5, monthly rebalance, September 2026
Last month (Aug 31) the same-month list was SNDK, MRNA, MU, LITE, WDC. At the Wed, 30 Sep 2026 close:
- Same month: rank on the 30 Sep close. The top 5 are SNDK (+1,451% over 12 months), MRNA, MU, LITE, STX. Sell WDC, buy STX, keep the other four, and reset all five to 20%.
- Prior month: rank on the 31 Aug close instead. The top 5 are SNDK, MU, LITE, MRNA, WDC, so WDC stays and STX waits.
- Confirmed: keep only the stocks in both the 30 Sep and 31 Aug top 5: SNDK, MRNA, MU, LITE. That's four stocks at 25% each.
The Simulator's Actual investment tab shows this sell/buy/keep list for the latest month-end automatically, for any N, rebalance interval, and timing.
Because momentum needs a full year of history to compute, the backtest effectively begins about a year after the data starts.
Rankings tab vs the backtest
The Rankings tab and the Backtest tab use the identical momentum formula. Here is how their calendars line up.
1. The Rankings tab shows a month's own ranking (no skip)
Pick a month in the Rankings tab and you see that month's list, scored on that month's end-of-month close versus the close one year earlier. There is no 1-month skip here; it is a snapshot to look at, not a trade. For example, the May 2026 list is scored like this:
2. Which Rankings list the backtest is holding
The Rankings tab never skips a month; the backtest follows your Ranking timing. For a rebalance at the end of June:
| Ranking timing | The June rebalance buys | Current holdings match the Rankings tab's |
|---|---|---|
| Same month (default) | the June top N | same month (June) |
| Prior month (12‑1) | the May top N | previous month (May) |
| Confirmed | stocks in both the June and May top N | overlap of the two months |
So with the default, the stocks the momentum backtest bought at its last rebalance are the top names in the Rankings tab for that same month, just like Top-N Market Cap.
3. The current month updates weekly, then freezes
The dataset is rebuilt once a week (each weekend). For the current, unfinished month, the "month-end" close is simply the latest available Friday — so the current month's Rankings list can shift a little every week as new prices arrive. Once that month ends, its close is locked to the actual last trading day and never changes again; from then on its score is always that month-end vs the same month a year earlier.
Example: through June, the live "June 2026" list re-scores on each new Friday close (5 Jun, 12 Jun, 19 Jun, 26 Jun…). The moment July begins, June is fixed at its 30 Jun close and the live list rolls over to "July 2026", now tracking July's latest Friday.
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.