The rules
Rank stocks each month by their price divided by their highest price of the past 12 months. Buy the 30% nearest that high and sell short the 30% furthest from it, equally weighted. Hold each monthly cohort for six months, so six cohorts overlap at any time (George and Hwang 2004, all stocks in CRSP, the standard US stock-price database, 1963-2001). The 2018 re-test by George, Hwang and Li uses the highest daily close and skips a month between ranking and holding. It also excludes financials and stocks with less than a year of history.
- Universe
- US common stocks via the Market Screener: the 30 nearest their 52-week high
- Bars
- daily
- Position size
- 3.2% of equity per stock, at most 30 held and at most two new a day. Published: equal weight within the top and bottom 30%.
- Rebalance
- Daily check, buying up to two a day when a slot is free; each stock held 126 trading days. Published: monthly ranking, six-month holds.
What the research found
George and Hwang (2004) studied all stocks in CRSP from July 1963 to December 2001, before costs. The 30% of stocks nearest their 52-week high earned 1.51% a month and the 30% furthest from it 1.06%, a spread of 0.45% (t = 2.00; a t-statistic of about 2 or more is the usual bar for a result unlikely to be chance). In a statistical test with a one-month skip that holds size and other momentum measures fixed, the spread was 0.65% a month (t = 4.08): stocks nearest the high earned 0.16% a month more than otherwise similar stocks and those furthest from it 0.48% less. Chen and Zimmermann (2022) call the original t = 2.00 marginal; reproducing the 1963-2001 test, they got 0.51% a month (t = 1.94). George, Hwang and Li (2018) used a later window, January 1972 to December 2014, which ends 13 years after the 2004 study's but starts in 1972, not 1963, because its ROE (return on equity) data begin then. Weighted by market value, the decile (tenth) nearest the high had an alpha (return beyond what market moves explain) of 0.24% a month (t = 3.42); equal-weighted excluding microcaps (the smallest stocks), 0.40% (t = 4.27). Under the Carhart model, which adjusts for market, size, value and momentum, the value-weighted top decile's alpha falls to 0.02% a month (t = 0.39); the equal-weighted top decile excluding microcaps keeps 0.11% (t = 2.02). The authors find the q-factor model, which adds company investment and profitability to market and size, captures the long-short spread best: value-weighted, the top decile minus the bottom keeps an alpha of 0.28% a month (t = 2.26) under Carhart but 0.15% (t = 0.63) under the q-factor model. Hou, Xue and Zhang (2020) replicated it with no skip month: value-weighted, with deciles set using NYSE stocks, the top decile minus the bottom earned 0.87% a month (t = 3.16) over 1967-2001 and 0.56% (t = 2.01) over 1967-2016. Liu, Liu and Ma (2011) found it profitable in 18 of 20 international markets and significant in 10, but mostly insignificant after transaction costs. McLean and Pontiff (2016) include it among 97 published predictors, whose returns averaged 26% lower between the end of the original samples and publication, and 58% lower after publication.
Results
| Measure | Orbital test | SPY, same days |
|---|---|---|
| Window | Mar 1, 2017 to Oct 30, 2026 | Mar 1, 2017 to Oct 30, 2026 |
| Total return | +209.14% | +267.14% |
| CAGR | +12.39% | +14.40% |
| Sharpe | 0.43 | 0.60 |
| Discounted Sharpe | 0.13 | — |
| Max drawdown | −35.8% | −33.7% |
| Win rate | 62.2% | — |
| Profit factor | 1.74 | — |
| Trades | 609 | — |
Hypothetical: a backtest with modeled costs, not traded with real money.
Hypothetical growth of $10,000
R01 52-Week-High Momentum · +209.1% vs SPY +267.1%
Rebuild it in Orbital
Paste this into Orbital Chat. The Strategy Developer builds the workflow and asks before it runs any backtest.
On daily bars, use a Market Screener universe of US stocks with the type set to Common stock only, priced at $5 or more, with 20-day average volume of at least 500,000 shares and Volatility 1M (average daily range) of at least 0.75%, sorted by % below 52W high (smallest first), top 30. Buy each stock in the screen with 3.2% of equity at the next open, in the screen's sort order, skipping any already held; hold at most 30 positions and open at most 2 new ones a day. Sell each position 126 trading days after entry (a time stop of 126 daily bars), with no other exit, even if it leaves the screen. Long only; uninvested capital stays in cash. Backtest from March 1, 2017 to October 30, 2026 with $100,000.
Is it real?
- Strategies tested together
- 7
- Beta to SPY
- 0.77
- Alpha vs SPY
- +1.9% a year
- Costs paid
- $3,771, 2% of the gain before costs
- Data
- Daily bars, 2,432 sessions
- Fills
- Next open at market, sized at the fill
Read this before you trust it
Long only: it buys from the 30 stocks nearest their 52-week high and skips the short side, where the paper's statistical tests put most of the gain. The screen ranks every day, with no skip month, but no holding is sold to make room: at two buys a day the book takes at least 15 trading days to fill, then buys only as holdings reach 126 trading days or stop trading, so its buying comes in bursts about six months apart, not a sixth of the portfolio each month as in the paper. Orbital's 52-week high is the highest daily high of the past 365 calendar days, that day included, and a stock's % below 52W high is 0% only when it closes at that high. Ties are ordered by ticker, so on a day when more than 30 stocks do, the screen keeps the first 30 alphabetically. The screen cannot select on company size, sector or exchange: a $5 price floor and a 500,000-share average volume floor stand in for the 2018 study's exclusion of the smallest stocks. Financial stocks and young listings stay in: from its 21st trading day, a new stock near the high of its short history can rank near the top. The 0.75% volatility floor is an addition: it keeps out takeover targets and blank-check shells (companies holding cash until they buy a business) once they have traded pinned near a fixed price for most of a month, though a target can still pass in the first weeks after a deal is announced. The test starts on March 1, 2017, when Orbital's data, which begins in January 2016, first gives a screen a full year of history. Orders fill at the next open with 0.05% slippage (the assumed trading cost).
Sources