如果你的核心需求是:
判斷財報是否高於預期
AInvest 的 earnings calendar API 返回的欄位非常直接:
eps_actualeps_forecasteps_surpriserevenue_actualrevenue_forecast示例字段:
{
"ticker": "AAPL",
"eps_actual": 1.46,
"eps_forecast": 1.40,
"eps_surprise": 0.06
}
你可以直接寫判斷邏輯:
actual > forecast → Beat
actual < forecast → Miss
actual = forecast → Inline
所以如果你的系統只需要 beat / miss 判斷,這個接口很方便。
Bigdata API 提供一個 earnings surprises endpoint,會返回:
reporting_dateeps_actualeps_estimatedrevenue_actualrevenue_estimated示例資料:
{
"reporting_date": "2025-07-23",
"eps_actual": 2.31,
"eps_estimated": 2.15
}
這種接口比較適合:
即係判斷市場預期同實際結果嘅差距。
如果你想多幾個資料源做 backup,可以留意以下幾個:
API Ninjas
StockFit
提供比較完整的 earnings pipeline:
比較適合做更完整的基本面資料流。
如果要整合到 signal list,其實可以做一個標準 schema,例如:
ticker
signal_time
earnings_status
earnings_date
earnings_session
eps_actual
eps_estimate
surprise_result
邏輯例如:
def classify_earnings(row):
if row["eps_actual"] is None:
return f"{row['earnings_date']} 待發布"
if row["eps_actual"] > row["eps_estimate"]:
return "高於預期"
elif row["eps_actual"] < row["eps_estimate"]:
return "低於預期"
else:
return "符合預期"
如果你要做交易信號系統,通常會用兩層資料:
第一層:Earnings Calendar
第二層:Earnings Result / Surprise
流程大概是:
1️⃣ 先取得財報日期
2️⃣ 判斷是否已發布
3️⃣ 如果已發布 → 計算 beat / miss
4️⃣ 寫入 signal table
你提到的需求:
5‑12 盤前5‑12 盤後目前資料顯示很多 earnings API 會提供發布時間或 session,例如 before market open / after market close,但是否所有接口都穩定返回,需要實際測試。
因此建議:
report_time
session
release_time
bmo / amc
再決定是否正式接入。
✅ 簡單結論
如果要快速做一個穩定方案:
基本上就可以滿足「財報時間 + 是否高於預期」兩個需求。
如果你想,我也可以幫你整理一個 完整 Python pipeline(signal list + earnings API + beat/miss column),直接可以放入量化策略裡跑。