Skip to content
QUANTGPT

Does post-earnings announcement drift still work?

Updated October 28, 2026

The short answer

On QuantGPT's test from 1998 to September 2026, the library's Bernard and Thomas-inspired post-earnings drift run beat the S&P 500 with dividends on one of growth or Sharpe and not the other, which QuantGPT labels TRADE-OFF. It grew 9.6% a year against 9.4%, gross of trading costs, with a Sharpe ratio of 0.60 against 0.66.

Bernard and Thomas measured the drift over the 60 trading days after the earnings announcement, long the top surprise tenth and short the bottom, NYSE and AMEX stocks, 1974 to 1986. This run buys the 20 liquid US stocks with the biggest surprise at each month-end, long only, dated by the quarterly filing, so it can enter weeks after the news.

The original claim

Bernard & Thomas (1989, 1990), JAR/JAE. Stocks keep drifting in the direction of a quarterly earnings surprise for about 60 trading days. Bernard and Thomas (1990) trace it to prices acting as if earnings follow a seasonal random walk, ignoring their autocorrelation.

In plain words: when a company reports a quarter, measure the surprise: its earnings per share against the same quarter a year earlier, scaled by how much that change has varied before. Buy the tenth of stocks with the biggest positive surprises, sell short the tenth with the biggest negative ones, and hold for about 60 trading days after the announcement.

Extreme-decile spread of about 4.2% size-adjusted over 60 trading days (about 18% annualized before costs), NYSE/AMEX 1974 to 1986, positive in 41 of 48 quarters and larger in small firms. Later studies report it has weakened, especially in large caps.

How QuantGPT's run differs

Each month-end, holds the 20 liquid US stocks with the highest standardized unexpected earnings (SUE, a seasonal random walk, point in time by filing date) among those with a SUE of at least 1, equal weight, long only, held one month. Bernard and Thomas used SUE deciles on NYSE and AMEX stocks, 1974 to 1986, long the top decile and short the bottom, held 60 trading days from the announcement. A SUE stays in place until the next filing, so entry can come up to a quarter after the announcement.

The result

Over this window the criteria beat the benchmark on one of growth or Sharpe and not the other, which QuantGPT labels TRADE-OFF: a description of what the data did, not a prediction and not a recommendation.

One run, 2026-10-28: run_backtest with the library entry's own definition (filter sue_pit >= 1, rank by sue_pit, highest first, top 20, equal weight), from 1998, monthly, against $SPXTR, through QuantGPT's MCP server on terminal.quantgpt.co. Gross of trading costs unless the row says net.
StrategyS&P 500 with dividends
Growth a year, 1998 to September 20269.6%9.4%
Worst fall from a peak-50.1%-50.9%
Sharpe ratio0.600.66
Volatility a year17.9%15.4%
Share of winning months61.3%64.5%
Growth a year, before 20159.1%6.2%
Sharpe ratio, before 20150.600.47
Growth a year, from 201510.2%14.2%
Sharpe ratio, from 20150.610.97
Net of 25 bps a side: growth a year8.4%not modelled (bought and held)
Net of 25 bps a side: Sharpe ratio0.54
Net of 25 bps a side: worst fall-50.7%
Growth of $1: post-earnings drift, as QuantGPT ran it, against the S&P 500 total returnLog scale, from the end of January 1998 to the end of September 2026. $1 in the strategy grew to $13.68 and $1 in the S&P 500 total return to $13.07, gross of costs. Its worst fall from a peak, at month-end closes, was -50.1% against -50.9% for the index.$0.50$1$2$4$8$16200020052010201520202025$13.07$13.68StrategyS&P 500 total returnAs of 2026-09-30, run 2026-10-28, gross of costs
Growth of $1, log scale, gross of costs. Data through 2026-09-30, run 2026-10-28. The monthly returns (CSV).
The same run net of trading costs, charged per side on each month's actual turnover (the engine's average monthly turnover: 18.3%). Gross of costs: 9.6% a year, Sharpe 0.60.
Cost a sideGrowth a yearSharpe ratioWorst fallCost a year
5 bps9.3%0.59-50.2%24 bps
10 bps9.1%0.58-50.3%48 bps
25 bps8.4%0.54-50.7%119 bps
50 bps7.2%0.48-51.2%237 bps

