Momentum rotation: 12-1 relative strength and the skip month

On this page

Key takeaways

  • Momentum is the tendency of assets that rose most over the past several months to keep outperforming for a while. A rotation turns it into a rule: rank, hold the top one or few, repeat.
  • The usual score is the return over the past twelve months leaving out the latest month, because very short-term returns have tended to reverse.
  • A rule can only rank on prices known when it trades. MarketHeist decides each month's holding at the previous month-end, so the score always ends at least one month before the month held.
  • Dual momentum (Antonacci) adds a safe asset to the ranking or a cash test, so the rotation can leave stocks entirely when their recent returns are weak.
  • A top-one rotation is concentrated and switches often; its record rests on a limited number of switches at the right time, which makes it sensitive to the look-back window and the list of assets.

Definition

A momentum rotation ranks a set of funds by their trailing return each month and holds only the leaders until the next ranking. The common 12-1 version scores each fund on its return over the past twelve months excluding the most recent one, a choice that dates from the academic momentum studies.

Also known as: relative strength rotation, 12-1 momentum, dual momentum, GEM, relative momentum, top-k momentum rotation, skip month, cross-sectional momentum.

How it works

At the end of each month, measure every fund's return over the lookback window, rank them, and hold the leader (or the top few, at equal weights) for the next month. At the next month-end, rank again. If the leader is unchanged, nothing trades; if another fund has taken the lead, the portfolio moves to it.

Jegadeesh and Titman documented in 1993 that US stocks with the highest returns over the past three to twelve months went on to beat those with the lowest over the following months. The same pattern was later found across countries and asset classes. Much of the research skips the most recent month when forming the ranking, because a stock's return over the last few weeks has tended to partly reverse; with a twelve-month window that gives the 12-1 score.

Gary Antonacci's dual momentum, published in his 2014 book, applies the idea to a few broad funds. Relative momentum picks the stronger of US and international stocks; absolute momentum checks whether that winner beat Treasury bills, and if not, holds bonds. MarketHeist's version puts a bond fund into the ranking instead of a separate bill test, so bonds are held when both stock funds trailed the bond fund over the window.

The skip month has a second meaning in a backtest. A score that included the month being held would know the return it is about to earn, which is look-ahead bias, and it can turn an ordinary rule into a spectacular one. MarketHeist's engine counts the skip back from the month held and never lets it fall below 1, so the ranking for a month uses data through the end of the month before. A skip of 2 adds the academic one-month gap on top.

A rotation is like picking a team's starting lineup from last season's form: it usually works for a while, until the season the form changes and the bench would have done better.

Formula

Momentum score of fund i for the month held, t
Si,t=Li,t−kLi,t−k−J−1,k≥1
Sᵢ,ₜ
score used to decide whether fund i is held in month t
Lᵢ,ₜ
fund i's value (growth of 1, dividends reinvested) at the end of month t
J
lookback: the number of monthly returns in the window
k
skip: how many months before the month held the window ends; at least 1

The window covers the monthly returns of months t − k − J + 1 through t − k. With J = 11 and k = 2 that is months t − 12 through t − 2: the academic 12-1. With J = 12 and k = 1 it is the twelve months through last month-end, the ranking Antonacci's dual momentum uses.

