The 52-Week High and Momentum Investing
A post-publication out-of-sample 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.
Four 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.
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? Tables III through VI of the original paper, which cover pairwise nesting, Fama-MacBeth regressions, and post-formation persistence, remain out of scope for this run.
Table I · long-short spreads across three windows and three signals
Each cell in Table I below 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. The right pair of columns reports the same statistic after dropping the January observations from each window, which is the convention George and Hwang used to isolate the non-January effect. A double asterisk marks cells where |t| ≥ 1.96, the standard five percent two-tailed cutoff. The second column reports the eligible universe used for each signal, since the JT and FH cohorts run on a broader spine than MG.
| 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 |
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 corrected per-signal universe sharpens the picture and partly overturns the earlier narrower-universe reading. Previously we reported that the FH 52-week-high signal failed to survive the 2009 to 2026 window. That conclusion still holds, but it turns out to be even more severe than the earlier number suggested. On the paper-equivalent Tiingo-only universe, FH across the full 2009 to 2026 window lands at −0.335 percent per month, compared with the earlier narrower-universe reading of −0.138 percent per month. The reason is that the earlier SEC ∩ Tiingo restriction had been quietly functioning as a quality screen, because it filtered toward larger and more established companies with cleaner momentum dynamics.
The new headline is that JT on Window B with January excluded reaches +0.740 percent per month at t = +2.67, the single cell in the eighteen-cell results matrix that crosses the conventional five percent threshold. In plain terms, the 2016 to 2026 regime with January removed decisively rewards an individual-stock six-month momentum signal at journal-acceptable significance. The full pooled JT cell on Window C does not retain that significance, which suggests the effect is concentrated in the post-2014 half of the sample rather than being present uniformly across the whole window.
MG behaves as expected. Industry momentum strengthens as the SEC EDGAR coverage broadens, climbing from +0.046 percent per month on Window A to +0.265 percent per month on Window B. The mechanism is straightforward because per-industry return estimates become noisier when each industry contains fewer constituent firms. As EDGAR coverage roughly doubles across the window, the MG signal-to-noise ratio improves materially, although it never crosses the five percent threshold.
The most important framing context here is that the magnitude compression of FH, going from the paper's published range of +0.40 to +0.70 percent per month down to our negative-to-flat reading, is not a BTM-data artifact. 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. This re-test reproduces that finding on the paper-equivalent universe and reads as one more confirmation of the same regime shift.
This is a backtest of a published academic anomaly, not a live BTM strategy. We publish it as part of an out-of-sample 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. Item two, the per-signal eligible universe, is the most consequential one for the results presented above.
- 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. 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.
- 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.