Earnings Surprise Prediction: A Practical Data Playbook
Most earnings-day mistakes aren't forecasting mistakes, they're measurement mistakes. If you label a print as a “surprise” just because EPS beat consensus by a penny, you've already weakened the signal, and the backtest usually pays for that shortcut later. The cleaner starting point is the gap between actual EPS and analyst consensus, expressed as a percentage, with a common research convention treating outcomes above +15% as positive, below -15% as negative, and everything else as neutral (earnings surprise definition and research threshold).
That's why earnings surprise prediction is less about guessing the quarter and more about choosing the right label, the right inputs, and the right execution rule. Markets often react fast to the information content of the print, and the direction of the move is only part of the story. In a study of 30 firms, 25 out of 30 showed significantly positive overnight returns after positive earnings surprises, while exact matches to estimates had little or no relationship with returns; the same work also found positive surprise percentages were significantly and positively correlated with post-announcement volatility in 20 of the 30 firms (historical overnight return evidence and volatility link).
What an Earnings Surprise Means
A stock can gap hard on earnings without the surprise being especially large. That is the first thing to get right, because the move and the label are not the same object. In practice, earnings surprise prediction starts with measurement, not with signal stacking.

Start With the Label, Not the Trade
The standard formula is (actual EPS - estimated EPS) / |estimated EPS| × 100 (definition and threshold convention). That formula matters because the print only becomes a useful surprise when it is measured against the estimate that was in the market before the announcement.
Practical rule: if your dataset does not store the exact consensus estimate used at the time of the print, your “surprise” label is probably contaminated.
The common research cutoffs, above +15%, below -15%, and neutral in between, are a practical way to separate material surprises from noise (definition and threshold convention). The boundary is not sacred, but it gives you a label that is easier to defend in a backtest than a raw beat rate built on tiny differences.
Why the Market Cares About Deviation
The historical evidence is straightforward. In the 30-firm study, 25 out of 30 names posted significantly positive overnight returns after positive surprises, while exact consensus matches did not show a strong return relationship (overnight return study). That points to the market reacting to unexpectedness, not just to the existence of earnings news.
The same paper found post-announcement volatility rose in 20 of the 30 firms when surprise percentages were positive (overnight return study). In production, that means a surprise label should affect both direction and risk handling. A clean print can still widen ranges, and a bad label can make a decent model look better than it is.
Insider flow matters here as a corroborating input, not as the headline definition. When insider buying lines up with a well-measured positive surprise, it often helps separate a real information shift from a noisy consensus miss. When the label is sloppy, even strong insider activity can get buried inside a bad target.
If you remember one thing, make it this. Surprise is a label, not the event itself. The event is the announcement, the label is the relative gap, and every downstream model depends on how carefully you define that gap.
Why the Standard Surprise Definition Has Real Problems
The textbook EPS-versus-consensus gap is convenient, but it is also fragile. Analysts do not forecast from a neutral starting point, and research discussion of optimism bias shows that forecast measures can drift in systematic ways that make a simple beat rate look cleaner than the underlying economics deserve (research discussion of optimism bias and forecast measures).
Consensus Is a Moving Target
A raw EPS surprise inherits whatever distortion sits inside the analyst set. If the consensus is too optimistic, the label understates how hard it was to clear expectations, and if the consensus is too pessimistic, the beat rate inflates on paper. The model then learns analyst behavior as much as company performance, which is a poor trade if your goal is to forecast the print, not the forecast process.
That is why the target definition matters before feature selection does. Recent academic work argues that a nonparametric forecast measure, FOM, is a better proxy for earnings surprise than simpler approaches when optimism bias is present (2023 study summary). The same research summary also points to the fraction of forecasts missing on the same side as a measure that can outperform other reliable measures, which is a strong reminder that the definition of “surprise” changes the quality of the signal itself.
A model is only as clean as its label. If the label is weak, the model will still fit something, just not the thing you wanted.
Price-Adjusted Returns Can Be Misleading
A second problem shows up when outcome labels use price-adjusted cumulative abnormal returns. Research discussion of FOM and price-adjusted CAR shows that this setup can be distorted by stock price jumps, which is common around earnings because the opening print often absorbs a large share of the information instantly (research discussion of optimism bias and forecast measures). If your label is built on a return measure that already bakes in jump noise, the surprise target is no longer clean.
The practical fix is plain, but it works. Use the same surprise definition everywhere, store the exact timestamped consensus, and test whether the label behaves sensibly across market regimes. If FOM, a raw EPS gap, and a price-adjusted return label give you different backtest stories, do not average them together. Investigate which one matches the economic question you are trying to predict.
That is the part most coverage misses. People talk about feature engineering before they settle the target variable. In earnings modeling, that order is backward.
The Five Signal Families That Move the Needle
Measurement comes first. If you define the surprise cleanly, the rest of the model has a chance. If you define it badly, even a crowded feature set will mostly fit noise, because the label is already contaminated by timing, benchmark drift, or a bad reference point.

