Pre-Earnings Runup: 25 Years of US Data Shows Beat Rate Matters

155,684 US earnings events from 2000-2025. Habitual beaters drift +0.289% vs S&P 500 in 10 days before announcements. Habitual missers fall -0.321%. The spread between best and worst beat-rate quintiles is 44bp.

Pre-earnings CAR by beat-rate category: habitual beaters +0.289%, mixed +0.107%, missers -0.321% over 10 trading days before earnings announcements

Habitual earnings beaters drift +0.289% above the S&P 500 in the 10 trading days before they announce. Habitual missers fall -0.321%. That's a 61bp spread between two groups of stocks, both approaching the same event, in the same market, over the same window.

Contents

  1. Method
  2. What We Found
  3. The Beat Rate Effect
  4. Academic Evidence
  5. Why the Runup Happens
  6. Screening for Pre-Earnings Opportunities
  7. Limitations
  8. Takeaway
  9. References

The overall effect is real but modest: +0.121% at T-10, statistically significant across 155,684 events. But the overall number obscures the real story. The pre-earnings runup is a beat-rate story. The market doesn't uniformly drift before announcements. It separates stocks with credible beat histories from those without one, and prices them accordingly.

We tested this across NYSE, NASDAQ, and AMEX from 2000 through 2025. The result holds from the Q1-to-Q5 quintile spread (44bp) to the individual category breakdown. Beat rate is not just a post-earnings signal. It predicts pre-announcement behavior too.

Data: FMP financial data warehouse, 2000–2025. Updated March 2026.


Method

Universe: NYSE, NASDAQ, AMEX. Market cap > $1B (historical FY). Period: 2000-2025. 155,684 earnings events. Benchmark: SPY (cumulative abnormal return). Winsorization: 1st/99th percentile.

Beat rate classification: - Habitual Beater: beat rate > 75%, minimum 8 reported quarters - Mixed: beat rate 25%-75% - Habitual Misser: beat rate < 25%

Windows measured: T-10, T-5, T-1 (pre-announcement), T+1 (post-announcement control)

All CARs are relative to SPY over the same window.


What We Found

The pre-earnings drift is statistically significant across all three pre-announcement windows. The interesting structural detail is in how the tails behave at T+1, the announcement day itself.

Pre-Event CAR by Window (Overall, n=155,684):

Window Mean CAR t-stat N Hit Rate
T-10 +0.121% 6.85 155,684 50.1%
T-5 +0.092% 6.42 155,516 50.5%
T-1 +0.048% 4.63 155,540 50.3%
T+1 +0.073% 6.03 155,100 50.0%

The aggregate T+1 result is significant, but that overall number masks a sharp split when you slice by beat history. Both habitual beaters (t=1.93) and habitual missers (t=-1.83) sit just outside the significance threshold on announcement day, while the mixed cohort drives the overall T+1 effect. The pre-event window is where the beat-rate signal lives.

By Category at T-10:

Category Mean CAR t-stat N
Habitual Beater (>75%) +0.289% 6.15 22,788
Mixed (25-75%) +0.107% 5.53 128,523
Overall +0.121% 6.85 155,684
Habitual Misser (<25%) -0.321% -2.51 4,373

Missers don't just underperform. They actively fall. By T-10, habitual missers are -0.321% below the S&P 500 heading into the announcement. The penalty arrives well before the print.

Beaters run up +0.289%, then their T+1 result is +0.074% with a t-stat of 1.93, just below conventional significance. The pre-event positioning captures most of the move; the announcement day reaction is muted for the names where the beat was already priced in.


The Beat Rate Effect

The relationship between beat rate and pre-earnings drift is monotonic. Sort all events into quintiles by historical beat rate and the pattern holds at every step.

Quintile T-10 CAR:

Quintile Beat Rate Range Mean CAR
Q1 (lowest) 0.0%-43.8% -0.108%
Q2 43.8%-54.2% +0.118%
Q3 54.2%-62.8% +0.111%
Q4 62.8%-72.7% +0.154%
Q5 (highest) 72.7%-100% +0.333%

Q5-Q1 spread: 44bp. Q1 stocks lose ground before they announce. Q5 stocks rally. The crossing point sits roughly at the 44% beat rate, the Q1-Q2 boundary.

