QVeris

金融与市场数据

面向 AI Agent 的最佳财报 API

比较 FMP、Finnhub、Alpha Vantage、EODHD 与 SEC 财报证据,核对数据契约、代码和验证控制。

发布日期:2026年4月10日 · QVeris团队制作

结合财务报告、计算记录和市场证据开展分析
结合财务报告、计算记录和市场证据开展分析

核心结论:最佳 API 取决于你需要哪一层财报数据

我们的简短结论

FMP 在这里最接近单一完整数据栈,覆盖日历、公司 Earnings、Surprise 与 Transcript;Finnhub 适合结合事件时段以及 EPS/Revenue 实际值与预期值;Alpha Vantage 适合原型和历史 EPS;EODHD 适合全球日历与预期趋势;SEC EDGAR 是第一方证据层,而不是 Consensus Estimate API。

All-in-oneFinancial Modeling Prep

当一个 Agent 同时需要日历、实际结果、预期、Surprise 筛选、报表和 Transcript 时使用。

Event workflowFinnhub

当事件时段、国际市场、EPS、Revenue 和更广泛市场数据需要进入同一工作流时使用。

Simple prototypeAlpha Vantage

适合直接获取 Calendar 和季度/年度 EPS 历史,并能接受 Calendar 使用 CSV 的原型。

Global & revisionsEODHD

适合重视交易所限定代码、全球覆盖、预期区间、分析师数量与修订趋势的场景。

这份指南适合谁

本文适合构建财报监控、组合提醒 Agent、研究 Copilot、财报后摘要、预期修订筛选或事件驱动研究的工程师。你需要能够存储标准化 JSON、安排事件前后任务,并保留可审阅的来源记录。

前置条件

准备稳定的 Symbol 映射、支持 UTC 的时间戳、财政期间模型、服务端密钥管理、修订策略,以及存放 Earnings Release、Transcript 与 Filing 的证据库。

“财报数据”到底包含哪些层

Earnings 这个词往往掩盖了六种不同产品。把它们当成一张表,会产生日期、期间和来源错误。

数据层典型字段Agent 用途
日历reportDate, timeOfDay, confirmed status安排提醒、预取背景、开启事件窗口
一致预期EPS, revenue, low/high, analyst count, as-of time记录发布前的市场预期
实际结果actual EPS, actual revenue, period end, currency衡量正确财政期间的实际结果
Surprisedifference, percentage, provider formula, estimate snapshot识别 Beat/Miss,同时保留分母语义
叙述release, prepared remarks, Q&A, guidance, speaker解释驱动因素、管理层表达与展望
第一方证据investor-relations URL, accession number, filing, exhibit验证重要结论并保留引用

Agent 可用的 Earnings API 选型指标

  • 覆盖:交易所、国家、Symbol、历史深度与退市公司。
  • 事件质量:预测/确认日期、盘前/盘后、时区与改期。
  • 预期质量:来源方法、分析师数量、区间、修订与 As-of 时间。
  • 结果语义:GAAP/Adjusted EPS、Diluted/Basic、Revenue 单位与财政期间。
  • 新鲜度:日历刷新频率、发布后延迟、修正处理以及 Webhook/轮询。
  • 证据:Release、Transcript 或 Filing URL,以及可复现答案的元数据。

最佳 Earnings API 对比

