常见问题解答(FAQ)
汇总开发者与投研团队在接入 FMP数据源中文站 时最常检索的 22 个核心问题,涵盖 FMP 官方 Ultimate 权限与价格对比、yfinance 平替方案、全球多资产代码规则、接口报错排查、实盘字段避坑及滚动 30 天流量计费说明。
一、数据来源、接口权限与多市场覆盖
Data Source & Multi-Asset CoverageFMP 是什么意思?本站与 FMP(Financial Modeling Prep)官方是什么关系?
FMP 是全球主流金融数据服务商 Financial Modeling Prep 的缩写。本站(FMP数据源中文站,fmpquote.com)是 FMP 官方最高级别套餐(Ultimate 权限)的原生透明中转网关。全站收录的 283 个 /stable/* 数据接口全部实时回源至 FMP 官方服务器,返回的 JSON 或 CSV 字段结构、数值精度与官方完全一致,不做任何字段删减或二次篡改。
FMP 国内连不上怎么办?本站与直接订阅 FMP 官方 API(价格与网络)有什么区别?
主要有三点区别:① 国内直连网络:FMP 官方服务器位于海外,国内或亚太服务器直接请求常出现连接超时、SSL 握手失败或高丢包,本站通过专线回源与国内加速网关(https://quote-fmp.com)提供稳定低延迟访问;② FMP API 价格与支付:FMP 官方分为 Starter($29/月)、Premium($69/月)和 Ultimate($139/月,需外币信用卡)三档,本站直接开放最高级 Ultimate 全量接口,按人民币定价(约为官方价格的 2 折左右),支持微信扫码即开即用;③ 中文技术文档:本站提供全部 283 个接口的中文参数表、1,429 个标准返回字段释义与 79 条财务计算公式对照。
与免费的 yfinance、Alpha Vantage 相比,FMP 数据接口有什么优势?(yfinance 429 平替)
量化与投研团队从非官方爬虫库(如 yfinance)迁移到 FMP 标准接口,通常是因为三个硬伤:① 稳定性与限流:yfinance 依赖雅虎财经网页端非公开接口,批量拉取时极易触发 HTTP 429 Too Many Requests 封禁 IP 或因页面改版导致字段断流,而 FMP 提供带 SLA 保障的标准化 REST 与 Bulk(全市场批量数据) 端点;② 历史深度与无幸存者偏差:FMP 提供 30+ 年标准化三大报表、Historical S&P 500(标普500历史成分股变更)、Delisted Companies(退市公司列表) 及精确到秒的 SEC 披露时间戳(acceptedDate);③ 机构级另类数据:涵盖 SEC Form 13F 机构持仓、Form 4 内部人交易、参众议员股票交易披露与 Earnings Transcript(财报电话会文字稿)。
除了美股之外,支持港股财报、A股行情、全球指数、外汇接口、加密货币和黄金原油大宗商品吗?
全部支持。FMP 是全球多资产综合数据源,调用时只需按标准后缀传入 symbol 参数即可:① 美股与美股 ETF 直接传代码(如 AAPL、NVDA、SPY);② 港股加 .HK(如 0700.HK 腾讯控股、9988.HK 阿里巴巴,支持港股实时报价、历史日线与港股财报数据 API);③ A 股上交所加 .SS、深交所加 .SZ(如 600519.SS 贵州茅台、000858.SZ 五粮液);④ 英股加 .L、加股加 .TO、日股加 .T;⑤ 全球指数前加 ^(如 ^GSPC 标普500、^NDX 纳指100、^HSI 恒生指数、^VIX 恐慌指数);⑥ 实时外汇汇率、加密货币与黄金原油历史数据接口直接传交易对或合约代码(如 EURUSD、USDCNH、BTCUSD、GCUSD 黄金、CLUSD 原油)。
历史数据的回溯深度和各接口的数据更新频率(Cycle Time)是怎样的?
历史深度方面:美股及核心市场的日线行情(EOD)、分红拆股、三大财务报表(10-K 年报 / 10-Q 季报)与财务比率支持长达 30 年以上的历史回溯;分钟级分时行情(1min / 5min / 15min / 30min / 1hour)支持按 from 与 to 日期区间分段拉取。更新频率方面:实时报价(Real-Time Quote)在交易时段秒级刷新;SEC 13F 机构持仓、8-K 重大事件、内部人交易与国会交易随监管披露实时入库;每个接口详情页顶部均单独标注了官方更新周期(Cycle Time)。
二、接口调用、报错排查与实盘字段避坑
Troubleshooting & Field Pitfalls支持哪些编程语言和工具调用?认证参数 apikey 怎么传?
本站提供标准 HTTPS REST API,支持任何能发起 HTTP GET 请求的语言和工具,包括 Python(requests / pandas / httpx / aiohttp)、JavaScript / TypeScript(fetch / axios)、Go、Java、C#、R、MATLAB、Excel PowerQuery 以及命令行 curl。网关同时支持在 URL 查询参数中携带 ?apikey=你的APIKEY(推荐主方式)或在 HTTP 请求头中传递 apikey: 你的APIKEY;注意切勿在 URL 与请求头中同时传入两个不同的 Key 值,否则网关会返回 400 Conflicting API KEY credentials.。
调用时返回 400、401 Unauthorized、403 Forbidden 或 404 Not Found 是什么原因?
① 返回 401(Invalid API KEY.):请求未携带 apikey、Key 字符串拼写错误、Key 已过有效期(expires_at),或 Key 已被重置/吊销作废(登录「个人中心」核对有效期或续费后即刻恢复);② 返回 400:一种情形是缺少必填参数或参数值非法,响应为 Query Error: Invalid or missing query parameter - xxx 的纯文本(不是 JSON 数组,客户端勿直接 resp.json()),另一种是 URL 查询参数与 HTTP 请求头同时传入了不一致的 apikey,触发 Conflicting API KEY credentials.;③ 返回 403(This endpoint is disabled by the gateway.):请求命中网关策略封禁列表(block_paths,当前生产环境全量开放 /stable/*,正常调用不会触发);④ 返回 404:请求路径拼写错误,或仍在使用已废弃的 /api/v3/、/api/v4/ 前缀(请统一改为 /stable/)。
为什么有些接口返回 200 OK,但响应内容是空数组 []?
返回 200 [] 代表请求已成功抵达上游,但当前筛选条件下无匹配数据。最常见的 4 种原因:① 标的代码缺少交易所后缀(如查港股写了 0700 而非 0700.HK);② 日期区间(from / to)恰逢周末、美股法定休市日(可先调 Holidays By Exchange(交易所休市日历) 核对),或早于该公司 IPO 上市日期;③ 标的类型与接口不匹配(例如对非美股或 ETF 调用仅限美股本土公司披露的参议院交易、SEC 13F 申报接口);④ 在仅支持单标的查询的接口中传入了逗号分隔的多标的代码(多标的批量查询请优先使用名称带 Batch 或 Bulk 的专用接口)。
请求触发限流或配额上限返回 429 Too Many Requests 怎么办?
每个套餐对应每分钟请求数(RPM)与滚动 30 天流量上限(GiB),两者都可能返回 HTTP 429,但处理方式不同:① 分钟限流:降低并发和请求频率,按 Retry-After 提示有限重试;没有提示时等待分钟窗口,仍限流则停止并核对套餐。② 流量耗尽:响应为 Bandwidth limit reached for the rolling 30-day window. 时停止密集重试,登录个人中心核对用量,等待旧消耗滑出窗口或升级档位,不能指望几秒后恢复。Bulk(全市场批量数据) 可减少请求次数,但响应通常更大,不能保证节省字节额度,也不能解除已耗尽的流量限制。
用财务报表接口(Income Statement)做量化回测时,如何用 acceptedDate 避免「未来函数(Look-ahead Bias)」?
在 Income Statement(利润表)、Balance Sheet Statement(资产负债表) 和 Cash Flow Statement(现金流量表) 中,date 是会计期截止日,不能直接作为市场获知财报的时点。对经核实的 SEC 申报,可结合 acceptedDate 接收时间、filingDate 申报日期及原始文件核对披露时点,并处理时区与交易时段。非美标的、与期末同日的零点时间、缺失或回填日期,须先核对原始披露来源;字段名本身不能保证真实公开时间。仅用这些日期切片,也不能自动消除后续财报重述或数据修订带来的前视偏差。
日线行情(historical-price-eod)里的 vwap 字段是怎么算的?前复权日线(dividend-adjusted)调哪个接口?
实盘对账时需注意两个行情字段口径:① Stock Price and Volume Data(历史日线行情)(路径 /stable/historical-price-eod/full)返回的 vwap 字段,在已收盘结算的历史日线上定义为四价算术均值 (open + high + low + close) / 4(仅盘中未结算快照为 (high + low + close) / 3),并非逐笔成交量加权均价,若需真实日内成交量加权 VWAP 请用 1 Min Interval Stock Chart(1分钟分时行情) 按 ∑(典型价×volume)/∑volume 聚合;② 常规日线默认仅做拆并股调整(split-adjusted),若回测需要同时包含现金分红与拆股的前复权价格序列,请直接调用 Dividend-Adjusted Price Chart(复权日线行情)(路径 /stable/historical-price-eod/dividend-adjusted)。
查询台积电(TSM)、阿里巴巴(BABA)等中概股/ADR 财报时,为什么货币单位(reportedCurrency)不是美元?
跨国上市的 ADR(美国存托凭证)普遍存在「行情交易币种与财报本位币分离」现象:例如台积电(TSM)在纽交所的 Stock Quote(股票实时报价) currency 为 USD(美元),但其原始 Income Statement(利润表) 的 reportedCurrency 为 TWD(新台币),且每份 TSM ADR 对应 5 股台股原股。若直接拿美元股价除以新台币 EPS 会得出错误的市盈率。建议直接调用 FMP 已完成币种与换股比例折算的 Financial Ratios(财务比率) 或 Key Metrics TTM(关键指标TTM) 获取估值比率,或在自算时先核对 reportedCurrency 并结合 Forex Quote(外汇实时报价) 汇率折算。
调用 13F 机构持仓(Form 13F)和内部人交易(Form 4)接口时,CIK 补零与交易类型过滤要注意什么?
① 机构 CIK 必须补齐 10 位前导零:SEC 标准 CIK 编号固定为 10 位数字字符串(例如巴菲特伯克希尔哈撒韦为 0001067983,Python 可用 cik.zfill(10) 处理),传参时请勿截掉前导零;② 内部人交易(Form 4)需区分真实买卖与期权行权:在过滤高管增减持信号时,应按 transactionType 筛选公开市场主动买入(P-Purchase)与主动卖出(S-Sale),剔除期权/RSU 行权转换(M-Exempt)及扣税代售(F-InKind)记录,以免产生假信号。
三、套餐额度、滚动 30 天流量与批量数据
Quota & Bulk APIs免费试用版与付费专业版在可调用的接口范围上有区别吗?
没有任何接口权限阉割。免费试用版与付费专业版同样开放全部 283 个 FMP Ultimate 接口(包括机构 13F 持仓、财报电话会文字稿、自定义 DCF 估值、经济日历、CFTC 持仓报告及全部 18 个 Bulk(全市场批量数据) 接口)。不同档位之间的唯一差别在于「每分钟调用次数(RPM)」和「滚动 30 天数据流量(GiB)」配额上限。
什么是「滚动 30 天数据量(GiB)」?大概能拉取多少数据?
「滚动 30 天流量」采用滑动时间窗口(统计当前时刻往前推 30×24 小时内的累计响应字节数),随时间推移,30 天前的旧消耗会自动滑出窗口释放额度,无需担心月底集中清零。量级参考:单次股票实时报价或单公司 5 年利润表 JSON 响应通常仅 2 KB ~ 15 KB;专业版 25 GiB / 滚动 30 天的流量配额,大约相当于可调用 150 万~300 万次常规 JSON 接口,或下载数百次全市场 Bulk CSV 批量文件,足以支撑日常高频投研与全市场日度同步。
支持 Bulk 全市场批量接口吗?调用 Key Metrics TTM Bulk 等接口有什么最佳实践?
支持 Bulk(全市场批量数据) 接口。建库时按接口分别处理:Company Profile Bulk(公司档案批量) 用 part 选择分片;三大报表批量接口按各自参数表指定 year 与 period;Key Metrics TTM Bulk(批量TTM关键指标) 和 Ratios TTM Bulk(批量TTM财务比率) 无业务参数,提供全市场截面;EOD Bulk(全市场日线批量) 用 date 选择交易日。CSV 响应按文本或分块流解析,不能调用 resp.json()。日常财报维护可先用 Latest Financial Statements(最新财报增量列表) 发现更新,再请求对应明细;全市场快照与单标的增量应按任务选择,不统一套用年份季度参数。
如何查看我当前的调用次数、已用流量和剩余额度?
微信扫码登录右上角「个人中心」后,控制面板会实时展示当前 API Key 的套餐状态、每分钟限流档位(RPM)、滚动 30 天已用流量与剩余百分比、到期时间以及历史订单明细。
四、账号注册、免费试用与续费升档规则
Trial, Renewal & Key Rotation免费试用怎么申请?需要预充值或绑定自动扣费吗?
点击页面右上角「登录 / 注册」,使用微信扫码即可完成注册;进入「个人中心」后点击「领取免费试用 Key」,系统会立即签发一个有效期 1 个月的专属 API Key。全程 0 元、无需绑卡、更不存在任何到期自动扣费。每个微信账号限领一次免费试用。
试用期结束或付费套餐到期后会怎样?续费后需要改代码换 Key 吗?
套餐到期后,该 Key 的接口请求会暂时停止并提示续费,不会产生任何欠费。当你在个人中心完成续费或升级为专业版后,如果仍在原 Key 基础上续期/升档,权限会实时生效,你现有的代码脚本无需修改即可恢复调用。
套餐还没到期就提前续费,或者从低档位升级到高档位,时长和费用怎么算?
系统采用透明的「同档顺延、跨档按天折抵」规则:① 同档位续费:新购时长会直接在你当前到期时间的基础上往后顺延叠加,一天都不会浪费;② 跨档位升级:系统会自动按你当前套餐的「剩余有效天数」折算出剩余价值,直接抵扣新套餐的应付金额(即:应付金额 = 新档位原价 − 旧档位剩余天数折抵额),付清后新档位的高额度立即生效。
如果我的 API Key 不慎泄露到公开仓库里了,怎么处理?
请立即登录「个人中心」,点击 Key 管理区的「更换 Key」按钮。系统会秒级为你生成一串全新的 API Key,同时将泄露的旧 Key 立即作废;你当前套餐的剩余有效期、档位配额以及滚动 30 天用量记录会自动结转到新 Key 上。