Cross-Sectional Momentum: The Equity-Native Version of the Trend Trade

The managed-futures industry is built on one idea: markets trend, so buy what is going up and sell what is going down, across dozens of futures markets at once. A CTA looks at gold, the Bund, soybeans, the yen, and asks each in turn — is this contract in an uptrend? That is time-series momentum: every market judged against its own past.

We do not trade futures. Our engine trades US equities, so the honest thing is not to claim a trend-following product we do not run, but to implement the question that is native to a stock universe. In a market of three thousand names all breathing the same macro air, “is it trending?” is nearly the same question three thousand times over — when the index rises, most stocks rise. The equity-native question is different and sharper: which names are beating their peers? That is cross-sectional momentum, and it is what the hero image above shows — a fleet of identical boats in identical wind, where the only signal that matters is relative position within the fleet.

The behavioral driver is the same one CTAs harvest — investors under-react to news, then herd into the move — but the implementation, the risks, and the failure modes are specific to equities. This article gives you the formula, the exact basket-selection code our engine runs, the measured performance of a momentum sleeve on our own point-in-time panels, and three uncomfortable findings the data handed us: the textbook refinement that did nothing, the hedge that hedged nothing, and the month the strategy lost a third of its value.

Time-Series vs Cross-Sectional: The Mapping

Both trades exploit the same anomaly. The difference is the benchmark each name is measured against:

Time-series (CTA)Cross-sectional (equities)
QuestionIs this market above its own past?Is this stock beating its peers?
UniverseDozens of futures marketsThousands of stocks
Net exposureVaries; can be flat or net shortStructurally near-neutral if long/short
Best environmentSustained directional movesPersistent leadership dispersion
Classic failureChoppy, mean-reverting marketsSharp leadership reversals

The practical consequence: a cross-sectional book makes no market call. It can be fully invested through a bear market and still profit, provided the names it holds fall less than the names it shorts. That is a genuinely different risk than a CTA’s, and it is why the leadership rotations our market coverage tracks — like the broadening we documented in early July — matter more to this strategy than the index level does.

The Formula

The canonical academic definition is 12-1 momentum: the trailing twelve-month return, skipping the most recent month:

mom(i,t) = P(i, t−1 month) / P(i, t−12 months) − 1

rank all eligible stocks by mom(i,t) each month
  long  the top N        (recent relative winners)
  short the bottom N     (recent relative losers)
hold until the next rebalance

The skipped month is not decoration. Over horizons of a few weeks, stocks tend to reverse rather than continue — a well-documented short-term effect driven by liquidity provision and bid-ask bounce. Including last month’s return therefore mixes a reversal signal into a continuation signal. The academic convention drops it to keep the two effects from cancelling.

That is the theory. We tested it on our own data, and it is the first place the textbook did not survive contact.

What the Momentum Signal Is Actually Worth

Using the same point-in-time panels and the same information-coefficient harness from the previous article — monthly rank correlation against next-month returns, over a production-spec universe (median about 2,660 liquid US names) — here is what each momentum definition measured:

DefinitionMean ICt-stat% months positive
12-1 momentum (skip last month)1.89%1.4460.2%
12-0 momentum (plain, our mom12)1.94%1.3860.2%
6-month momentum (our mom6)2.02%1.6755.5%

Two honest readings. First, the celebrated skip-month refinement bought us nothing — 1.89% versus 1.94% is a rounding error, and if anything the plain version scored higher. Our live composite uses the plain 6- and 12-month definitions, and this is the evidence for why we did not complicate them: a refinement that cannot demonstrate its value in your own data and universe is decoration you would have to maintain forever.

Second, and more importantly: momentum is the weakest factor we trade. Compare these t-statistics of 1.4 to 1.7 with the fundamental factors from the previous article — interest coverage at 6.08, net share issuance at 5.95, cash profitability at 6.49. By conventional standards these momentum readings are not even statistically significant. That is not a reason to discard momentum; it is a reason to be precise about its job. In our composite momentum is a regime driver, a fast-moving counterweight to slow fundamental signals that would otherwise buy value traps all the way down. It is a supporting instrument, and we should not pretend the data says otherwise.

The Implementation: From Score to Basket

A score is not a portfolio. Turning ranks into holdings is where a real engine earns its keep, and the code below is the actual selection logic our platform runs — note what it does not do, which is blindly take the top N every month:

def _select(order, rank, prev_held, n, buffer, exclude):
    """N names from `order`: keep prev-held names within rank < N+buffer,
    then fill from the best non-held; never pick from `exclude`."""
    kept = sorted(
        (t for t in prev_held
         if t not in exclude and rank.get(t, 1 << 30) < n + buffer),
        key=lambda t: rank[t],
    )[:n]
    keptset = set(kept)
    fill = [t for t in order if t not in keptset and t not in exclude][: n - len(kept)]
    return sorted(kept + fill)

def _buffer(config):
    if config.buffer is not None:
        return config.buffer
    return max(1, round(0.4 * config.n_long - 2))   # auto: 10 at N=30

This is rank hysteresis. A name you already hold is not sold the moment it slips out of the top 30 — it is kept while its rank stays inside 30 + buffer, which for a 30-name book means rank 40. Only when it falls past that line does it get replaced by the best name you do not own. The economics are simple: the difference in expected return between the 30th and 38th ranked stock is small, while the cost of selling one and buying the other is certain.

How much churn does that save? We ran the sleeve twice, changing only that parameter:

SettingMonthly turnover of the long book
No hysteresis (buffer = 0)34.5%
Production auto-buffer (10 at N=30)27.0%

7.5 percentage points a month — a fifth of the trading eliminated — for a parameter that changes nothing about the investment thesis. Momentum is an inherently high-turnover strategy (replacing over a quarter of the book every month, versus a few percent for a value sleeve), which is exactly why this matters here more than anywhere else. Every avoided trade is spread and slippage you keep, a thread we pick up when we get to execution and market impact later in this series.

What the Sleeve Returned

We then ran the full sleeve: each month, rank the universe by 12-1 momentum, select 30 longs and 30 shorts through the real basket code above, hold equal-weight for the month, compound. The window is January 2017 through May 2026 — 113 months.

What this measurement is and isn’t This is a scoped research calculation: month-end close to month-end close, equal weight, and gross of costs — not our full engine, which fills at the next open, charges 10 basis points of slippage per side, and applies stops. It isolates the factor rather than simulating a tradeable product. At 27% monthly turnover, costs would take a real bite; treat the gross figures as the signal’s raw strength, not a return you could have banked.
BookTotal return (113 months, gross)Annualized vol
Momentum longs (top 30)+476.5%37.3%
Momentum shorts (bottom 30)−75.6%44.1%
Long–short spread+831.5%37.3%
SPY (same window)+277.6%
QQQ (same window)+516.5%

The long book beat SPY by a wide margin and still trailed QQQ — a recurring pattern in this series, and a reminder that in a decade led by large-cap technology, the honest benchmark question is which index you should have been compared against. The short book fell 75.6%, confirming that the losers really did keep losing: the anomaly is genuine in both directions.

Now the third uncomfortable finding, hiding in the volatility column. The long-only book ran at 37.3% annualized volatility. The long-short book, supposedly hedged, also ran at 37.3%. Adding a short leg reduced volatility by essentially nothing. The reason is in the data: the short book is itself violently volatile (44.1%) and moves with the long book, correlation 0.59. Momentum losers are typically high-beta, damaged growth names, so shorting them does not hedge a portfolio of high-beta winners — it doubles down on the same factor bet from the other side. The spread earns more, but a market-neutral construction is not automatically a low-risk one.

The Risk: Crashes, Churn, and Crowding

Momentum crashes. This is the strategy’s signature failure and it is not subtle in our numbers. The long-short spread’s worst month was December 2022 at −37.1%, followed by August 2019 (−24.0%), October 2025 (−22.0%), June 2023 (−19.5%), and November 2024 (−19.3%). The monthly distribution is negatively skewed (−0.45) with fat tails (excess kurtosis 1.08) around a 61.1% win rate. That is the classic momentum profile: win often, lose enormously when you lose. These reversals cluster where theory predicts — at violent turns in leadership, typically when a beaten-down cohort rebounds hardest and the short book explodes upward while the crowded long book unwinds.

Why the crashes are structural, not bad luck A momentum book is, by construction, long whatever has already worked and short whatever has already been destroyed. That makes it maximally exposed to exactly one event: the market deciding it was wrong about both groups at once. You cannot diversify this away inside the factor — the position is the exposure. You can only size it, pair it with factors that behave differently (fundamental quality and value, which is what our composite does), and expect the tail.

Turnover and costs. Even with hysteresis the book replaces 27% of its names monthly — roughly the entire portfolio over four months. A signal with a 1.9% information coefficient does not have much cushion to pay spreads, slippage, and market impact out of. This is the factor where implementation quality most directly determines whether a real edge survives to the P&L.

Crowding and decay. Momentum is the most widely known, most heavily productized anomaly in equities — dozens of ETFs run versions of the calculation above, on similar universes, rebalancing on similar calendars. Crowded factors are prone both to decay and to sharper unwinds when everyone reaches for the exit together. Monitoring live factor performance for evidence of decay, and deciding when a factor has earned retirement, is an operations discipline we take up near the end of this series; the rest of the curriculum is on the Macro & Strategy hub.

Where these numbers come from Every figure above was produced by a committed evidence script that calls our production code unmodified — the same point-in-time panels the live system trades and the real select_basket hysteresis — and writes its results to JSON; this article quotes only that file. Backtested results are hypothetical, gross of costs, cover 2017–2026, and are not a promise about the future.

The AlphaEdge Take

Cross-sectional momentum is the honest equity translation of the CTA trade: stop asking whether the market is trending and start ranking names against their peers — a question you can actually test on stock data. But our own measurements argue for humility about it. The textbook skip-month refinement added nothing (1.89% versus 1.94% information coefficient); the signal is the weakest in our factor set by a wide margin, with a t-statistic near 1.4 against roughly 6 for cash-flow quality; the short leg hedged almost none of the volatility because losers and winners move together; and the spread lost 37% in a single month when leadership turned. Trade it as a fast-moving complement to slow fundamental factors, damp its churn with rank hysteresis, and size it for the crash that is coming rather than the win rate that flatters it.

Georgi Kuzmanov

Senior Equity Analyst & Founder at AlphaEdge. Columbia University MSFE (2011–2013). Covering equities, macro, and geopolitics for serious investors.

Disclosure: This article is for informational purposes only and does not constitute investment advice. Backtested and hypothetical performance results have inherent limitations and do not represent actual trading; past performance is not indicative of future results. The author may hold positions in securities mentioned. AlphaEdge is an independent publication and is not affiliated with any broker, fund, financial institution, investment adviser, or broker-dealer. Always do your own research before making investment decisions. See our Financial Disclaimer.