Revision Momentum in Fundamentals and Guidance
The strongest starting point is fundamentals paired with guidance revision momentum. If management has already been nudging expectations higher, the print has less room to shock, but the direction of revisions still carries information about what the market is pricing. In practice, the best feature here is the change in consensus estimates across successive updates, especially when you line it up with shifts in guidance tone.
Reading Sell-Side Revision Velocity
Analyst revision speed usually matters more than the raw estimate level. Markets react when analysts move together and move quickly, because that often reflects a shared view on demand, margins, or execution. The failure mode is familiar. Revision momentum can lag a real inflection if analysts are slow to update after the business has already turned.
Transcript Sentiment as Confirmation
Transcript sentiment works best when it confirms something already visible in the numbers. A model that reads earnings-call language can separate confident guidance from defensive wording, but it is easy to overfit on phrases that sound polished and mean little. Use sentiment as corroboration, not as the lead variable.
Event-Window Signals From Options
Options activity and implied volatility skew are most useful close to the announcement window, where traders are explicitly pricing event risk. They help with sizing expectations for the move, but they do not tell you direction on their own. Crowded but ambiguous flow is often a hedge, not a view.
Insider Clusters as Forward-Looking Confirmation
Insider buying matters most when it is clustered, open-market, and repeated, especially after long quiet periods. That pattern points to conviction, not guaranteed prediction. The cleanest use is as forward-looking confirmation that sits beside revisions and fundamentals, rather than as a stand-alone signal that has to carry the whole forecast.
A multi-metric reaction study also found that larger surprises in net income and EBITDA were associated with stronger price reactions than other common measures, while revenue, operating profit, gross margin, cash flow, and unexpected GAAP EPS news were weaker on average (multi-metric reaction study). That is a good reminder that headline EPS is not always the cleanest economic driver, and that the definition of surprise influences which signals look useful in backtests.
Modeling Approaches From Linear Baseline to ML Ensemble
A lot of earnings models fail because the team starts with a complicated learner before proving the label and the features work. A linear baseline is still the fastest way to find out whether the signal has structure at all. If a simple model on standardized revisions and a few clean event-window features doesn't separate buckets, a deeper model usually just memorizes noise.

Start With Logistic Regression
Logistic regression gives you a sanity check baseline and a coefficient map you can explain to a portfolio manager or risk committee. If revision momentum, transcript tone, or pre-print options pressure do nothing in a linear frame, that's a warning sign. It may also tell you that the effect is conditional rather than broad.
Use Trees When Interactions Matter
Gradient-boosted trees add value when the impact of one feature depends on another. A revision that matters for one sector can be meaningless in another, and a tree ensemble can learn those splits without you hand-coding every rule. Earnings data often benefits from nonlinear structure.
Shallow Networks and Ensembles Need Discipline
Shallow neural nets can help when you've got enough clean examples and your inputs have real interaction effects, but they can also become an expensive way to overfit a small calendar. The strongest result in the brief is a useful benchmark here. In a machine-learning study, nonlinear ensemble methods predicted surprises of at least 15% with 71% accuracy (ML surprise prediction study). That's not a toy number, and it's a realistic yardstick for a serious tabular stack.
The same study also found that earnings surprise and revenue surprise were the strongest contemporaneous drivers of price reaction, with feature importances of 14.4% and 9.5% (same study). That reinforces the point that model choice matters, but target design and feature quality still matter more.
Practical rule: if your ensemble beats the baseline only in-sample, throw it out. Earnings calendars are too small to reward vanity metrics.
Backtesting Without Fooling Yourself
Most bad earnings backtests are not broken because the model is weak. They're broken because the data timing is wrong. The easiest way to fool yourself is to mix point-in-time features with future-revised fundamentals, then act surprised when the model looks brilliant on paper.
Keep the Timeline Clean
Every feature needs a timestamp that predates the print. That includes consensus estimates, revisions, transcript availability, and any fundamental inputs that get restated or refreshed later. If the model sees data that wasn't public at decision time, the backtest is contaminated, even if the contamination is subtle.
Split by Calendar, Not by Random Rows
Earnings data is event-driven, so random train-test splits usually leak regime information across time. Use calendar-aware splits that respect reporting seasons and preserve order. Random shuffling can make a weak model look stable only because nearby quarters resemble one another.
A second trap is survivorship. If you train only on names that still exist in your current universe, you erase delisted losers and old regime failures. The resulting hit rate is often too neat, and the strategy tends to fall apart the moment you run it live.
Measure the Right Thing
Raw accuracy is a poor headline metric for directional earnings work because the calendar is imbalanced and neutral outcomes are common. Precision, recall, and bucketed hit rate are far more informative. If you care about the +15% and -15% surprise buckets, report performance there directly instead of hiding behind an average that blends everything together (research threshold convention).
Report the trade outcome the way you'd actually size it. If a model only works on the extremes, say so, and size it that way.
Transaction costs and slippage matter too, especially if you're trading the open. A model that looks great before costs can be untradeable once spreads widen and fills get worse around the announcement. In earnings, the only backtest that matters is the one that survives real execution friction.
Turning the Forecast Into a Trade You Can Run
A forecast is still just a forecast until you decide when to enter, how much to buy or short, and where to get out. That sounds obvious, but earnings trading is where weak assumptions show up fast, because the market around the print is less forgiving than the model fit on paper.