选项最适场景文档能力上线前验证
FMP Stable API单一金融数据栈Calendar;按 Symbol 查询;EPS/Revenue 实际与预期;Surprise Bulk;Transcript;报表套餐权限、地区覆盖、Transcript 可用性与准确更新延迟
Finnhub事件与市场数据工作流日期区间、可选 Symbol、国际市场、盘前/盘后、EPS 与 Revenue 实际/预期各套餐历史深度、预期方法、修正与 Transcript 权限
Alpha Vantage简单原型与 EPS 历史EARNINGS JSON 提供年度/季度 EPS、预期与 Surprise;CSV Calendar 支持 3/6/12 个月CSV 采集、限额、Revenue 需求、全球标识与生产吞吐
EODHD全球 Symbol 与预期趋势历史/未来 Calendar、带交易所 Symbol、EPS 实际/预期、报告时段、趋势区间与修订空字段行为、Symbol 省略、批处理、权限与各市场延迟
SEC EDGAR第一方来源验证公司 Submissions、8-K/10-Q/10-K 证据、附件、Accession 身份与 XBRL Facts不是 Consensus Calendar;需自行处理 Filing 获取、解析、缓存与公平访问

用代表性样本实测。至少包含已确认事件、改期事件、非自然年公司、负 EPS 预期、零预期、ADR、双重上市,以及供应商后来修正的结果。

供应商详解:各自真正擅长什么

FMP适合 Earnings 与财务报表联动

FMP Stable 文档把 Earnings Calendar、按 Symbol 的结果、Transcript 和 Surprise Bulk 与报表及公司数据放在同一栈中,能减少连接,但来源 URL、地区深度和延迟仍需实测。

Finnhub适合由公告时段驱动自动化

其 Calendar 响应记录 bmo、amc、dmh 时段,并提供 EPS/Revenue 字段,适合排程;但在确认语义明确前,日期仍应视为可能变化。

Alpha Vantage适合 Schema 可以保持简单的场景

EARNINGS 返回年度与季度 EPS 历史、预期和 Surprise;EARNINGS_CALENDAR 以 CSV 返回 3/6/12 个月范围。适合原型,但不是完整证据栈。

EODHD适合把预期修订作为核心信号

Trends API 文档提供平均、低、高、分析师数量、增长、7/30/60/90 天 EPS 趋势点及修订数量,让 Agent 能解释预期如何变化,而不只是是否 Beat。

财报分析 Agent 参考架构

解析证券与发行人

将用户输入映射为带交易所的 Symbol、法定实体、适用的 CIK、币种和主要上市地。

开启事件窗口

保存预测与确认的公告时间、时区、状态以及每次观测到的改期。

冻结事件前预期快照

在结果发布前持久化 EPS/Revenue Consensus、区间、分析师数量、来源和 As-of 时间。

采集实际结果

采集实际值、财政期间、GAAP/Adjusted 口径、币种、单位、供应商时间戳和修正版本。

关联叙述与第一方证据

关联 Earnings Release、Guidance、Prepared Remarks、Q&A、SEC Filing、附件和来源 URL,但不要混淆它们的权威等级。

验证并回答

仅比较兼容的期间和定义,再把摘要、精确预期快照与证据包一起返回。

分步实现:构建标准化 Earnings Event

FMP Stable API 适合作为实现示例,因为 Calendar 与按 Symbol 的 Earnings 使用相同认证方式。API Key 应只保存在服务端,并只查询调度器需要的日期窗口。

cURL · earnings calendar
curl --get "https://financialmodelingprep.com/stable/earnings-calendar" \
  --header "apikey: YOUR_API_KEY" \
  --data-urlencode "from=2026-07-27" \
  --data-urlencode "to=2026-07-31"
Python · normalize and preserve the provider record
import hashlib
import json
import os
from datetime import datetime, timezone
from decimal import Decimal, InvalidOperation
import requests

BASE = "https://financialmodelingprep.com/stable"
HEADERS = {"apikey": os.environ["FMP_API_KEY"]}

response = requests.get(
    f"{BASE}/earnings-calendar",
    headers=HEADERS,
    params={"from": "2026-07-27", "to": "2026-07-31"},
    timeout=30,
)
response.raise_for_status()
records = response.json()

def number(value):
    if value is None or value == "":
        return None
    try:
        return Decimal(str(value))
    except InvalidOperation:
        return None

