盈餘驚喜(earnings surprise)是財報開獎的核心:EPS 實際值與分析師預估的差距。beat(超過預估)與 miss(不如預估)驅動財報日的跳空,也驅動後續數週的漂移。這份資料涵蓋 2015 年以來超過 1.2 萬檔美股、累計 27.6 萬件財報事件,兩個欄位:EPS 實際值與當時的分析師預估值,按公布日對齊成「日期 × 股票」矩陣,每日更新。事件研究、PEAD 策略與財報季統計,原料都在這裡。
這份資料裡有什麼
美股盈餘驚喜(us_earnings_surprises)是兩張矩陣:eps_actual 與 eps_estimated,值落在各公司的財報公布日上。切到美股市場後一行取出:
顯示程式碼
from finlab import data, config
from finlab.markets.us import USMarket
config.set_market(USMarket)
act = data.get("us_earnings_surprises:eps_actual")
est = data.get("us_earnings_surprises:eps_estimated")兩張表相減就是驚喜幅度,除以股價或預估值就是標準化驚喜,可直接排序做因子。
怎麼判讀這份資料

上圖是逐季的 beat 率:實際 EPS 高於預估的公司佔比。財經新聞常聽到「七成以上公司優於預期」,那個數字通常來自 S&P 500 大型股樣本;把全市場一萬多檔(含大量中小型股)都算進來,2015 年以來的平均 beat 率只有 55.2%。大型股 beat 率偏高有結構性原因:預期管理成熟、分析師覆蓋密集、下修引導成常態,把「優於預期」變成一場預設會過關的遊戲;中小型股沒有這層裝飾,貼近五五波。序列的谷底 46.4% 出現在 2020 年第二季(疫情衝擊),是十一年來唯一跌破五成的極端時刻之一。
最新一季讀數偏高還有一個技術性原因:當季尚在申報中,先公布的多是體質較好的公司,beat 率會隨申報進度回落,判讀進行中的季度要留意這個偏差。
用這份資料最容易踩的兩個陷阱
第一個陷阱:用「有沒有 beat」當訊號就下單。beat 是二元事件,幅度與品質差異巨大:靠一次性項目擠出來的 beat 和營收獲利同步的 beat,後續走勢完全不同。我們用這份資料做過完整的事件研究與十分位檢驗(19,083 件流動性過濾後的事件),驚喜幅度的排序資訊確實存在,完整方法與回測見美股盈餘驚喜策略研究(英文)。
第二個陷阱:忽略預估值的時點。eps_estimated 是公布前的共識預估快照;分析師會在財報前密集下修或上修,拿事後修正過的預估回測等於偷看未來,這份資料固定在公布日時點就是為了避開這個坑,前視偏差的通用說明見詞彙表。
怎麼接上選股策略
最直接的用法是 PEAD(財報後漂移):標準化驚喜排序後做多前段,搭配流動性與市場廣度濾網;台股沒有分析師預估的對應資料,但月營收驚喜是近親,見月營收動能實測。美股回測的完整上手流程見美股回測教學。
怎麼自己取得這份資料
把 beat 率算出來,只要幾行:
顯示程式碼
from finlab import data, config
from finlab.markets.us import USMarket
import pandas as pd
config.set_market(USMarket)
act = data.get("us_earnings_surprises:eps_actual")
est = data.get("us_earnings_surprises:eps_estimated")
beat = (act > est) & act.notna() & est.notna()這份資料的涵蓋年限、筆數與更新狀態,本頁下方有即時健檢可以查;不想寫程式的話,頁面下方可以把取資料、算驚喜幅度與統計直接交給 AI 完成。