Pattern Lab · Methodology
PEAD methodology.
Post-earnings-announcement drift (PEAD) is the tendency of a stock's price to continue moving in the direction of an earnings surprise for several weeks or months after the company has released its quarterly financial results. When a company reports earnings, the market reacts immediately — but sometimes underreacts. Over the following 60 trading days, prices drift in the direction of the original surprise. The Closelook Pattern Engine measures the 3-day cumulative abnormal return on every earnings event in our universe, classifies the signal direction, and tracks it through a 63-day holding window.
The mechanic — four steps
- Trigger detection. Engine pulls the EODHD earnings calendar daily across the covered universes. Names that have reached T+3 are processed.
- CAR measurement. Cumulative abnormal return = (Price_T+3 / Price_T−1) − (Index_T+3 / Index_T−1). The reference index is the matching Closelook benchmark for the name's universe.
- Quintile classification. Top quintile of positive CARs → Long Setups. Bottom quintile of negative CARs → Short Setups. Middle three quintiles → no signal.
- Layered architecture. Signals pass through the upstream regime filter (suppress during transitions) and trend filter (require name-level continuation context) before becoming live alerts.
Direction + Conviction
- ↑ Long — CAR_3d ≥ +3% vs benchmark
- ↓ Short — CAR_3d ≤ −3% vs benchmark
- → None — CAR_3d in the ±3% neutral band
Conviction (0–100) scales |CAR_3d|% by 10 (1% → 10, 5% → 50, 10% → 100), modified by drift consistency: +15 if the initial reaction and 1–3 day drift agree with CAR sign; −20 if the drift reverses the initial reaction (whipsaw penalty).
Universes & benchmarks
- Rubin 100 · benchmark CL-RUBIN-EW (universal SPY in v1)
- HALO 100 · benchmark CL-HALO (universal SPY in v1)
- Euro-AI 50 · benchmark CL-EURO-AI (universal SPY in v1)
- AW40 · benchmark CL-AW40 (universal SPY in v1)
- Nasdaq-tech overlay · ~50 curated US tech megacaps not in the thematic indices
v1 uses SPY universally. Stage B per spec swaps to per-index Closelook benchmarks once the historical-value endpoints land.
T+5 Confirmation layer SP06-2 · 2026-05-15
Every PEAD card published at T+3 with a non-neutral direction (↑Long or ↓Short) writes a confirmation record to the tape worker. Two trading days later (T+5) a follow-up scanner re-fetches the ticker and benchmark closes and classifies the outcome:
- ↗ Continuation. CAR_5d extends past CAR_3d in the original direction. The classical post-earnings drift signature: market keeps re-pricing in the direction of the print. Card fires; conviction read strengthens.
- ↘ Reversal-confirmation. CAR_5d closes inside the neutral band (long → CAR_5d < +1.5%, short → CAR_5d > −1.5%). The signal faded in two extra sessions. Card fires; reader is told the T+3 direction call is invalidated.
- → No clear drift. Anything between the continuation + reversal bands. The record is marked evaluated and quietly cleared. No card fires — the T+5 outcome doesn't carry signal at the conviction we publish at.
Why a separate confirmation layer rather than redefining the T+3 signal: the academic PEAD spread is calibrated on a 1–3 day window per Ball–Brown 1968. The T+3 card is the signal; the T+5 card is the post-signal honesty pass. Every published Long/Short setup is scored twice — once at entry (T+3), once at the start of its hold horizon (T+5). Readers see both as separate cards in the feed.
Cron 0 23 * * 1-5. Cards carry
eventTypes: ['PEAD', 'PEAD-CONFIRMATION', 'CONTINUATION'|'REVERSAL-CONFIRMATION'].
Filterable on /signals/scanner/pead/.
Failure modes (one-line each)
- Regime sensitivity. Drift weakens during high-volatility regime transitions. Engine suppresses signals when the regime filter flags transition state.
- Sector contamination. Sector references can themselves drift. Watch PEAD signals in already-extended sectors with extra skepticism.
- Earnings clustering. Signals fire correlated during peak weeks. The Engine flags cluster density; size accordingly.
- Post-2010 weakening. The 13% annualized spread of the 1980s is now closer to 6–9% in mid-cap concentrations. Don't expect 1980s magnitudes.
- Combined-signal trap. PEAD + trend + revision works in some regimes, fails in others. Combined signals carry combined assumptions.
Two prominent links
Read the full Lab Read — methodology, academic history, four mechanisms, three worked examples (Rubrik, CrowdStrike, Salesforce):
Post-Earnings Announcement Drift — Closelook Lab Read →
See live PEAD signals — current Long Setups + Short Setups from the Pattern Engine, updated continuously after each c-fire cron:
Or browse the chronological Tape feed for every PEAD card as it fires: tape/category/pead/
FAQ · from the current data
Quick answers
What is PEAD (Post-Earnings Announcement Drift)?
PEAD is the tendency of a stock price to keep drifting in the direction of an earnings surprise for weeks after the report, rather than fully repricing on the day. The Closelook Pattern Engine measures the 3-day cumulative abnormal return (CAR) on every earnings event in its universe, classifies the direction, and tracks it through a 63-day holding window.
How does the Pattern Engine measure a PEAD signal?
Four steps: it detects earnings triggers from the EODHD calendar, measures the 3-day cumulative abnormal return (CAR) versus the matching Closelook benchmark, classifies the top and bottom quintiles of CAR as Long and Short setups, and passes surviving signals through the upstream regime and trend filters before they go live.
What CAR threshold defines a Long or Short PEAD signal?
A 3-day cumulative abnormal return of +3% or more versus the benchmark is classified Long; -3% or more is classified Short; anything in between is classified None (no signal).
What does the T+5 confirmation layer check?
Two trading days after a Long or Short card is published at T+3, a follow-up scanner re-checks the ticker at T+5 and classifies the outcome as Continuation (the drift extended), Reversal-confirmation (the move faded back inside the neutral band), or No clear drift. It runs on a weekday evening cron and does not redefine the original T+3 signal.