The pattern isn't perfectly monotonic. Q2 through Q4 cluster together in the +0.11% to +0.15% range. The real separation is between the bottom quintile (Q1, the chronic missers) and the top quintile (Q5, the habitual beaters). Q5-Q4 alone is a 18bp jump.

Habitual beaters (n=22,788) hit statistical significance at all three pre-announcement windows:

Window Mean CAR t-stat Hit Rate
T-10 +0.289% 6.15 51.8%
T-5 +0.212% 5.42 51.7%
T-1 +0.115% 3.81 51.4%
T+1 +0.074% 1.93 49.9%

Consistent drift across all three pre-announcement windows. T+1 sits at t=1.93, just below the 1.96 threshold. The pre-event positioning is the systematic part; the announcement day itself goes quiet for the names where the market already expected a beat.

Pre-earnings CAR by beat-rate category: habitual beaters +0.289%, mixed +0.107%, missers -0.321% over 10 trading days before earnings
Pre-earnings CAR by beat-rate category: habitual beaters +0.289%, mixed +0.107%, missers -0.321% over 10 trading days before earnings


Academic Evidence

This isn't a new finding. Barber, De George, Lehavy, and Trueman (2013) documented a pre-earnings premium in the Journal of Financial Economics. They found abnormal returns in the days before announcements, concentrated in stocks with stronger earnings histories and higher trading volume expectations. The mechanism they propose: informed investors position ahead of expected beats, lifting prices before the fact.

So and Wang (2014) took a different angle in the Journal of Financial Economics, focusing on liquidity provision. Options market makers and short-term traders accumulate positions ahead of announcements. The cost of that liquidity provision shows up as a drift premium for stocks where the directional outcome is more predictable. Habitual beaters have more predictable outcomes, so liquidity providers are more willing to accumulate early.

Both papers point in the same direction: the pre-announcement drift is driven by informed positioning, and the signal is stronger when the expected outcome is clearer.


Why the Runup Happens

Three mechanisms, each reinforcing the others:

Informed positioning. Institutional investors with fundamental models know which companies have consistent beat histories. They build positions early. The buying pressure accumulates over 10 trading days, not in one session.

Options market dynamics. Companies approaching earnings see rising implied volatility. Market makers hedge their options books by buying underlying shares. For stocks with credible beat histories, the hedging demand skews bullish.

Habitual beater effect. Companies that beat consistently often do so through guidance management. Management teams with a track record of sandbagging estimates are better known to the market. Analysts and investors price in an expected beat before it happens.

Liquidity premium. Some of the T-10 CAR reflects compensation for holding through event risk. Investors who provide liquidity into the announcement window earn a premium for absorbing that uncertainty.

These aren't competing explanations. They're additive. A stock with a 90% historical beat rate is subject to all four simultaneously.


Screening for Pre-Earnings Opportunities

Simple screen (upcoming earnings, ranked by beat rate):

SELECT ec.symbol,
    CAST(ec.date AS DATE) AS earnings_date,
    ec.epsEstimated,
    COUNT(es.symbol) AS prior_reports,
    SUM(CASE WHEN es.epsActual > es.epsEstimated THEN 1 ELSE 0 END) AS beats,
    ROUND(SUM(CASE WHEN es.epsActual > es.epsEstimated THEN 1 ELSE 0 END)
        * 100.0 / NULLIF(COUNT(es.symbol), 0), 1) AS beat_rate_pct
FROM earnings_calendar ec
LEFT JOIN earnings_surprises es ON ec.symbol = es.symbol
    AND CAST(es.date AS DATE) < CAST(ec.date AS DATE)
WHERE CAST(ec.date AS DATE) BETWEEN CURRENT_DATE AND CURRENT_DATE + INTERVAL '14' DAY
  AND ec.epsEstimated IS NOT NULL
GROUP BY ec.symbol, CAST(ec.date AS DATE), ec.epsEstimated
HAVING COUNT(es.symbol) >= 4
ORDER BY beat_rate_pct DESC
LIMIT 30

Advanced screen (habitual beaters only, >$1B market cap):

