The 52-Week High and Momentum Investing
A post-publication walk-forward test of George and Hwang (2004) on the BTM Tiingo and EDGAR universe, split across three sub-windows and three momentum signals, with per-signal eligible universes matching the paper's CRSP definition where the data allows it.
Five observations from the re-test
Three momentum signals, three eligible universes
George and Hwang argued in their original 2004 paper that proximity to the 52-week high is a stronger momentum signal than either the Jegadeesh-Titman 1993 individual-stock momentum signal[1] or the Moskowitz-Grinblatt 1999 industry momentum signal[2]. They ran all three side-by-side on the same CRSP cross-section, sorted each independently into top and bottom thirty percent portfolios, and compared the long-short spreads. On their data the 52-week-high signal won the contest cleanly. Our re-test runs the same three signals across three time windows. One design choice is consequential up front: each signal runs on the broadest universe its inputs allow, so the three are not held to a single common cross-section. We describe the trade-off below.
We replicate the three rankings as closely as the available data permits. The JT ranking score is the six-month price return given by (Pt−1/Pt−7) − 1. The MG ranking score is the equal-weighted six-month return of the stock's MG-20-industry classification, which we map from each company's SEC-EDGAR SIC code. The FH ranking score is proximity to the trailing 52-week high, defined as Pt−1 / max(Ps) over s ∈ {t−12, …, t−1}. At each formation date every eligible stock receives a score from one or more signals. Each score independently sorts the universe into a top thirty percent winner portfolio and a bottom thirty percent loser portfolio, equal-weighted within each. The reported strategy returns are realized monthly portfolio returns averaged across six overlapping cohorts, which is the standard (6,6) framework.
The most consequential design choice in this re-test is that each signal gets its own eligible universe rather than forcing all three onto a common cross-section. JT and FH need only a price history to compute, so they run on the broader Tiingo-only spine of roughly 15,099 cumulative tickers, growing from about 3,900 eligible names in 2009 to about 7,800 by 2022. MG by contrast requires a 2-digit SIC code from EDGAR, so it can only run on the SEC Tiingo intersection of roughly 2,200 names in 2009 growing to about 6,100 by 2026. The trade-off is straightforward. At any given formation date the JT and FH cohorts and the MG cohorts are not drawn from the same eligible universe, which means we cannot do a strict three-way comparison on identical data, but we get substantially more statistical power for JT and FH from the larger sample.
We partition the test window into three sub-samples so we can see regime sensitivity. Window A covers 2009-01 to 2015-12 (n=84). Window B covers 2016-01 to 2026-04 (n=124). Window C is the pooled 2009-01 to 2026-04 window (n=208). The split lets us ask three diagnostic questions. Was the post-2014 environment kinder to JT? Does MG's strengthening track the EDGAR coverage ramp? Does the FH compression persist in both halves of the window? In addition to the stand-alone signal comparison, we run the two pairwise nested comparisons the paper used to argue for FH dominance. Table III sets FH against JT on the Tiingo-only universe and Table IV sets FH against industry momentum on the SEC Tiingo intersection. Tables V and VI of the original paper, which cover Fama-MacBeth regressions and post-formation persistence, remain out of scope for this run because they require shares-outstanding history that is not yet back-filled to 2009.
Tables I through IV · the paper's four results tables on the BTM universe
This section walks through the four results tables in the order George and Hwang published them. Tables I and II report the stand-alone long-short spread for each signal, first on the full window and then with the January observations removed. Tables III and IV ask the pairwise question that gave the original paper its headline finding. Inside each bucket of one signal, does the other signal still produce a winner-minus-loser spread? We present each table as a peer of the others, with the same row banding, column treatment, and significance marking, so the reader can hold all four tables in a single results narrative rather than treating Tables III and IV as a follow-up section.
Each cell reports the realized long-short spread (winner minus loser, in percent per month) averaged across the indicated window, alongside the conventional t-statistic on the time series of monthly spread observations. A double asterisk marks cells where |t| ≥ 1.96, the standard five percent two-tailed cutoff. Significant cells are tinted with a soft green fill so the reader can scan for them at a glance. The single deepest-significance result, JT on Window B with January excluded, is highlighted in the bright signal-green to mark it as the headline cell.
| Signal | Universe | n | Spread %/mo | t-stat | ex-Jan Spread | ex-Jan t |
|---|---|---|---|---|---|---|
| Window A · 2009-01 to 2015-12 n = 84 | ||||||
| JT | Tiingo-only | 84 | −0.605 | −1.28 | −0.244 | −0.52 |
| MG | SEC Tiingo | 84 | +0.046 | +0.22 | +0.141 | +0.67 |
| FH | Tiingo-only | 84 | −0.871 | −1.56 | −0.456 | −0.80 |
| Window B · 2016-01 to 2026-04 n = 124 | ||||||
| JT | Tiingo-only | 124 | +0.557 | +1.77 | +0.740 | +2.67 |
| MG | SEC Tiingo | 124 | +0.265 | +1.44 | +0.188 | +1.06 |
| FH | Tiingo-only | 124 | +0.028 | +0.06 | +0.348 | +0.82 |
| Window C · 2009-01 to 2026-04 n = 208 (pooled) | ||||||
| JT | Tiingo-only | 208 | +0.080 | +0.30 | +0.341 | +1.34 |
| MG | SEC Tiingo | 208 | +0.180 | +1.30 | +0.170 | +1.26 |
| FH | Tiingo-only | 208 | −0.335 | −0.95 | +0.024 | +0.07 |
bJT and FH operate on the Tiingo-only spine (roughly 15,099 cumulative tickers, growing from about 3,900 names in 2009 to about 7,800 by 2022). MG requires the 2-digit SIC code from public.edgartools_companies and so runs on the SEC Tiingo intersection (roughly 2,200 names in 2009 growing to 6,100 by 2026). Per-window per-signal effective counts are in Table I.a immediately below.
cThe original George and Hwang (2004) on CRSP from 1963 to 2001 reported FH long-short spreads of +0.40 to +0.70 percent per month. This re-test reproduces the post-financial-crisis compression even when we use the broader paper-equivalent universe. See references [3] and [4].
| Window | Signal | Universe | Min | Max | Avg |
|---|---|---|---|---|---|
| A 2009 to 2015 | JT | Tiingo-only | 3,856 | 5,210 | 4,371 |
| A 2009 to 2015 | MG | SEC Tiingo | 2,182 | 2,886 | 2,454 |
| A 2009 to 2015 | FH | Tiingo-only | 3,805 | 5,059 | 4,252 |
| B 2016 to 2026 | JT | Tiingo-only | 5,201 | 7,809 | 6,190 |
| B 2016 to 2026 | MG | SEC Tiingo | 2,871 | 6,093 | 4,164 |
| B 2016 to 2026 | FH | Tiingo-only | 5,041 | 7,399 | 5,875 |
| C 2009 to 2026 | JT | Tiingo-only | 3,856 | 7,809 | 5,460 |
| C 2009 to 2026 | MG | SEC Tiingo | 2,182 | 6,093 | 3,481 |
| C 2009 to 2026 | FH | Tiingo-only | 3,805 | 7,399 | 5,223 |
| JT bucket | n | Spread %/mo | t-stat | ex-Jan Spread | ex-Jan t |
|---|---|---|---|---|---|
| Window A · 2009-01 to 2015-12 n = 84 | |||||
| JT-Winner | 84 | −0.41 | −1.54 | −0.24 | −0.89 |
| JT-Middle | 84 | −0.49 | −1.48 | −0.36 | −1.03 |
| JT-Loser | 84 | −1.01 | −1.76 | −0.45 | −0.78 |
| Window B · 2016-01 to 2026-04 n = 124 | |||||
| JT-Winner | 124 | −0.36 | −1.51 | −0.20 | −0.87 |
| JT-Middle | 124 | −0.78 | −2.21 | −0.62 | −1.76 |
| JT-Loser | 124 | +0.76 | +1.41 | +1.22 | +2.33 |
| Window C · 2009-01 to 2026-04 n = 208 (pooled) | |||||
| JT-Winner | 208 | −0.37 | −2.10 | −0.22 | −1.24 |
| JT-Middle | 208 | −0.66 | −2.63 | −0.51 | −2.03 |
| JT-Loser | 208 | +0.06 | +0.15 | +0.56 | +1.42 |
| FH bucket | n | Spread %/mo | t-stat | ex-Jan Spread | ex-Jan t |
|---|---|---|---|---|---|
| Window A · 2009-01 to 2015-12 n = 84 | |||||
| FH-Winner | 84 | +0.06 | +0.20 | +0.18 | +0.63 |
| FH-Middle | 84 | −0.07 | −0.34 | +0.07 | +0.32 |
| FH-Loser | 84 | −0.62 | −1.69 | −0.27 | −0.74 |
| Window B · 2016-01 to 2026-04 n = 124 | |||||
| FH-Winner | 124 | +0.95 | +2.73 | +0.83 | +2.36 |
| FH-Middle | 124 | +0.42 | +2.57 | +0.37 | +2.25 |
| FH-Loser | 124 | +0.87 | +2.99 | +1.10 | +3.88 |
| Window C · 2009-01 to 2026-04 n = 208 (pooled) | |||||
| FH-Winner | 208 | +0.58 | +2.44 | +0.57 | +2.38 |
| FH-Middle | 208 | +0.21 | +1.55 | +0.24 | +1.85 |
| FH-Loser | 208 | +0.26 | +1.13 | +0.54 | +2.37 |
| MG bucket | n | Spread %/mo | t-stat | ex-Jan Spread | ex-Jan t |
|---|---|---|---|---|---|
| Window A · 2009-01 to 2015-12 n = 84 | |||||
| MG-Winner | 84 | −1.15 | −2.32 | −0.71 | −1.45 |
| MG-Middle | 84 | −0.91 | −1.77 | −0.59 | −1.12 |
| MG-Loser | 84 | −0.55 | −0.88 | −0.06 | −0.09 |
| Window B · 2016-01 to 2026-04 n = 124 | |||||
| MG-Winner | 124 | +0.30 | +0.74 | +0.54 | +1.44 |
| MG-Middle | 124 | +0.53 | +1.34 | +0.86 | +2.39 |
| MG-Loser | 124 | +0.15 | +0.29 | +0.43 | +0.85 |
| Window C · 2009-01 to 2026-04 n = 208 (pooled) | |||||
| MG-Winner | 208 | −0.29 | −0.91 | +0.03 | +0.10 |
| MG-Middle | 208 | −0.05 | −0.16 | +0.27 | +0.89 |
| MG-Loser | 208 | −0.14 | −0.35 | +0.24 | +0.60 |
| FH bucket | n | Spread %/mo | t-stat | ex-Jan Spread | ex-Jan t |
|---|---|---|---|---|---|
| Window A · 2009-01 to 2015-12 n = 84 | |||||
| FH-Winner | 84 | −0.13 | −0.70 | −0.04 | −0.22 |
| FH-Middle | 84 | +0.09 | +0.58 | +0.13 | +0.85 |
| FH-Loser | 84 | +0.74 | +2.34 | +0.86 | +2.73 |
| Window B · 2016-01 to 2026-04 n = 124 | |||||
| FH-Winner | 124 | +0.31 | +1.95 | +0.19 | +1.26 |
| FH-Middle | 124 | +0.23 | +1.42 | +0.16 | +1.02 |
| FH-Loser | 124 | +0.02 | +0.09 | −0.07 | −0.25 |
| Window C · 2009-01 to 2026-04 n = 208 (pooled) | |||||
| FH-Winner | 208 | +0.13 | +1.11 | +0.10 | +0.86 |
| FH-Middle | 208 | +0.18 | +1.60 | +0.15 | +1.40 |
| FH-Loser | 208 | +0.31 | +1.46 | +0.30 | +1.45 |
Figure 1 · per-signal eligible universe, 2009 to 2026
JT and FH operate on the Tiingo-only price spine while MG operates on the SEC Tiingo intersection. The two lines below plot the per-formation-date count of eligible tickers for each universe. The gap is widest in 2009, when the Tiingo-only count of roughly 3,900 names dwarfs the SEC Tiingo count of roughly 2,200, and the gap narrows after 2016 as SEC EDGAR XBRL filings expand coverage. A structural gap nevertheless persists across the whole window because the JT and FH cohorts remain roughly one and a half times the size of the MG cohort at any given month.
Figure 2 · long-short spreads across nine cells
Figure 2 is a visual restatement of Table I. Each window cluster contains three signal pairs. Within each pair the light bar reports the full-window spread and the dark bar reports the same spread with January observations excluded. Bars rising above the zero line are positive (winners beating losers) and bars descending below are negative. The JT bar in Window B with January excluded (+0.740 percent per month) is the single cell that crosses statistical significance, so it is highlighted in signal-green.
In plain English
The original George and Hwang paper, working on CRSP from 1963 to 2001, established a clear ranking. The 52-week-high signal dominated individual stock momentum, which in turn dominated industry momentum. The nested tables in the paper formalized that ranking by showing that the 52-week-high spread remained positive after controlling for individual stock momentum or industry momentum, while the reciprocal individual-stock and industry spreads collapsed after controlling for the 52-week-high.
On the BTM 2009 to 2026 windows the picture is different and worth describing carefully. Looking only at Tables I and II, the post-2014 regime with January excluded decisively rewards an individual-stock six-month momentum signal at journal-acceptable significance, with JT on Window B reaching +0.740 percent per month at t = +2.67. The 52-week-high signal, the paper's headline strategy, lands negative-to-flat on every window, and industry momentum strengthens with EDGAR coverage but does not cross the five percent threshold.
The pairwise nested tables sharpen the comparative picture. For the comparison between the 52-week-high and individual stock momentum in Table III, the 2016 to 2026 window shows the two signals as complementary rather than competing. Inside the 52-week-high loser bucket, individual stock momentum delivers a strong positive spread of about plus one percent per month with t-statistics around three. Inside the individual-stock-momentum loser bucket, the 52-week-high signal delivers an equally strong spread of +1.22 percent per month with January excluded, at t = +2.33. Neither signal dominates the other. Both add value, especially in the loser bucket of the other. This is a meaningful departure from the paper's ranking, and it suggests that in the modern era these two ways of measuring momentum capture different aspects of the same underlying phenomenon rather than competing for the same effect.
For the comparison between the 52-week-high and industry momentum in Table IV, the paper's "52-week-high dominates industry momentum outside January" result does not replicate. On the 2009 to 2015 window the direction even reverses, with industry momentum delivering a significant positive spread of +0.86 percent per month with January excluded inside the 52-week-high loser bucket, at t = +2.73. On the middle and full windows the cross-bucket spreads collapse to weakly positive or insignificant. No window in our data shows the 52-week-high dominating industry momentum.
The honest reading is that the paper's clean three-signal ranking from the 1963 to 2001 CRSP era does not hold on the 2009 to 2026 modern universe. The signals appear to relate to each other in more complex ways than the paper's framing suggested.
The compression context still matters. Daniel and Moskowitz (2016)[3] and Barroso and Santa-Clara (2014)[4] both document a structural decline in cross-sectional equity momentum returns after the 2008 financial crisis, on independent datasets and using independent methodologies. The fact that the 52-week-high signal lands negative on the full 2009 to 2026 window even on the paper-equivalent universe is consistent with that documented compression. It is not a BTM-data artifact. What Tables III and IV add to that compression story is the observation that even where momentum survives in the modern era, it survives in a different shape than the paper described. Individual stock momentum and the 52-week-high reward different parts of the cross-section, and the 52-week-high no longer absorbs the other two signals the way it did in the original sample.
This is a backtest of a published academic anomaly, not a live BTM strategy. We publish it as part of a walk-forward testing program for transparency. It is not a trading recommendation, and Beat The Market does not offer the strategies described above as subscribable products.
Departures from George and Hwang (2004)
Every methodological departure from the published paper is disclosed below in the order it appears in the engine pipeline. Items two and three, which together describe how the eligible universe is assigned per signal and per table, are the most consequential ones for the results presented above. Item two covers Tables I, II, and III. Item three covers the recomputation of the 52-week-high signal on the intersection universe that Table IV requires for apples-to-apples comparison against industry momentum.
- Reporting window. The BTM-side run uses 2009-01 onward, which begins immediately after the SEC EDGAR XBRL filing mandate took effect, whereas the paper's anchor is 1963 to 2001. We split this into three sub-windows for regime-sensitivity diagnostics. Window A covers 2009-01 to 2015-12, Window B covers 2016-01 to 2026-04, and Window C is the pooled 2009-01 to 2026-04 sample.
- Per-signal eligible universe for Tables I, II, and III. JT (individual price momentum) and FH (52-week-high ratio) are computed on the Tiingo-only spine, which is roughly 15,099 cumulative NYSE, NASDAQ, NYSE-MKT, and AMEX common-stock USD-denominated tickers drawn from public.historical_daily_prices. The per-formation-date count grows from about 3,900 in 2009 to about 7,800 by 2022 and averages around 5,500 across the full 2009 to 2026 window. MG (industry momentum) requires the 2-digit SIC code from public.edgartools_companies and is therefore computed on the SEC Tiingo intersection, which spans roughly 2,200 tickers in 2009 growing to about 6,100 by 2026 as SEC EDGAR coverage expanded. At any given formation date the JT and FH cohorts and the MG cohorts are not drawn from the same eligible universe. This boosts statistical power for JT and FH at the cost of precluding a strict three-way comparison on identical universes. Inside Table III the comparison is between JT and FH only, both of which run on the Tiingo-only spine, so the pairwise nested comparison is apples-to-apples on that table.
- Recomputed FH on the intersection universe for Table IV. For Table IV the 52-week-high signal is recomputed on the SEC Tiingo intersection (approximately 2,200 tickers in 2009 growing to 5,700 in 2026) rather than the broader Tiingo-only universe used in Tables I, II, and III. This is required so the 52-week-high signal can be compared apples-to-apples against industry momentum, which requires SIC codes from SEC EDGAR. At every formation date in Table IV the 52-week-high cohorts and industry-momentum cohorts are drawn from the same eligible cross-section. The consequence is that the 52-week-high numbers in Table IV are not directly comparable to the 52-week-high numbers in Tables I, II, and III. A reader comparing the headline 52-week-high spread across tables must hold the universe constant.
- Winsorization. Monthly returns are clipped at the range minus fifty percent to plus one hundred percent to neutralize Tiingo split-adjustment artifacts that occasionally produce a long tail of spurious monthly returns above five hundred percent on roughly 0.3 percent of stock-month observations. Without this clip the bottom-decile portfolios are dominated by one or two extreme cells per formation date.
- Delisting handling. The Shumway (1997) terminal-month proxy of minus thirty percent is applied when a ticker's last observed close is followed by NaN month-ends mid-window. This mitigates the missing-bankrupt-loser survivorship bias inherent in any non-CRSP price dataset.
- MG industry definition. The Moskowitz-Grinblatt (1999) 20-industry partition is approximated by a Fama-French FF17-derived 2-digit SIC mapping because the exact MG 1999 mapping is not machine-readable from the original paper. Our Bloomberg-side replication uses the same approximation for consistency.
- MG portfolio weighting. The original MG specification is value-weighted. We retain equal-weighting on MG for now because the shares-outstanding data needed for value-weighting is not yet back-filled to 2009. Equal-weighted MG spreads can differ from value-weighted spreads by 0.05 to 0.15 percent per month. Value-weighting is deferred until the edgartools_facts shares-outstanding backfill lands.
- Survivorship. The Tiingo dataset is approximately survivorship-bias-free from 2007 onward, although back-filling delisting events for the 2009-onward period is documented but not exhaustive. The Shumway proxy described in item four above is the principal mitigation.
- [1] Jegadeesh, N. and Titman, S. (1993). Returns to Buying Winners and Selling Losers: Implications for Stock Market Efficiency. Journal of Finance, 48(1), 65 to 91.
- [2] Moskowitz, T. J. and Grinblatt, M. (1999). Do Industries Explain Momentum? Journal of Finance, 54(4), 1249 to 1290.
- [3] Daniel, K. and Moskowitz, T. J. (2016). Momentum Crashes. Journal of Financial Economics, 122(2), 221 to 247.
- [4] Barroso, P. and Santa-Clara, P. (2014). Momentum Has Its Moments. Journal of Financial Economics, 116(1), 111 to 120.
- [5] Shumway, T. (1997). The Delisting Bias in CRSP Data. Journal of Finance, 52(1), 327 to 340.
- [6] Primary citation: George, T. J. and Hwang, C.-Y. (2004). The 52-Week High and Momentum Investing. Journal of Finance, 59(5), 2145 to 2176.