We Backtested Revenue Surprise Momentum on 25 Years of US Data
We ran a quarterly revenue surprise strategy, buying stocks that beat analyst revenue consensus estimates, on all US stocks (NYSE, NASDAQ, AMEX) from 2000 to 2025. The result: 10.11% annualized vs 8.01% for the S&P 500. A $10,000 investment grew to $119,368 vs $72,745 for the index. The strategy outperformed by 2.1 percentage points per year, with slightly less downside than the benchmark during crashes.
Contents
- Method
- What is Revenue Surprise?
- What We Found
- Companies that beat revenue estimates outperform. Quarterly.
- Year-by-Year Returns
- When it works: fundamentals-driven markets
- When it struggles: multiple expansion environments
- Why the Signal Works
- The Quarterly Rebalancing Requirement
- Limitations
- Takeaway
- Run This Screen Yourself
- Part of a Series
- References
The catch: it failed badly in 2020-2021, and annual rebalancing produced the opposite result (-5.1% vs the index). The quarterly timing is everything.
Method
- Data source: Ceta Research (FMP financial data warehouse)
- Universe: NYSE + NASDAQ + AMEX, market cap > $2B USD
- Period: 2000–2025 (25.8 years, 103 quarterly periods)
- Rebalancing: Quarterly (January, April, July, October), equal weight
- Benchmark: S&P 500 Total Return (SPY)
- Cash rule: Hold cash if fewer than 10 stocks qualify
- Transaction costs: Size-tiered model (0.1–0.5% one-way based on market cap)
Financial data uses a 45-day lag on quarterly filings to prevent look-ahead bias. The revenue surprise signal is computed from fiscal quarter filings as they would have been available at each rebalance date.
All five filters must pass at each quarterly rebalance:
| Filter | Threshold | Why |
|---|---|---|
| Revenue surprise | 0% < surprise < 50% | Beats estimates, excludes outliers |
| ROE | > 8% | Quality filter — profitable on equity |
| Debt/Equity | < 2.5 | Reasonable leverage |
| Market cap | > $2B USD | Liquid, institutional-grade stocks |
| Qualifying stocks | ≥ 10 | Minimum for diversification |
From qualifying stocks, the portfolio holds the top 30 by highest revenue surprise percentage, equal weight.
What is Revenue Surprise?
Revenue surprise is the difference between a company's actual quarterly revenue and the analyst consensus estimate, expressed as a percentage:
Revenue Surprise = (Actual Revenue - Analyst Consensus) / |Analyst Consensus|
A company reporting $120B revenue against an analyst estimate of $115B has a +4.35% revenue surprise. A company missing at $110B has a -4.35% revenue surprise.
The academic basis comes from Jegadeesh & Livnat (2006), who found that positive revenue surprises predict positive stock returns for 1–3 months after announcement. The effect is distinct from earnings surprise (which can result from cost-cutting) because revenue beats require genuine demand growth, harder to manufacture and more predictive of future business trajectory.
Why we filter for 0–50% surprises: Surprises above 50% are usually data problems, currency mismatches between estimate and actual, restatements, or fiscal year mismatches. They don't represent real revenue beats.
Why quarterly, not annual: Revenue surprise is a short-term signal. The drift fades within months. When we tested annual rebalancing (using full-year revenue vs annual estimates), the strategy underperformed SPY by 5.1% annually. Quarterly rebalancing captures the 1–3 month drift window described in the academic literature.
What We Found
Companies that beat revenue estimates outperform. Quarterly.

| Metric | Rev Surprise US | S&P 500 |
|---|---|---|
| CAGR | 10.11% | 8.01% |
| Total Return | 1,094% | 627% |
| Max Drawdown | -44.9% | -45.5% |
| Volatility | 21.59% | 16.97% |
| Sharpe Ratio | 0.376 | 0.354 |
| Sortino Ratio | 0.583 | 0.523 |
| Up Capture | 110.8% | — |
| Down Capture | 90.9% | — |
| Beta | 1.053 | — |
| Cash Periods | 0 of 103 | — |
| Avg Stocks | 29.3 | — |
The asymmetry between up capture (110.8%) and down capture (90.9%) is the key result. The strategy captures more upside than the market and less downside. Over 25 years, that asymmetry compounds to a 1,094% total return vs the market's 627%.
The maximum drawdown is nearly identical to the S&P 500 (-44.9% vs -45.5%), so you're not taking on meaningfully more crash risk. You're getting extra upside with roughly the same downside.
Year-by-Year Returns