WITH beat_history AS (
    SELECT symbol,
        COUNT(*) AS total_reports,
        SUM(CASE WHEN epsActual > epsEstimated THEN 1 ELSE 0 END) AS beats,
        ROUND(SUM(CASE WHEN epsActual > epsEstimated THEN 1 ELSE 0 END)
            * 100.0 / COUNT(*), 1) AS beat_rate_pct
    FROM earnings_surprises
    WHERE epsEstimated IS NOT NULL
      AND ABS(epsEstimated) > 0.01
    GROUP BY symbol
    HAVING COUNT(*) >= 8
),
upcoming AS (
    SELECT symbol, CAST(date AS DATE) AS earnings_date, epsEstimated
    FROM earnings_calendar
    WHERE CAST(date AS DATE) BETWEEN CURRENT_DATE AND CURRENT_DATE + INTERVAL '14' DAY
      AND epsEstimated IS NOT NULL
)
SELECT u.symbol, u.earnings_date, u.epsEstimated,
    bh.beat_rate_pct, bh.beats, bh.total_reports,
    ROUND(k.marketCap / 1e9, 1) AS mktcap_bn
FROM upcoming u
JOIN beat_history bh ON u.symbol = bh.symbol
JOIN key_metrics k ON u.symbol = k.symbol AND k.period = 'FY'
WHERE k.marketCap > 1000000000
  AND bh.beat_rate_pct >= 75
QUALIFY ROW_NUMBER() OVER (PARTITION BY u.symbol ORDER BY k.date DESC) = 1
ORDER BY bh.beat_rate_pct DESC, ROUND(k.marketCap / 1e9, 1) DESC
LIMIT 30

The advanced screen targets the habitual beater cohort directly. These are the 22,788 events where the T-10 CAR averaged +0.289% with a t-stat of 6.15.


Limitations

Transaction costs. The +0.289% gross CAR for habitual beaters looks clean on paper. After bid-ask spreads and market impact, the net capture shrinks. This matters more for smaller-cap names in the beater cohort.

Benchmark. SPY is a simple benchmark. A multi-factor model (Fama-French 5-factor, or at minimum sector-adjusted) would more precisely isolate the pre-earnings effect from momentum, quality, and size exposures that habitual beaters tend to carry.

Crowding. The pre-earnings drift is documented in academic literature going back to 2013. Systematic funds screen for this. More capital chasing the same signal compresses returns over time. Our 2000-2025 aggregate may overstate what's available today.

Sample construction. The habitual misser cohort (n=4,373) is small relative to the overall universe. Low-beat-rate companies may face survivorship issues, delisting, or coverage loss. The -0.321% CAR for this group should be interpreted with that in mind.

Estimate quality. Consensus estimates in the data warehouse reflect final pre-announcement numbers. The market may have already absorbed revisions in the days prior, partially explaining the drift.


Takeaway

The pre-earnings runup is a real phenomenon in US equity markets. 155,684 events, 25 years, statistically significant across all three pre-announcement windows.

But the aggregate number (+0.121%) is not the signal. The signal is in the tails. Habitual beaters drift +0.289% at T-10. Habitual missers fall -0.321%. The spread between Q5 and Q1 beat-rate quintiles is 44bp over 10 trading days.

Beat rate is a forward-looking indicator, not just a backward-looking label. The market prices in the expected outcome before it happens. That's the mechanism, the academic explanation, and the practical screen. Sort upcoming earnings by historical beat rate, filter for minimum eight quarters of data, and focus on the companies that consistently beat expectations. That's where the pre-announcement drift concentrates.


Data: Ceta Research (FMP financial data). Event study: earnings_surprises + earnings_calendar + stock_eod + key_metrics tables. Market cap filter: >$1B (FY historical). Benchmark: SPY. Winsorized at 1%/99%. This is educational content, not investment advice.

References

  • Barber, B., De George, E., Lehavy, R. & Trueman, B. (2013). "The Earnings Announcement Premium Around the Globe." Journal of Financial Economics, 108(1), 118-138.
  • So, E. & Wang, S. (2014). "News-Driven Return Reversals: Liquidity Provision Ahead of Earnings Announcements." Journal of Financial Economics, 114(1), 20-35.