Holdings for month t (top K, equal weight)
wi,t={1/Kif fund i is among the K highest S·,t0otherwise
wᵢ,ₜ
weight of fund i at the start of month t
K
how many funds are held (1 in the example)

The portfolio's return in month t is Σᵢ wᵢ,ₜ rᵢ,ₜ. With K above 1 the held funds drift within the month and are reset at the next ranking.

Worked example

The three funds of the dual momentum rotation, VTI (US stocks), VEU (international stocks) and BND (US bonds), ranked every month on the 12-1 score and holding the single leader, from Jun 1997 to Sep 2026.

The rotation grew 9.5% a year. Holding all three funds in equal parts, rebalanced once a year, grew 7.1% over the same months. The rotation's deepest fall was -22.2%, against -37.1% for the equal-weight mix.

It held US stocks in 45.2% of months, international stocks in 29.8% and bonds in 25.0%, and changed its holding 1.8 times a year. The bond months carried the protection: in the long bear markets both stock funds' trailing returns fell below the bond fund's, and the rotation sat out much of the decline in bonds.

The price is concentration. Each month the whole portfolio sits in one fund, and after a sudden reversal the ranking takes months to catch up. Its volatility was 13.2% against 10.7% for the equal-weight mix, and its Sharpe ratio 0.75 against 0.70.

These figures cover the whole window, not any one decade, and rest on a few dozen switches. Set the skip to 1 and the lookback to 12 in the lab to rank as the dual momentum strategy does, or add funds to the universe, and the result moves: a sign of how much of it depends on the exact rule.

Data through Sep 2026. Reproduce id 7d8a5bcf58783586 (this guide, its lab setup and the data month).

Interactive lab

Growth of $10,000 for the momentum rotation and for the equal-weight mix of the same funds, with the fund held each month shown as a band. Change the lookback, the skip, the number held or the universe.

Growth of $10,000: momentum rotation and equal weightHold the top 1 of VTI, VEU, BND by trailing 11-month return, reselected monthly, against all 3 at equal weight rebalanced yearly; Jun 1997 to Sep 2026. $10,000 grows to $141,681 with the rotation and $74,857 at equal weight.$20k$50k$100k19972001200520092013201720212025Top 1 by 11-month returnEqual weight
Growth of $10,000 on a log scale. Jun 1997 to Sep 2026.
Fund held each month: top 1 of 3 by 11-month returnMonths in which each fund was held by the rotation, Jun 1997 to Sep 2026. VTI: 45% of months; VEU: 30% of months; BND: 25% of months. Holdings changed 1.8 times a year.VTIVEUBND19972003200920152021
Which fund the rotation held in each month. Jun 1997 to Sep 2026.
MeasureTop 1 by 11-month returnEqual weight
CAGR9.5%7.1%
Volatility (annualized)13.2%10.7%
Maximum drawdown-22.2%-37.1%
Sharpe ratio0.750.70
Growth of $10,000$141,681$74,857
Changes of holding per year1.8none

Equal weight holds every fund of the universe, rebalanced each December. Risk-free rate 0. Jun 1997 to Sep 2026.

FundNameMonths held
VTIUS Total Stock Market45%
VEUAll-World ex-US30%
BNDUS Total Bond Market25%

Share of the window's months in which the rotation held the fund. Jun 1997 to Sep 2026.

How MarketHeist computes it

Every choice an implementation has to make, as the code makes it today. The page is checked against the code each time it is built.

ChoiceHow it is computedIn the code
DataMonthly total returns (dividends reinvested). Funds younger than the period shown are extended backward with older funds, spliced on returns, not prices.
WindowThe worked example and the lab use the common window of the funds in the universe from the first month at which a 12-month lookback has history, Jun 1997 to Sep 2026 (352 months), so the lookback slider does not move the window.
RotationEach month the funds are ranked by their return over the lookback, ending one month before the month held (the engine never ranks a month on its own return); the top funds are held at equal weight and the book is reselected monthly. The comparison holds every fund at equal weight, rebalanced each December, over the same months.
ScoreTrailing total return from each fund's value series: value k months before the month held divided by its value J months earlier, minus 1. A fund without enough history has no score and cannot be picked.scoreSeriespackages/portfolio/engine/nodes.ts
Skip floorThe skip is counted back from the month held and floored at 1: a skip of 0, a negative value or a missing one all run as 1, so a month's own return never enters the ranking that decides whether it is held. Skip 2 is the academic one-month gap.MIN_SKIP_MONTHSpackages/portfolio/engine/nodes.ts
SelectionAt every month-end the funds are sorted by score, highest first, and the top K are held at equal weights for the next month; held funds drift within the month and the book is re-formed at each ranking. No trading costs or taxes.simulateSelectionpackages/portfolio/engine/selection.ts
Comparison portfolioThe same funds at equal weights, rebalanced every December, over exactly the same months as the rotation.simulatePortfoliopackages/portfolio/engine/portfolio.ts
WindowThe common window of the universe, starting once a 12-month lookback plus the skip has history, so sliding the lookback between 3 and 12 months does not move the start date.ROTATION_LOOKBACK_MAXcontent-engine/lab/compute.ts
Held share and switchesHeld share is the fraction of months in which a fund was among those held. Switches count the months in which the set of held funds differed from the month before, per year of the window.
The dual momentum strategy in the appThe library's dual momentum (GEM) strategy holds the top one of VTI, VEU and BND by the 12-month return through last month-end (lookback 12, skip 1), reselected monthly. It differs from Antonacci's published rule by ranking bonds directly instead of testing stocks against Treasury bills.
Engine functionsThe functions the portfolio app and the MarketHeist MCP tools run, called here on the same monthly returns.simulateSelectionpackages/portfolio/engine/selection.tsscoreSeriespackages/portfolio/engine/nodes.tssimulatePortfoliopackages/portfolio/engine/portfolio.tsmetricsFromReturnspackages/portfolio/engine/portfolio.ts

Momentum rotation (12-1 relative strength) compared with its neighbours

Momentum rotation compared with related rules
RuleWhat it comparesCan leave stocks entirelyTypical holding
Relative momentum (rotation)Funds against each otherOnly if a non-stock fund is in the universeThe top one or few funds
Absolute (time-series) momentumA fund against its own past or cashYesThe fund or cash
Dual momentum (GEM)Stocks against stocks, then the winner against billsYes, into bondsOne fund
Trend filter (moving average)The price against its own moving averageYes, into cashThe whole portfolio or cash
Equal weight, rebalancedNothingNoEvery fund, always

Limitations

  • A top-one rotation holds one fund at a time, so its results depend on a limited number of switches. Moving the lookback by a month or two, or adding one fund, can change the outcome noticeably.
  • The universe is chosen after the fact. Picking funds that are known to have had strong runs makes any momentum rule look better than it would have been to someone choosing in advance.
  • Momentum strategies suffer sharp reversals: when markets turn quickly, the ranking still points at last year's leader. Daniel and Moskowitz called these momentum crashes.
  • No trading costs, spreads or taxes are included, and a rotation trades every time the leader changes. In a taxable account each switch can realise gains.
  • Long histories are extended backward with older funds where a fund is younger than the window, so early months approximate the fund rather than reproduce it.

Frequently asked questions

What does 12-1 momentum mean?
A fund's return over the past twelve months excluding the most recent month: the window runs from twelve months ago to one month ago. The skipped month is left out because very short-term returns have tended to reverse. In MarketHeist's lab that is a lookback of 11 months with a skip of 2.
Why does MarketHeist not allow a skip of zero?
Because the decision to hold a fund in a month is made at the end of the month before. A score that included the month being held would use a return nobody knew at the time, and a backtest with that look-ahead can show returns no investor could have earned. The engine raises any skip below 1 to 1.
What is the difference between relative and absolute momentum?
Relative momentum compares funds with each other and holds the strongest, even if all of them fell. Absolute, or time-series, momentum compares a fund with its own past or with cash, and steps aside when its trailing return is negative or below the cash return. Dual momentum uses both.
How did dual momentum (GEM) perform after 2010?
This page reports the whole window only. The dual momentum strategy page shows calendar-year returns, so any sub-period, such as the years after 2010, can be read there and compared with holding the same funds.
How many funds does a momentum rotation hold?
As many as the rule says; there is no standard number. Holding one fund maximises the bet on the leader and the turnover; holding two or three of a larger universe smooths the ride but dilutes the effect. The lab lets you change the number held and see how the drawdown and the switching change.

References

  1. Jegadeesh, N. and Titman, S. (1993) Returns to Buying Winners and Selling Losers: Implications for Stock Market Efficiency. Journal of Finance 48(1). The original evidence for momentum in US stocks.
  2. Jegadeesh, N. (1990) Evidence of Predictable Behavior of Security Returns. Journal of Finance 45(3). One-month return reversal, the reason for the skip month.
  3. Carhart, M. M. (1997) On Persistence in Mutual Fund Performance. Journal of Finance 52(1). The momentum factor built on returns from twelve to two months back.
  4. Asness, C. S., Moskowitz, T. J. and Pedersen, L. H. (2013) Value and Momentum Everywhere. Journal of Finance 68(3). Momentum across countries and asset classes.
  5. Antonacci, G. (2014) Dual Momentum Investing: An Innovative Strategy for Higher Returns with Lower Risk. McGraw-Hill. Global equities momentum (GEM).
  6. Daniel, K. and Moskowitz, T. J. (2016) Momentum Crashes. Journal of Financial Economics 122(2).

Try it on your own holdings

Open the dual momentum strategy and see its year-by-year returns →

Or ask an assistant connected to the MarketHeist MCP server (https://marketheist.io/mcp), which computes the same figures:

Using MarketHeist.io, backtest a monthly rotation that holds whichever of VTI, VEU and BND had the highest 12-month return through last month-end, and compare it with holding all three at equal weights

Ask an AI assistant

The prompt opens in a new tab, already filled in. An assistant without the MarketHeist connector answers from its own knowledge, not from the figures on this page.

Historical simulation, not advice. Computed by the MarketHeist portfolio engine from monthly total returns, data through Sep 2026. Markdown version of this page: momentum-rotation.md.