| Year | Rev Surprise | S&P 500 | Excess |
|---|---|---|---|
| 2000 | +31.3% | -10.5% | +41.8% |
| 2001 | +4.3% | -9.2% | +13.4% |
| 2002 | -8.6% | -19.9% | +11.3% |
| 2003 | +37.0% | +24.1% | +12.8% |
| 2004 | +17.4% | +10.2% | +7.2% |
| 2005 | +19.7% | +7.2% | +12.5% |
| 2006 | +12.9% | +13.7% | -0.8% |
| 2007 | -9.7% | +4.4% | -14.1% |
| 2008 | -26.5% | -34.3% | +7.8% |
| 2009 | +49.8% | +24.7% | +25.1% |
| 2010 | +20.1% | +14.3% | +5.8% |
| 2011 | -0.1% | +2.5% | -2.5% |
| 2012 | +16.2% | +17.1% | -0.9% |
| 2013 | +22.2% | +27.8% | -5.5% |
| 2014 | +4.9% | +14.5% | -9.6% |
| 2015 | -6.4% | -0.1% | -6.3% |
| 2016 | +29.4% | +14.5% | +14.9% |
| 2017 | +28.0% | +21.6% | +6.3% |
| 2018 | -8.0% | -5.2% | -2.9% |
| 2019 | +31.3% | +32.3% | -1.1% |
| 2020 | -4.5% | +15.6% | -20.1% |
| 2021 | -1.3% | +31.3% | -32.6% |
| 2022 | -21.7% | -19.0% | -2.7% |
| 2023 | +27.1% | +26.0% | +1.1% |
| 2024 | +19.9% | +25.3% | -5.4% |
| 2025 | +17.3% | +15.3% | +1.9% |
When it works: fundamentals-driven markets
The strategy's best periods were the early 2000s and the post-financial crisis recovery. In those environments, company fundamentals drove stock prices: companies with real demand growth and genuine revenue beats were rewarded.
The dot-com bust stands out. In 2000, as tech valuations collapsed, the revenue surprise screen selected companies with actual business, not story stocks. The portfolio returned +31.3% while the S&P 500 lost -10.5%. The same held through 2002: the strategy lost money but far less than the index.
2008 was similar. Revenue surprise stocks, companies with genuine demand growth, lost less than the market (-26.5% vs -34.3%). The screen kept selecting businesses with real sales momentum, which crashed less than highly valued growth names when credit froze. 2009 followed with a massive recovery: +49.8% vs +24.7%.
2016-2017 was another strong period. The strategy delivered +14.9% excess in 2016 alone, its best year since 2000.
When it struggles: multiple expansion environments
The consistent failure mode is multiple expansion, periods when markets run on narrative and liquidity rather than fundamental results.
2013-2015 was a textbook case. The Federal Reserve's quantitative easing program kept rates near zero and sent capital into long-duration growth assets. Companies with high multiples and compelling narratives outperformed regardless of current revenue results. Revenue surprise stocks, often tilted toward companies with visible near-term demand rather than distant future promises, got left behind in each of those three years.
2020-2021 was worse. COVID disrupted revenue across the economy in Q1-Q2 2020, making the signal unreliable. As economies reopened in late 2020 and 2021, the Fed's emergency stimulus inflated tech multiples to extremes. The Nasdaq returned +44% in 2020. Companies with surging stock prices often showed neutral revenue surprises, their valuations had run so far ahead of fundamentals that meeting estimates was already priced in. Meanwhile, companies outside tech that beat modest estimates had already had their modest rally. The strategy returned -4.5% and -1.3% in those two years as SPY returned +15.6% and +31.3%.
2022 was unusual: the strategy roughly matched the market (-21.7% vs -19.0%). Rising rates hit everything, and companies with strong revenue weren't exempt. But they fell no more than the index, which, given the prior two years, was a relative win.
Why the Signal Works
Analysts anchor on recent results when making quarterly revenue estimates. A company that guided for flat revenue tends to get flat consensus estimates even when channel data, web traffic, credit card spending, or supplier orders suggest accelerating demand. When the actual result comes in above consensus, the market initially underreacts, analysts update their models slowly, and investors who missed the early move start buying over the following weeks.
This behavior produces a drift: stocks that beat revenue estimates continue to outperform for approximately 1–3 months after the announcement. The effect is shorter-lived than earnings surprise momentum, but it exists and it's measurable.
Why revenue rather than earnings? Earnings can be manufactured through cost cuts, accounting choices, or one-time adjustments. A company can report earnings above estimates while actual business is deteriorating. Revenue is much harder to inflate, it requires customers actually buying more product. Revenue beats are more likely to reflect genuine demand growth.
The Quarterly Rebalancing Requirement
We first tested this strategy with annual rebalancing, using full-year revenue filings against annual analyst estimates. The result was -5.1% excess over 25 years, worse than the benchmark.
The reason is mechanical. Annual filings are reported in January-April for December year-ends. If we rebalance in July (after applying the 45-day filing lag), we're holding a revenue surprise signal from a fiscal year that ended 7–10 months earlier. The momentum effect has fully faded. We're selecting stocks based on stale information.
Quarterly rebalancing closes that gap. A Q4 fiscal year quarter ending December 31 gets filed in February-March. With a 45-day lag for data availability, we know the result by mid-April. A January or April rebalance date, within 1–4 months of the filing, captures the actual momentum window.
The data showed this cleanly. Annual: -5.1% excess. Quarterly: +2.1% excess. Same universe, same filters, same quality criteria. Just a different holding period.
Limitations
Point-in-time compliance. The 45-day filing lag is an approximation. Some companies file late, some early. This is a best-effort simulation, not a guaranteed clean cutoff.
Survivorship bias. Company profiles use current exchange listings. Delistings and bankruptcies aren't tracked through their terminal events, which biases results upward.
Transaction costs included. Results use size-tiered costs (0.1–0.5% one-way). Academic comparisons without costs would show approximately 0.3–0.5% higher returns.
Analyst estimate coverage. This strategy requires quarterly analyst revenue estimates. In the US, this data is comprehensive from the early 1990s. International markets have much sparser coverage, the strategy is US-centric by data availability, not by design.
25-year backtest, multiple regimes. The 2000–2025 period includes the tech bust, the financial crisis, QE, COVID, and rate normalization. Performance differed across these regimes. The 2020-2021 period in particular shows what happens when the strategy faces extreme monetary conditions. No backtest guarantees future regime behavior.
Takeaway
Revenue surprise momentum works in the US equity market. 10.11% CAGR vs 8.01% for the S&P 500, over 25 years, with better downside protection and a favorable asymmetry between up and down capture.
The strategy isn't flashy, 2.1% excess isn't a lottery ticket. But the mechanism is real: companies with genuine demand growth beat analyst estimates, the market underreacts initially, and the price drifts upward over the following quarter. Systematic quarterly rebalancing captures that drift with discipline.
The risk is multiple expansion environments, where narrative and liquidity dominate fundamentals. 2020-2021 cost 52 percentage points in cumulative excess. If you're running this alongside other strategies, be aware that it underperforms in QE-driven bull markets.
We tested this across 9 exchanges. The US is the only market where the strategy works reliably. See the full comparison.
Run This Screen Yourself
The current revenue surprise screen (US stocks, most recent quarterly filing):
WITH rev_surprise AS (
SELECT i.symbol,
i.revenue AS actual_revenue,
a.revenueAvg AS est_revenue,
(i.revenue - a.revenueAvg) / ABS(a.revenueAvg) AS rev_surprise_pct,
CAST(i.date AS DATE) AS filing_date,
ROW_NUMBER() OVER (PARTITION BY i.symbol ORDER BY i.dateEpoch DESC) AS rn
FROM income_statement i
JOIN analyst_estimates a ON i.symbol = a.symbol
AND a.period = 'quarter'
AND ABS(CAST(i.dateEpoch AS BIGINT) - CAST(a.dateEpoch AS BIGINT)) <= 7776000
WHERE i.period IN ('Q1', 'Q2', 'Q3', 'Q4')
AND i.revenue IS NOT NULL AND i.revenue > 0
AND a.revenueAvg IS NOT NULL AND a.revenueAvg > 0
)
SELECT rs.symbol, p.companyName, p.sector,
ROUND(rs.rev_surprise_pct * 100, 2) AS rev_surprise_pct,
ROUND(k.returnOnEquityTTM * 100, 2) AS roe_pct,
ROUND(f.debtToEquityRatioTTM, 2) AS de_ratio,
ROUND(k.marketCap / 1e9, 2) AS mktcap_b,
rs.filing_date
FROM rev_surprise rs
JOIN profile p ON rs.symbol = p.symbol
JOIN key_metrics_ttm k ON rs.symbol = k.symbol
JOIN financial_ratios_ttm f ON rs.symbol = f.symbol
WHERE rs.rn = 1
AND rs.rev_surprise_pct > 0
AND rs.rev_surprise_pct < 0.5
AND k.returnOnEquityTTM > 0.08
AND (f.debtToEquityRatioTTM IS NULL OR f.debtToEquityRatioTTM < 2.5)
AND k.marketCap > 2000000000
AND p.exchange IN ('NYSE', 'NASDAQ', 'AMEX')
ORDER BY rs.rev_surprise_pct DESC
LIMIT 30
Run this screen on Ceta Research
The full backtest code (Python + DuckDB) is on GitHub.
Part of a Series
This post is part of our Revenue Surprise global exchange comparison:
- Revenue Surprise Momentum: 9-Exchange Global Comparison. US is the only market with sufficient analyst estimate data
References
- Jegadeesh, N. & Livnat, J. (2006). "Revenue Surprises and Stock Returns." Journal of Accounting and Economics, 41(1–2), 147–166. (Core paper establishing revenue surprise momentum)
- Bernard, V. & Thomas, J. (1989). "Post-Earnings-Announcement Drift: Delayed Price Response or Risk Premium?" Journal of Accounting Research, 27, 1–36. (PEAD foundation, related to revenue surprise drift)
- Sloan, R. (1996). "Do Stock Prices Fully Reflect Information in Accruals and Cash Flows About Future Earnings?" The Accounting Review, 71(3), 289–315. (Context: accrual anomaly, fundamental surprise signals)
Run It Yourself
Explore the data behind this analysis on Ceta Research. Query our financial data warehouse with SQL, build custom screens, and run your own backtests across 70,000+ stocks on 20 exchanges.
Data: Ceta Research, FMP financial data warehouse. Universe: NYSE + NASDAQ + AMEX. Quarterly rebalance, equal weight, transaction costs included, 2000–2025.