def surprise(actual, estimate):
    actual, estimate = number(actual), number(estimate)
    if actual is None or estimate is None or estimate == 0:
        return {"difference": None, "percent": None}
    return {
        "difference": str(actual - estimate),
        "percent": str((actual - estimate) / abs(estimate) * 100),
    }

normalized = []
for row in records:
    actual = row.get("epsActual")
    estimate = row.get("epsEstimated") or row.get("epsEstimate")
    raw = json.dumps(row, sort_keys=True, separators=(",", ":"))
    normalized.append({
        "symbol": row.get("symbol"),
        "reportDate": row.get("date"),
        "fiscalDateEnding": row.get("fiscalDateEnding"),
        "epsActual": actual,
        "epsEstimate": estimate,
        "revenueActual": row.get("revenueActual"),
        "revenueEstimate": row.get("revenueEstimated"),
        "surprise": surprise(actual, estimate),
        "provider": "financial-modeling-prep",
        "retrievedAt": datetime.now(timezone.utc).isoformat(),
        "rawSha256": hashlib.sha256(raw.encode()).hexdigest(),
        "raw": row,
    })

示例中的备用字段名用于适应常见命名差异,但生产代码仍应验证所订阅端点的准确 Schema。不要在未记录分母使用 Estimate、绝对值 Estimate 或其他规则的情况下,重新计算供应商发布的 Surprise 百分比。

定义 Earnings 证据契约

字段组必需值为什么重要
身份symbol, exchange, issuer ID, CIK避免 ADR、双重上市和 Ticker 复用错误
事件reportDate, time, timezone, status, observedAt区分预测、确认和改期
财政期间FY, FQ, period start/end, provider label避免按自然季度错误推断
预期快照EPS/revenue average, low, high, analyst count, asOf让 Consensus 的时间依赖性可复现
实际结果value, GAAP/adjusted, basic/diluted, currency, unit避免语义不一致的比较
来源provider, endpoint, retrievedAt, source URLs, raw hash, version支持修正、审计与精确引用

Earnings Surprise 逻辑比看起来更脆弱

只有当 Actual 与 Estimate 具有相同公司、财政期间、会计口径、币种、单位和预期快照时,Beat/Miss 才有意义。负数或零 EPS Estimate 尤其容易让 Surprise 百分比被误读。

优先使用供应商值

保存供应商发布的 Difference、Percentage 和文档公式;只有跨供应商标准化时才重算。

发布前冻结 Consensus

后续预期修订不应改写公司发布结果时真正面对的市场预期。

区分 EPS 口径

GAAP/Adjusted、Basic/Diluted EPS 是不同指标,不能只当成可互换标签。

显式处理 Revenue 单位

确认币种、数量级、期间以及是否由供应商标准化之后才能换算。

Agent 回答前的验证清单

  • 带交易所的 Symbol 与发行人身份匹配目标公司。
  • 预测、确认、改期和实际发布时间保留为不同版本。
  • 财政年度、财政季度、Period End 和 Report Date 不互相推断。
  • Actual 与 Estimate 使用相同 GAAP/Adjusted 和 Basic/Diluted 定义。
  • Revenue 具有相同币种与数量级,空 Estimate 不被转换成零。
  • Consensus 快照包含供应商、可用的分析师数量和 As-of 时间。
  • 修正生成新版本,并触发对受影响结论的重新评估。
  • 重要结论链接到 Release、Transcript 段落或 SEC Filing,而不仅是标准化 API 行。

安全、成本与延迟控制

服务端凭证

供应商 Token 应放入 Secret Manager,不能出现在浏览器 JavaScript、日志、截图或 Prompt 中。

双速轮询

低频刷新未来 Calendar,只在已确认事件窗口附近轮询受控的 Symbol 集合。

不可变快照

按 Symbol、期间和观测时间缓存预期快照与供应商载荷,不要直接覆盖。

限制模型上下文

先用结构化验证缩小事件范围,再只检索相关 Transcript 章节和来源记录。