Every year

Losing years for the strategy: 1999 (-5.3%), 2001 (-8.9%), 2002 (-23.6%), 2008 (-36.9%), 2022 (-30.3%).

Calendar years, from each month's return. A year marked cash held no stocks.
YearStrategyS&P 500 with dividends
1998 February to December27.2%27.2%
1999-5.3%21.0%
200039.4%-9.1%
2001-8.9%-11.9%
2002-23.6%-22.1%
200320.1%28.7%
200427.0%10.9%
20055.3%4.9%
20067.7%15.8%
200710.8%5.5%
2008-36.9%-37.0%
200914.3%26.5%
201021.4%15.1%
20117.8%2.1%
201216.5%16.0%
201359.5%32.4%
201414.0%13.7%
20157.2%1.4%
20166.9%12.0%
201723.8%21.8%
20181.8%-4.4%
201919.5%31.5%
202018.7%18.4%
202128.6%28.7%
2022-30.3%-18.1%
202329.8%26.3%
202427.3%25.0%
20250.2%17.9%
2026 January to September0.6%12.7%

Run it yourself

Open it in the terminal from the strategy library (RUN IT on its entry), or read the public result page at terminal.quantgpt.co/study/bernard-thomas-1989. Change the start year, the cutoffs, the number of stocks or the cadence and run it again. Or ask your AI, connected over MCP:

Use QuantGPT to backtest post-earnings drift, the 20 stocks with the biggest standardized earnings surprise each month, from 1998, and show the losing years.

Questions

Does post-earnings announcement drift still work?

On QuantGPT's test it edged the market on growth and trailed it on Sharpe. The library's run, the 20 liquid US stocks with the biggest standardized earnings surprise at each month-end, held one month, grew 9.6% a year from 1998 to September 2026, gross of costs, against 9.4% for the S&P 500 with dividends, with a Sharpe of 0.60 against 0.66. Before 2015 it grew 9.1% a year against 6.2%; from 2015, 10.2% against 14.2%. Over this window the criteria beat the benchmark on one of growth or Sharpe and not the other, which QuantGPT labels TRADE-OFF. The run enters on the quarterly filing date, often weeks after the earnings release, while the paper's drift sits in the days after the announcement.

What is post-earnings announcement drift?

The tendency of a stock to keep moving in the direction of an earnings surprise after the news is out. Bernard and Thomas (1989) sorted NYSE and AMEX stocks, 1974 to 1986, on standardized unexpected earnings (SUE): the change in quarterly earnings per share from the same quarter a year earlier, scaled by its past variability. Long the top tenth and short the bottom earned about 4.2% size-adjusted over the 60 trading days after the announcement, about 18% annualized before costs, positive in 41 of 48 quarters. Later studies report it has weakened, especially in large companies.

What were the worst years for post-earnings drift?

In QuantGPT's run the losing calendar years were 1999 (-5.3%), 2001 (-8.9%), 2002 (-23.6%), 2008 (-36.9%), 2022 (-30.3%). Its worst fall from a peak, at month-end closes, was -50.1% against -50.9% for the S&P 500 with dividends. In 2022 the run lost 30.3% while the index lost 18.1%. Gross of trading costs; net of 25 bps a side it grew 8.4% a year.

Why does QuantGPT's post-earnings drift run enter later than the paper?

Its earnings surprise is point in time by filing date: a quarter's surprise counts from the day its quarterly filing is in the data, and it stays in place until the next filing. So a stock can enter weeks after the earnings release, and up to a quarter after it, while Bernard and Thomas measured the drift from the announcement day.

Where can I backtest post-earnings drift?

On QuantGPT: from the strategy library with one click (RUN IT on the Bernard and Thomas entry opens it in the terminal), or from Claude or ChatGPT connected over MCP, with a question such as: Use QuantGPT to backtest post-earnings drift, the 20 stocks with the biggest standardized earnings surprise each month, from 1998, and show the losing years. You can change the surprise cutoff, the number of stocks, the cadence and the costs. QuantGPT's library documents 175 strategies, 55 of them runnable in one click on decades of US market history. QuantGPT is $49 a month and QuantGPT Pro $149, each with a 3-day free trial.