Pattern Lab · Methodology
PEAD methodology.
When a company reports earnings, the market reacts immediately — but it 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)
- AW25 · benchmark CL-AW25 (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/