常见失败模式与修复方式

失败原因修复
提醒日期错误把预测日期当成确认日期,或丢失时区给事件状态建版本,并保存时区和交易时段标签
错误 Beat/Miss财政期间、EPS 口径或预期快照不同只有证据契约的所有语义键一致后才比较
Surprise 百分比无穷大Estimate 为零或缺失Percentage 返回 Null,并保留绝对 Difference
历史答案静默变化供应商修正覆盖旧记录使用只追加快照、内容哈希和修正版本
把 Transcript 当成实际数值来源叙述层与结构化结果层被合并数值使用结构化 Actual,解释使用 Transcript 段落
发行人事件重复ADR、双重上市或供应商 Symbol 未映射分离发行人、证券、上市地和供应商标识

Transcript 与 SEC Filing 是证据层,不是替代品

Earnings Transcript 解释管理层叙述与分析师问答;8-K 附件可能包含 Earnings Release;10-Q/10-K 提供已提交财务报表和披露。但它们都不提供带时间戳的 Consensus Estimate。可靠模式是先冻结预期,再采集实际结果,最后关联叙述与第一方证据。

QVeris 实现模式:Discover → Inspect → Call

QVeris 可以位于各供应商 Earnings 端点之上,承担面向 Agent 的发现与路由。Agent 搜索精确能力——Calendar、Estimates、Actuals、Surprise、Transcript 或 Filing——检查 Schema 与限额,再用受控输入调用。响应仍须保留底层供应商与证据 URL。

Discover

按数据层和市场覆盖寻找能力,而不是只搜索笼统的“Earnings”。

Inspect

检查 Symbol 格式、财政期间语义、时间戳、预期方法、Schema、权限和来源字段。

Call

调用最小日期或 Symbol 范围,验证载荷,并写入不可变证据记录。

常见问题

哪种 Earnings API 最适合 AI Agent?

FMP 适合一体化数据栈;Finnhub 适合事件时段与预期字段;Alpha Vantage 适合简单原型;EODHD 适合全球日历与预期趋势。最终应按自己的覆盖和新鲜度需求实测。

Earnings Calendar 与历史结果有什么区别?

Calendar 预测或记录公告事件;Earnings History 保存各财政期间的实际结果。事件日期与财政期间是不同字段。

Agent 应如何计算 Earnings Surprise?

优先使用供应商文档值。自行计算时保留 Actual、Estimate、公式、分母规则、币种和 As-of 时间;零或空 Estimate 必须显式处理。

Transcript 与 Earnings Result 是同一种数据吗?

不是。Transcript 包含管理层表达与问答;EPS 和 Revenue 实际值应来自结构化结果源,重要时还应与 Release 或 Filing 核验。

为什么财报日期会变化?

公司可能确认或改期,供应商也可能修订预测日期。应保存确认状态与每次观测更新。

如何标准化财政季度?

分别保存财政年度、财政季度、Period End、Report Date 与供应商标签,不要只按自然月份推导财政季度。

Agent 应把 Consensus Estimate 当作事实吗?

不应。Consensus 是随时间变化的聚合值,应保存数值、可用的分析师数量、供应商、方法说明和 As-of 时间。

QVeris 位于哪一层?

QVeris 帮助 Agent 发现、检查和调用供应商工具;数据供应商、Earnings Release、Transcript 或 SEC Filing 仍是记录源。

官方资料与下一步

API Schema、限额、套餐权限和更新周期可能变化。生产使用前,请核对当前官方文档并测试代表性 Symbol。

先冻结预期,再解释结果

用 QVeris 发现并检查适合 Agent 的财报工具,并在整个工作流中持续保留供应商身份、预期快照、财政语义与第一方证据。

阅读 REST API 指南

档案链接有效不代表已获访问权限、字段可用、价格确定或当前调用成功;执行前须检查当前契约。