Size by Confidence, Not by Hope
A strong forecast should deserve a larger allocation than a weak one, but the sizing rule has to follow how well the model separates outcomes. If the model only shifts probabilities a little, use it as a filter rather than a full position trigger. If it cleanly isolates the extreme surprise buckets, a larger size can be justified, because the edge is concentrated where the model is most decisive.
That also means position size should reflect what the model is good at, not what you wish it were good at. A classifier with modest separation can still be useful, but it should help you decide what to watch, not tempt you into forcing risk.
Match the Holding Period to the Signal
Different signals pay off on different clocks. Some are built for the first gap after the print, while others matter more in the slower drift that follows. The historical evidence in the brief shows that earnings can move overnight and can also show stronger post-announcement volatility, so the exit horizon should follow the edge you found rather than a generic holding rule (overnight return and volatility evidence).
In practice, a one-size-fits-all hold period blurs signal quality. If the model is aimed at the gap, exiting after the first clean price discovery is often more sensible than waiting for a slower drift that may never come. If the edge is in post-earnings continuation, forcing an immediate exit can leave money on the table without improving risk control.
Respect Event Risk
Earnings trades are binary around the print, and the implied volatility crush can overwhelm the directional move once the announcement is out. That is why pre-print entries need stronger evidence than post-print confirmation trades. If the model is only mildly positive, using options to bracket the event is often cleaner than taking naked directional risk.
The practical split is straightforward. Use pre-announcement positions only when the signal stack is aligned, with revisions, fundamentals, and insider activity pointing the same way. Use post-print entries when you want the market to confirm direction first, and when the surprise itself is the part you trust most. If you need a tighter way to turn that judgment into a position rule, Altymo can help map the forecast, the event risk, and the sizing logic into something you can run without guessing.
Case Studies Where Insider Flow Foreshadowed the Print
The cleanest insider-flow setups usually don't shout. They accumulate and then line up with revisions and transcript tone in a way that's hard to ignore. The point isn't that insiders always know what's coming, it's that their trades can act as a credible forward-looking corroborator when the rest of the signal stack is already leaning in the same direction.
Case A Open-Market Buying Before a Strong Print
In one representative workflow, a cluster of open-market insider buys appeared several weeks before the print. The buying was not a one-off token trade, it showed repeated accumulation across multiple executives, which is exactly the kind of pattern that deserves attention. At the same time, fundamentals were firming and analyst revisions were drifting upward, so the insider activity strengthened an already constructive view.
That combination matters because a Form 4 cluster rarely needs to be the headline idea. It works better as confirmation that executive conviction is aligned with the operating picture. In a live screen, that's the kind of setup that can move a name from “watch” to “actionable.”
Case B Selling That Confirmed a Soft Print
The inverse can be useful too. When insiders sell ahead of a softer print, the activity doesn't prove anything by itself, but it can corroborate a weaker setup already visible in revisions and sentiment. The value is not mystical foresight, it's consistency across independent signals.
Here the discipline is to avoid over-reading a single sale. A lone transaction can be noise, while a pattern of selling from multiple insiders can add weight when fundamentals are also deteriorating. The right response is usually to lower conviction, tighten sizing, or wait for confirmation.
| Sample Pre-Earnings Signal Stack | Case A Read | Case B Read |
|---|---|---|
| Signal Family | Clustered open-market buying, rising revisions, firm fundamentals | Insider selling, soft revisions, cautious sentiment |
| Directional Read | Higher conviction on positive surprise potential | Lower conviction, downside corroboration |
| Trading Use | Candidate for pre-print long bias or call structure | Candidate for reduced risk, hedged short bias, or no trade |
If you want a tighter way to build this workflow, use Altymo to turn raw Form 4 filings into faster, cleaner insider signals that fit alongside revisions and event models. It's a practical fit for earnings surprise prediction because it helps you filter noise, surface executive conviction, and act before consensus fully catches up.