explainer · 11 min read · 27 Apr 2026

Post-earnings-announcement drift — a step-by-step walkthrough on a real-world setup

Bernard-Thomas 1989 documented one of the most durable anomalies in finance: stocks that beat earnings keep drifting upward for 60 trading days. Here's how DeepVane reads PEAD, factor by factor, on an illustrative setup — including the one trade that got it wrong and why.

On April 24th 1989 two accounting researchers at Cornell published a paper that has been quietly making people money ever since. Victor Bernard and Jacob Thomas had spent two years staring at thousands of earnings releases and the daily price moves that followed each one. What they found was so boring it took years for academics to believe it: stocks that beat earnings expectations kept drifting upward for sixty trading days, and stocks that missed kept drifting downward for sixty trading days. Not for a few hours. Not for a week. For three months.

That paper — Bernard & Thomas, “Post-Earnings-Announcement Drift: Delayed Price Response or Risk Premium?” — is the academic anchor for the PEAD factor in DeepVane's twelve-factor APEX engine. This post walks through what the paper actually says, why the drift persists thirty-six years later, and how DeepVane reads PEAD on a worked example. We'll also cover the trade that got it wrong, because every factor has a failure mode and pretending otherwise is how people lose money.

Why the drift exists at all

Earnings releases drop a lot of information into the market in three seconds. The headline number — earnings per share — is the easy part. Underneath it sit forward guidance, segment breakdowns, capex plans, commentary about pricing power, hints at next quarter's tax rate, and forty other variables that take analysts a week to digest and institutional clients another week to act on.

While that processing happens, the price keeps moving. Index funds rebalance on the next quarter end. Sell-side analysts publish revised estimates over the following two weeks. Quant funds running earnings- revision strategies start buying. Closet-indexing active managers wait for the next reporting deadline. By the time everyone has updated, two months have gone by and the stock has drifted ten or fifteen percent in the direction the earnings surprise pointed.

Bernard & Thomas estimated that the drift represents about three percent excess return per quarter for the top-decile-surprise cohort versus the bottom decile. The effect compounds, persists across decades, works in every developed market, and survives every transaction-cost sensitivity test thrown at it. It is one of the most durable anomalies in academic finance, and it is also strangely under-traded by retail. We think the reason is operational: most retail tools surface a single post-earnings price move (“the stock popped 8% on earnings”) and stop there. They don't track the sixty-day continuation, and they certainly don't score it against the rest of the factor stack.

The setup, illustratively

Let's walk through a hypothetical earnings beat to see how DeepVane weights the components. We'll use a fictional ticker — call it XYZX — for a mid-cap industrial company. The numbers below are illustrative; the reasoning maps directly onto how the engine reads any real earnings release.

Step 1 — the surprise itself

XYZX reports Q3 EPS of $1.42 versus consensus of $1.18 — a 20% beat. The stock pops 9% on the print. PEAD's starting question is how big was the surprise relative to historical noise? Not the dollar amount, the standardised version: the residual from a rolling-eight-quarter trend, divided by the standard deviation of those residuals. Bernard & Thomas called this SUE (Standardised Unexpected Earnings). For XYZX, SUE comes in at +2.1, putting the surprise in the top decile across the universe that quarter.

Step 2 — was the price reaction big enough?

A counter-intuitive part of the strategy: PEAD works best when the first-day price reaction is small relative to the surprise. That sounds backwards until you think about it. If a 20% beat moves the stock 25%, the market has fully priced it in already and there's no drift left to harvest. If a 20% beat moves the stock only 9%, the market is under-reacting and the drift is the fix.

DeepVane scores this by computing an “under-reaction ratio” — first-day return divided by historical regression coefficient on SUE. For XYZX, the ratio comes in at 0.55. Less than 1.0 means the move was smaller than history would predict given the surprise size. Tradeable territory.

Step 3 — does the rest of the factor stack agree?

This is where DeepVane diverges from a textbook PEAD strategy. The academic literature documents that PEAD-only ranking earns roughly 3% per quarter, but the failure rate at the per-trade level is substantial — about 40% of top-decile SUE stocks fail to driftbecause of compounding factors the textbook implementation ignores.

DeepVane's composite reads PEAD alongside the eleven other factors. For XYZX, the engine sees:

Five factors aligned bullish, three neutral, none bearish. The composite APEX score lands in the high-70s. The PEAD DRIFT confluence pattern fires because three conditions align: SUE in the top decile, factor backdrop supportive, and price under-reaction. The engine's forward-return projection at the 60-day horizon comes out positive with a 90% confidence interval that excludes zero.

Step 4 — the conformal interval matters more than the point estimate

A naive PEAD strategy buys on the day after the report and holds sixty days. DeepVane's engine surfaces a Mondrian conformal prediction interval alongside the point estimate — for XYZX, something like “expected 60d return +6.2% with 90% interval [+1.4%, +11.0%] on this regime/sector cohort”. The interval drives position sizing. A wide interval means take a smaller position; a tight interval means the model has high confidence and you can scale up.

Mondrian conformal calibration matters because plain conformal intervals over-cover for popular cohorts and under-cover for thin cohorts. We bin by regime + sector + factor-magnitude so the 90% coverage claim holds locally, not just on the universe average. This is what lets a beginner read the score-and-interval pair and size responsibly without doing their own statistical homework.

The trade that got it wrong

Every factor has a failure mode, and pretending otherwise is how people get hurt. PEAD's classic failure is the guidance cut: a stock beats Q3 EPS but lowers Q4 guidance in the same release. The headline beat triggers SUE, but the guidance cut means forward earnings revisions will move down over the next sixty days, not up. Drift reverses.

DeepVane catches this case via two layers. First, the NLP tone factor reads the MD&A and forward-looking statements; a defensive shift in language drops the NLP score, which composes multiplicativelywith PEAD in the engine's factor amplifier (one bearish factor damps the bullish reading rather than averaging into it). Second, the analyst-revision feed catches earnings estimate revisions in the first 10 days post-print; if revisions go negative, the engine's regime amplifier dampens the PEAD bullish reading.

The honest answer: even with both layers, occasional false positives happen. The conformal interval's lower bound is the protection — when it includes zero, position sizing should be small. We never promise a winner per trade; the math promises positive expected value over many trades, sized correctly. That distinction is everything.

What to do with this

If you want to see the PEAD signal on a real ticker today, every page on DeepVane shows the per-factor decomposition. Open NVDA, MSFT, or any other ticker around its earnings window — the post-earnings-drift component sits in the breakdown next to the eleven other factors. The PEAD DRIFT confluence pattern fires when the conditions described above align, and it's tagged on the ticker page when it does.

For deeper reading: the original Bernard-Thomas 1989 paper is worth its 60 pages, and Sloan 1996 (which we cover in our accruals signal post) is the natural companion — accruals quality is what separates a real earnings beat from a managed one. The full methodology is on our methodology page; the live math battery (35 invariants run on every request) is at /diag/engine.

And if you only remember one thing: the earnings beat is not the signal. The earnings beat plus the under-reaction plus the supportive factor backdrop is the signal. PEAD without composition is gambling; PEAD inside a coherent factor engine is one of the most durable academic edges in finance.

RELATED
Methodology →Pattern Library →Track Record →