首选:OpenBB
obb.equity.calendar.earnings() 可获取历史和未来公司财报发布日历。start_date、end_date。适合判断“高于/低于预期”:AInvest
ticker、period_name、eps_actual、eps_forecast、eps_surprise 等字段。eps_actual > eps_forecast:高于预期eps_actual < eps_forecast:低于预期eps_actual == eps_forecast:符合预期适合做已发布后的 surprise 检查:Bigdata
reporting_date、eps_actual、eps_estimated、revenue_actual 等字段。其他可评估接口
| 接口 / 工具 | 可确认能力 | 适合你的哪部分需求 | 证据 |
|---|---|---|---|
OpenBB equity.calendar.earnings | 获取历史和未来财报发布,包含 EPS 和 revenue 数据 | 财报日历主数据源、Python 集成 | |
| OpenBB provider 参数 | 示例中支持指定 provider,例如 provider='fmp' | 可切换底层数据源 | |
| AInvest Earnings Calendar | 返回 eps_actual、eps_forecast、eps_surprise 等字段 | 判断高于/低于预期 | |
| Bigdata Earnings Surprises | 返回 reporting_date、eps_actual、eps_estimated、revenue_actual 等字段 | 已发布财报后的 surprise 判断 | |
| API Ninjas Earnings Calendar | 提供过去财报结果和未来财报日期 | 备选日历数据源 | |
| StockFit Earnings API | 提供 upcoming earnings、per-symbol lookup、snapshot、EPS history 等 | 更完整的 earnings 数据管线备选 |
你要的最终字段可以设计成类似这样:
ticker | signal_time | earnings_status | earnings_date | earnings_session | eps_actual | eps_estimate | surprise_result
其中:
earnings_status
reportedupcomingunknownsurprise_result
beat:实际 EPS 高于预期miss:实际 EPS 低于预期inline:实际 EPS 等于预期pending:还未发布这个判断逻辑本身是推导出来的,因为 AInvest 和 Bigdata 的字段中有实际 EPS 与预期 EPS,可用于比较。
如果你是把它接到“信号触发列表”里,我建议按这个优先级接入:
先接 OpenBB
再接 AInvest 或 Bigdata 补 surprise 判断
eps_actual、eps_forecast、eps_surprise 字段更贴近“高于/低于预期”的需求。eps_actual、eps_estimated 等字段。把 API Ninjas / StockFit 作为备选
目前证据不足以确认这些接口是否稳定返回你特别需要的:
现有证据只明确提到 earnings calendar、upcoming dates、historical releases、EPS、revenue、actual、forecast / estimated、surprise 等字段。 因此,如果“盘前 / 盘后”是硬需求,需要你实际调用接口或查看完整字段文档确认;仅凭现有证据不能保证。
Authorization: Bearer <token>,但仅凭这些证据不能判断各接口的免费额度或授权限制。from openbb import obb 和 obb.equity.calendar.earnings() 示例,并说明可查询历史和未来财报发布。eps_actual、eps_forecast、eps_surprise。eps_actual、eps_estimated 和 reporting_date。建议你先用 OpenBB + AInvest / Bigdata 做一个两段式数据管线:
eps_actual 与 eps_forecast / eps_estimated。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 "符合预期"
最推荐从 OpenBB 开始,因为它有 Python 调用示例,能查历史和未来 earnings calendar,并包含 EPS 与营收数据。 如果重点是“财报发布后自动判断高于预期还是低于预期”,则应补充接入 AInvest 或 Bigdata,因为它们明确返回实际 EPS 与预期 EPS 相关字段。 但“盘前 / 盘后”字段目前证据不足,不能保证这些接口一定支持,需要实际调用或查完整字段文档确认。