FMP vs Massive(原 Polygon.io):做美股研究,应该怎么选?
找美股数据接口时,很多人会在 FMP(Financial Modeling Prep)和 Massive(原 Polygon.io)之间纠结。其实只要把你手头要写的代码摊开看,这两家的分工非常清楚:一个长于公司财报与基本面深挖,一个强在盘中逐笔行情与期权期货。
不想看长文的,可以先记住三条硬边界:
- 要查财报电话会文字稿、DCF 估值、按产品或地区拆分的营收:直接选 FMP。
- 要拉股票逐笔成交(Trades)、历史买卖盘报价(Quotes/NBBO)或期权链:只能选 Massive。 FMP 的公开标准 API 里没有逐笔成交和期权接口。
- 如果只是拉股票日线或标准三大报表,两家都能干; 这时候拉开差距的是复权方式、VWAP 与成交量的底层算法、批量同步形态,以及套餐怎么卖。
下面结合截至 2026 年 10 月以苹果(AAPL)为样本实测拉取的接口返回数据与公开定价,把这几个实际场景从代码和字段层面拆开聊聊(注:文中对比均基于两家公开标准 API 与个人套餐,价格与权益划分如有变动以官网最新公示为准)。
一张表看清:哪些数据只有其中一家有?
选型最怕代码写了一半,才发现某个核心数据在当前平台根本没有接口。先看几项直接决定去留的硬差异:
| 数据或能力 | FMP | Massive(原 Polygon.io) |
|---|---|---|
| 三大报表与财务比率 | 有,另带增长率、TTM、原始申报(As Reported)等衍生接口 | 有,由 Financials & Ratios 提供标准报表与比率 |
| 按产品 / 按地区营收拆解 | 有(/stable/revenue-product-segmentation 等) | 无对应分部拆解接口 |
| 财报电话会文字稿 | 有(/stable/earning-call-transcript) | 无对应文字稿 API |
| DCF 估值接口 | 有(/stable/discounted-cash-flow 等) | 无对应 DCF 接口 |
| 股票逐笔成交、成交条件码 | 无 | 有(/v3/trades/{stockTicker}) |
| 股票历史买卖报价明细(NBBO) | 无 | 有(/v3/quotes/{stockTicker}) |
| 期权合约、期权链与期货行情 | 无 | 有(Options / Futures 独立产品线) |
| 历史股票日线(OHLCV) | 有(分轻量、完整、不复权、分红复权 4 条路径) | 有(/v2/aggs/ticker/.../range/1/day/...) |
这几条边界在两家的文档目录里写得很明白——你可以直接对照 FMP 接口目录 与 Massive 股票接口概览、Massive 期权接口概览。
表格里的“无”是没法靠升档解决的:把 FMP 升级到最高档,也不会多出期权链;反过来,买最贵的 Massive 股票套餐,也拿不到财报电话会全文。
场景一:做公司基本面研究,FMP 的材料更顺手
假设你在研究苹果(AAPL)的业绩变化。光看利润表和现金流量表的总数,只能知道总营收涨了还是跌了;要想搞清楚“是 iPhone 卖得好还是服务业务(Services)涨得快”“大中华区有没有拖后腿”“管理层在电话会上怎么解释毛利率变化”,光有三大报表就不够了。
FMP 的优势在于把整条公司研究链路的材料都做好了现成的结构化接口,省掉了自己去扒 SEC 10-K 附注表格的功夫。
1. 实测 FMP 分产品营收与电话会文字稿返回数据
比如我们直接调用 FMP 的分产品营收接口和电话会文字稿接口拉取 AAPL 数据(代码中 quote-fmp.com 为本站国内直连网关,路径与参数同 FMP 官方 /stable/,FMP_KEY 由开通订阅后下发):
import os
import requests
API_KEY = os.environ["FMP_KEY"] # 读取开通后下发的 API Key
BASE_URL = "https://quote-fmp.com/stable"
# 1. 拉取 AAPL 按产品线拆分的年度营收
seg_resp = requests.get(
f"{BASE_URL}/revenue-product-segmentation",
params={"symbol": "AAPL", "period": "annual", "apikey": API_KEY},
timeout=10,
).json()
# 2. 拉取 AAPL 2025 财年 Q3 财报电话会文字稿
transcript_resp = requests.get(
f"{BASE_URL}/earning-call-transcript",
params={"symbol": "AAPL", "year": 2025, "quarter": 3, "apikey": API_KEY},
timeout=10,
).json()
FMP 返回的 JSON 结构非常直观——分产品营收直接把 iPhone、Service、Mac、iPad 拆成 data 字典里的键值对(单位:美元),连清洗正则表达式都省了:
// GET /stable/revenue-product-segmentation?symbol=AAPL&period=annual 实测返回(节选前 2 期)
[
{
"symbol": "AAPL",
"fiscalYear": 2025,
"period": "FY",
"reportedCurrency": "USD",
"date": "2025-09-27",
"data": {
"Mac": 33708000000,
"Service": 109158000000,
"Wearables, Home and Accessories": 35686000000,
"iPad": 28023000000,
"iPhone": 209586000000
}
},
{
"symbol": "AAPL",
"fiscalYear": 2024,
"period": "FY",
"reportedCurrency": "USD",
"date": "2024-09-28",
"data": {
"Mac": 29984000000,
"Service": 96169000000,
"Wearables, Home and Accessories": 37005000000,
"iPad": 26694000000,
"iPhone": 201183000000
}
}
]
而电话会文字稿接口返回的 content 字段则是完整的发言人逐字记录,拿来做关键词检索或直接喂给本地大模型做纪要提炼都很顺手:
// GET /stable/earning-call-transcript?symbol=AAPL&year=2025&quarter=3 实测返回(节选)
[
{
"symbol": "AAPL",
"period": "Q3",
"year": 2025,
"date": "2025-07-31",
"content": "Suhasini Chandramouli: Good afternoon, and welcome to the Apple Q3 Fiscal Year 2025 Earnings Conference Call. My name is Suhasini Chandramouli, Director of Investor Relations. Today's call is being recorded. Speaking first today is Apple's CEO, Tim Cook, and he'll be followed by CFO, Kevan Parekh..."
}
]
此外,如果你需要快速算个基准估值,FMP 有现成的 DCF 估值接口;想核对 SEC 财报原文不经标准化的科目,还能直接调原始申报报表(As Reported)。如果你的研究流程离不开电话会纪要、分部拆解或现成估值接口,选 FMP 省事得多。
2. FMP 财报自带「三日时间轴」,天然防回测未来函数
做基本面量化回测时,最怕踩“未来函数”的坑——比如苹果 FY2025 年报的报告期结束日(date)是 2025-09-27,但这份 10-K 真正交到 SEC 公之于众是在一个月后的 2025-10-31。如果你在回测里把年报数据对齐在 2025-09-27,就等于提前一个月“偷看”了财报。
看一眼 FMP 利润表接口(/stable/income-statement)对 AAPL 的实测返回前几行:
// GET /stable/income-statement?symbol=AAPL&limit=1 实测返回(节选头部与每股指标)
[
{
"date": "2025-09-27",
"symbol": "AAPL",
"reportedCurrency": "USD",
"cik": "0000320193",
"filingDate": "2025-10-31",
"acceptedDate": "2025-10-31 06:01:26",
"fiscalYear": "2025",
"period": "FY",
"revenue": 416161000000,
"grossProfit": 195201000000,
"operatingIncome": 133050000000,
"netIncome": 112010000000,
"eps": 7.49,
"epsDiluted": 7.46,
"weightedAverageShsOut": 14948500000,
"weightedAverageShsOutDil": 15004697000
}
]
FMP 在每张报表里都同时给出了 date(报告期末日)、filingDate(SEC 申报日)和精确到秒的 acceptedDate(2025-10-31 06:01:26 美东时间 SEC 系统接收时间戳)。写特征对齐代码时,直接用 acceptedDate 作生效时间截断,就能干净利落地杜绝前视偏差(Look-ahead Bias)。
不过也要给 Massive 说句公道话:它并不是“只有行情、没有基本面”。Massive 提供了标准财务报表,它的财务比率(Ratios)接口也能直接拉出 PE、PB、ROE、EV/EBITDA 等常用指标。如果你的选股器只用到标准三大报表和基础估值比率,而且本来就在用 Massive 拉行情,顺手用它的财务数据就够了,不必为了几张基础报表专门再接一套 API。
场景二:盯盘中微观行情与期权,该用 Massive
很多刚接触行情接口的朋友容易把“最新报价”“1 分钟 K 线”和“逐笔成交”混为一谈:
- 最新报价只告诉你此刻的价格快照;
- 1 分钟 K 线把这一分钟里成百上千次交易压缩成开、高、低、收四个数;
- 逐笔数据(Trades & Quotes)才完整保留每一笔成交的价格、手数、交易所、成交条件码,以及每一次买卖盘挂单报价(NBBO)的变化。
FMP 有实时报价接口、有盘中分钟级历史行情接口和 WebSocket 推送,但它没有公开标准的股票逐笔成交查询、历史买卖报价明细和成交条件码接口。
1. 字段级对比:FMP 的 1 分钟 K 线 vs Massive 的逐笔与 NBBO 盘口
把两边实际返回的数据放一起,一眼就能看出它们的设计重心完全不同。
FMP 的 1 分钟 K 线接口(/stable/historical-chart/1min)返回的是标准 OHLCV 结构,键名全部是易读的英文全称,适合直接塞进 Pandas 画图或算盘中均线(以下为指定 2025-10-16 历史日期的样本节选;若不传起止日期则默认返回最新交易日如 2026-10-20 15:59:00 收盘 339.55 的分钟序列):
// FMP: GET /stable/historical-chart/1min?symbol=AAPL&from=2025-10-16&to=2025-10-16(2025 年样本节选)
[
{
"date": "2025-10-16 15:59:00",
"open": 247.34,
"low": 247.22,
"high": 247.56,
"close": 247.45,
"volume": 704507
},
{
"date": "2025-10-16 15:58:00",
"open": 247.27,
"low": 247.27,
"high": 247.38,
"close": 247.32,
"volume": 354396
}
]
再看 Massive。在 Massive 这边,成交流(Trades)、报价流(Quotes)和分钟/秒级聚合流是严格拆开的:
- Massive 逐笔成交(
GET /v3/trades/{stockTicker}):每一笔撮合都有独立的sequence_number(序列号)、exchange(交易所代码,如11)、tape(挂牌交易带,3代表 Tape C 纳斯达克)、conditions(成交条件码数组,用来识别盘前盘后、零股或跨市场扫单),以及精确到纳秒(Nanosecond)的交易所撮合时间戳participant_timestamp与 SIP 汇总时间戳sip_timestamp:
// Massive: GET /v3/trades/AAPL 官方文档返回结构示例
{
"status": "OK",
"request_id": "a47d1beb8c11b6ae897ab76cdbbf35a3",
"next_url": "https://api.massive.com/v3/trades/AAPL?cursor=YWN0aXZlPXRydWU...",
"results": [
{
"id": "1",
"price": 171.55,
"size": 100,
"decimal_size": "100.0",
"exchange": 11,
"tape": 3,
"conditions": [12, 41],
"sequence_number": 1063,
"participant_timestamp": 1517562000015577000,
"sip_timestamp": 1517562000016036600
}
]
}
- Massive 实时/历史 NBBO 盘口(Quotes 与 WebSocket
Q.频道):保留全美最优买卖一档报价(Top-of-Book NBBO)。在我们对AAPL实时 NBBO 快照(2026-10-20 19:59:44美东盘后收盘时刻)的实测中,可以看到它明确区分了最后成交价(price: 338.0)与当时的买卖一档挂单(bid_price1: 338.0挂 400 股 vsask_price1: 338.18挂 80 股);而在 WebSocket 实时流中,为了压榨高频传输延迟,字段会进一步压缩为单字母/双字母缩写(ev: "Q",bp/bs代表买一价/量,ap/as代表卖一价/量,t为毫秒时间戳)。
所以结论很干脆:如果你只是做个看盘面板、画 K 线图,FMP 完全够用;但如果你想算买卖价差(Bid-Ask Spread)、做订单流分析、盘口回放、滑点测算,或者策略里用到了期权链,就必须选 Massive。
2. 新手常踩的坑:「1 分钟 K 线」不等于「实时数据」
1 分钟指的是 K 线的聚合粒度,而实时(Real-time)还是延迟 15 分钟(Delayed)指的是交付时效。比如 Massive 的自定义 K 线接口(Custom Bars)在 Starter($29/月)和 Developer($79/月)两档个人套餐里照样能拉 1 分钟 K 线,但数据是 15 分钟延迟的;只有升到 Advanced($199/月)档,拿到的才是实时流。跑盘中策略前,看接口文档的同时一定要核对套餐的时效表。
场景三:拉历史日线建本地库,实测复权、成交量与 VWAP 的底层差异
股票历史日线是两家的重合区。两边都能拉 OHLCV,但当我们用代码同时拉取 AAPL 在 2026 年 10 月 16 日、10 月 19 日、10 月 20 日 连续三个交易日的日线数据做逐字段对拍时,几个只看宣传页绝对发现不了的工程细节立刻浮出水面。
1. 同标的、同交易日实盘数据对拍(AAPL,2026-10-16 ~ 2026-10-20)
先看两边实际返回的原始数据对比(以 2026-10-19 与 2026-10-20 为例):
// 【FMP 完整日线】GET /stable/historical-price-eod/full?symbol=AAPL&from=2026-10-16&to=2026-10-20
[
{
"symbol": "AAPL",
"date": "2026-10-20",
"open": 339.608,
"high": 343.06,
"low": 338.7,
"close": 339.5,
"volume": 35678066,
"change": -0.108,
"changePercent": -0.03180137,
"vwap": 340.42
},
{
"symbol": "AAPL",
"date": "2026-10-19",
"open": 340.78,
"high": 346,
"low": 340.12,
"close": 342.94,
"volume": 34573200,
"change": 2.17,
"changePercent": 0.63384,
"vwap": 342.46
}
]
// 【Massive 日线聚合口径】GET /v2/aggs/ticker/AAPL/range/1/day/2026-10-16/2026-10-20
// (注:Massive 原生 aggs 用单字母键 o/h/l/c/v/vw/n,下为同日实测值)
{
"ticker": "AAPL",
"adjusted": true,
"results": [
{
"t": 1792468800000, // 对应交易日 2026-10-20
"o": 339.86, // open
"h": 343.06, // high
"l": 338.7, // low
"c": 339.5, // close
"v": 35851382.759126, // volume(含碎股成交的长尾浮点数)
"vw": 340.1415, // 真实逐笔成交额加权均价 (VWAP)
"n": 613407 // 当日汇总成交笔数 (transactions)
},
{
"t": 1792382400000, // 对应交易日 2026-10-19
"o": 340.775,
"h": 346.0,
"l": 340.115,
"c": 342.94,
"v": 34573181.500186,
"vw": 343.0361,
"n": 670892
}
]
}
把 2026-10-16、2026-10-19、2026-10-20 连续三个交易日的实测数字列成一张对账表,差异一目了然:
交易日(AAPL) | 指标 | FMP(/stable/historical-price-eod/full) | Massive(massive_rest 日线聚合) | 为什么会不一样?(工程内幕) |
|---|---|---|---|---|
| 2026-10-16 | 四价(O/H/L/C) | 346.09 / 347.82 / 340.46 / 343.46 | 346.085 / 347.82 / 340.46 / 343.46 | 最高、最低、收盘完全一致;open 仅差 0.005 美元 |
| 2026-10-16 | volume / vwap | 59,946,400 / 344.4575 | 59,946,368.51(914,809 笔)/ 344.1277 | FMP 的 vwap = (346.09+347.82+340.46+343.46)/4 = 344.4575;Massive 为总成交额 $206.29 亿 ÷ 总股数 |
| 2026-10-19 | 四价(O/H/L/C) | 340.78 / 346.0 / 340.12 / 342.94 | 340.775 / 346.0 / 340.115 / 342.94 | 最高、收盘完全一致;open/low 仅半美分精度差 |
| 2026-10-19 | volume / vwap | 34,573,200 / 342.46 | 34,573,181.50(670,892 笔)/ 343.0361 | FMP 的 vwap = (340.78+346.0+340.12+342.94)/4 = 342.46;Massive 为总成交额 $118.60 亿 ÷ 总股数 |
| 2026-10-20 | 四价(O/H/L/C) | 339.608 / 343.06 / 338.7 / 339.5 | 339.86 / 343.06 / 338.7 / 339.5 | 最高、最低、收盘完全一致;当日 FMP open 偏离略大 |
| 2026-10-20 | volume / vwap | 35,678,066 / 340.42 | 35,851,382.76(613,407 笔)/ 340.1415 | 当日 FMP 比 Massive 少 17.33 万股(-0.48%),且该日 FMP vwap 退化为三价均值 (H+L+C)/3 = 340.42 |
为了排除偶然性,我们进一步拉取了 AAPL 从 2026-07-01 至 2026-10-20 共 78 个交易日的 FMP 日线做全量回验,可以得出两条非常硬的工程结论:
- 两家日线的
vwap字段根本不是同一个算法:
- 在 FMP 拉取的 78 个交易日中,有 77 天精确等于
(open + high + low + close) / 4四价简单均值(仅2026-10-20最新一天落在(high + low + close) / 3 = 340.42)。换句话说,FMP 日线里的vwap只是基于日 K 线四个价格算出的简单均值,完全没有乘以盘中每笔成交量权重。 - 而 Massive 的
vw(如 10-20 的340.1415)是由当日 61.3 万笔真实撮合的总成交金额($12,194,543,108.76)除以总成交股数(35,851,382.76)算出来的真·成交量加权均价。如果策略因子依赖真VWAP或当日成交笔数(n/transactions),必须用 Massive。
- 两家的成交量(
volume)统计口径不同,切忌混表存储:
- Massive 由底层逐笔成交直接累加,保留了美股碎股交易(Fractional Shares)的小数位;FMP 输出整数,但并不是对 Massive 简单取整——实测
10-16和10-19两天 FMP 成交量比 Massive 分别多 31.5 股和 18.5 股,而10-20当天却比 Massive 少 173,316 股(约 0.48%)。这是因为两家上游对盘前盘后、零股及特殊条件码成交(Trade Conditions)的纳入过滤规则不同,混写进同一张本地表会导致量价因子跳变。
2. 复权口径怎么给:拆股复权 vs 现金分红复权
再看长期回测最关心的复权问题。在 Massive 的自定义 K 线接口官方文档中,对 adjusted 参数的原始定义写得很明确:“Whether or not the results are adjusted for splits. By default, results are adjusted.”——也就是说,Massive 的 adjusted=true 只做拆合股调整(Split-adjusted),不包含现金分红复权。如果你拿这套日线去算跨年度持有总收益率,需要自己另外拉分红数据做复权处理。
而在 FMP 这边,除了常规日线外,直接提供了一条独立的分红调整价格接口(/stable/historical-price-eod/dividend-adjusted)。我们实测对比 AAPL 在 2025 年 2 月 12 日(经历后续多次季度现金派息前)的两条 FMP 序列:
# 对比 AAPL 在 2025-02-12 的「常规日线」与「分红复权日线」
# 1. FMP 常规日线 (/stable/historical-price-eod/full)
# -> {"date": "2025-02-12", "open": 231.20, "high": 236.96, "low": 230.68, "close": 236.87}
#
# 2. FMP 分红复权日线 (/stable/historical-price-eod/dividend-adjusted)
# -> {"date": "2025-02-12", "adjOpen": 229.78, "adjHigh": 235.51, "adjLow": 229.27, "adjClose": 235.42}
可以看到,经过后续累计现金分红的前复权折算后,2025-02-12 的 adjClose(235.42)比未做分红复权的 close(236.87)低了 1.45 美元。不想自己写分红再投资复权因子的话,直接调 FMP 的 dividend-adjusted 序列会省心很多。
3. 全市场批量建库:按日 Bulk 接口 vs S3 Flat Files
建全市场日线库时,按股票代码一个个循环请求是很慢的:
- FMP 的思路是提供 EOD Bulk 批量接口(
/stable/eod-bulk?date=2026-10-20),你传一个交易日,它一次性返回当天全市场所有股票的收盘数据,非常适合放在每日收盘后的定时任务(Cron)里做日度增量同步。 - Massive 的思路则除了 REST 接口外,还提供 Flat Files(离线历史数据文件),把按天整理好的全市场数据放在兼容 S3 协议的存储桶里,直接用 AWS CLI 或
boto3整包拉取。如果要一次性把过去十来年的全市场分钟线或逐笔历史搬回本地硬盘,Massive 这种按文件归档的方式更符合数据工程的习惯。
另外,查历史数据别光看平台宣传的“最早可追溯年份”。比如 Massive 的自定义 K 线文档写明底层记录从 2003 年 9 月 10 日开始,但 Basic、Starter、Developer、Advanced 四档个人套餐实际开放的历史窗口分别是 2 年、5 年、10 年和全部历史。
就算两边都有同名指标,算法和 API 风格也大不相同
1. 同名指标的算法差异:以 EPS 和 PE 为例
哪怕两个平台都给某个指标,直接混用之前也得先翻翻公式定义。最典型的例子就是 EPS(每股收益)和 PE(市盈率):
| 对比维度 | FMP(利润表 / TTM 财务比率) | Massive(财务比率 /stocks/financials/v1/ratios) |
|---|---|---|
| 核心字段名 | eps、epsDiluted、priceToEarningsRatioTTM、priceToEarningsDilutedRatioTTM | earnings_per_share、price_to_earnings |
| 股本分母口径 | 财报期内加权平均基本/稀释股本(weightedAverageShsOut / weightedAverageShsOutDil) | 价格日期当天的时点流通股数(Point-in-time shares outstanding,并假设其他类别股份全部转换) |
| 与官方 10-K 报表是否一致 | 与利润表披露的 GAAP 基本/稀释 EPS 完全一致(如 AAPL FY25 eps: 7.49 / epsDiluted: 7.46) | 官方文档明确提示:与利润表上的基本/稀释 EPS 不一致 |
对于像苹果(AAPL)这样常年大额回购注销股票的公司,“过去四个季度的加权平均股本”总是大于“期末最新时点的流通股本”。因此同一天去查,两边算出来的 EPS 和 PE 必然存在系统性微小偏差。中途切换数据源时,千万别只改字段名而不核对分母口径。
2. 动手写代码前的体验差异:扁平 REST vs 类 SQL 过滤 DSL
虽然这不影响“能不能拿到数据”,但直接决定你写客户端封装(Wrapper)的顺手程度:
- FMP 是「单前缀 + 扁平参数 + 顶层数组」:所有接口统一挂在
/stable/前缀下,参数就是最朴素的?symbol=AAPL&period=quarter&limit=4,返回直接是一个 JSON 数组[ {...}, {...} ],没有任何外层包装。但需要注意 FMP 是按分钟限速(300~3,000 次/分钟),批量拉取时要在代码里加令牌桶限流。 - Massive 是「多前缀 + 类 SQL 范围过滤 + 游标分页」:不同产品线散落在
/v2/aggs/、/v3/trades/、/stocks/financials/v1/等不同路径下;查询参数支持类 SQL 的范围算子(如timestamp.gte=2026-10-01、ticker.any_of=AAPL,MSFT、price_to_earnings.lte=30、sort=market_cap.desc);返回统一包在{"status": "OK", "results": [...], "next_url": "..."}里,翻页时不用自己算页码,直接拿返回的next_url继续发 GET 请求即可。
算笔实在账:综合打包 vs 按资产线拆开买
技术上清楚该用谁之后,最后往往卡在预算和订阅规则上。这两家的收费逻辑完全不是一个路数。
1. FMP:综合套餐,按档位解锁深度与额度
FMP 的个人订阅走的是“全家桶分档”路线,升级套餐会同时放开数据类型、历史年限、市场范围和每分钟调用频次。官网日常主推的是年付折算月价:
| FMP 个人套餐 | 年付折算月价(按年付清) | 按月单买标价 | 官网公示调用频次与核心解锁权益 |
|---|---|---|---|
| Starter | 19 美元/月(年付 228 美元) | 29 美元/月 | 300 次/分钟,美股市场、年度基本面与比率、5 年历史(另有服务条款级 30 天 20GB 带宽软上限) |
| Premium | 49 美元/月(年付 588 美元) | 69 美元/月 | 750 次/分钟,美/英/加市场、完整季度财报与比率、盘中分钟图、Custom DCF、30 年历史(软上限 50GB/30 天) |
| Ultimate | 99 美元/月(年付 1188 美元) | 139 美元/月 | 3,000 次/分钟,全球市场、全历史、电话会文字稿、13F 机构持仓、1 分钟盘中、Bulk 批量接口(软上限 150GB/30 天) |
看表时注意两点:一是官网大字标的 19/49/99 美元是按年一次性付款折算出来的月均价,如果只想先付一个月试试水,实际刷卡金额是 29/69/139 美元;二是像电话会文字稿、13F 持仓和 Bulk 批量接口,要到 Ultimate 档才开放。
2. Massive:按资产线独立售卖,且严查“非专业用户”身份
Massive 把平台拆成了股票(Stocks)、期权(Options)、指数(Indices)、外汇与加密(Currencies)、期货(Futures)五条独立的产品线,各自单独订阅。买一份股票套餐,并不包含期权或期货权限。
以最常用的个人股票套餐(月付口径)为例:
| Massive 股票套餐 | 月付价格 | 时效、历史窗口与核心权限(含 Flat Files 细分边界) |
|---|---|---|
| Stocks Starter | 29 美元/月 | 15 分钟延迟,5 年历史;含日线/分钟线聚合及对应聚合类 Flat Files,不含逐笔成交(Trades)与报价明细(Quotes) |
| Stocks Developer | 79 美元/月 | 15 分钟延迟,10 年历史;解锁逐笔成交(Trades API 及 Trades Flat Files),不含报价明细(Quotes) |
| Stocks Advanced | 199 美元/月 | 实时数据,20 年以上全历史;解锁全部逐笔成交、NBBO 报价明细(Quotes API 及 Flat Files)与 Financials & Ratios |
如果你只需要给现有的行情脚本补一份基础财务报表和比率,可以单独加订 29 美元/月的 Financials & Ratios 扩展包(若已买 Stocks Advanced 则直接包含在内)。但如果你要同时跑股票、期权、期货三条线的实时策略,由于 Options Advanced 和 Futures Advanced 的公开月付价也各是 199 美元,三份 Advanced 叠在一起就是 597 美元/月——当然,哪条线不需要实时和全历史,可以单独降回 Starter 或 Developer 来省钱。
更关键的一条规则是 Non-Professional(非专业个人)资格限制。Massive 的五条资产线共用一套 11 道题的合规问卷来认定身份:个人套餐只允许你本人做非商业研究使用;只要数据展示在别人能看到的屏幕上——哪怕是公司内部同事、测试人员或者内部预览环境——按合规要求都必须购买 Business 商业套餐,而商业档的价格完全是另一个量级(比如期货 Business 按交易所分开计费,公开标价是每个交易所 999 美元/月)。因此如果是团队或商业项目选型,不能直接拿个人档的 199 美元去算总账。
总结:按你手头的任务对号入座
把实测数据表现和计费规则放一起,怎么选就很清晰了:
- 做个股深度基本面研究,要看电话会纪要、营收分部拆解、DCF 估值、或者需要
acceptedDate精确时间戳做财报回测:选 FMP。 冲着电话会和 Bulk 去的,预算直接按 Ultimate 档看。 - 做盘中微观结构分析、要拉纳秒级逐笔成交、真实 NBBO 买卖报价、日内真 VWAP 或期权链:选 Massive。 根据你需不需要实时(Real-time)和报价明细(Quotes),在 Developer 和 Advanced 之间选。
- 只拉股票历史日线做回测:两家都能用,但切忌混用。 想要现成的现金分红复权价格序列(
adjClose)、按交易日调接口做增量更新,选 FMP;习惯用 S3 工具整包拉取按日归档文件、或者策略依赖真逐笔汇总 VWAP 与成交笔数,选 Massive。 - 只用标准三大报表和常规财务比率:哪边顺手用哪边。 已经在用 Massive 行情的用户,加个 Financials & Ratios 就能应付基础基本面筛选,只需留意其 EPS 分母是时点流通股本即可。
- 既要做财报电话会与估值深挖,又要跑期权或盘口逐笔策略:别硬逼一家平台干完所有事,两家组合用最省心。
如果你目前主要从公司财报和日常行情入手,不妨先去翻翻本站整理的三大财务报表、电话会文字稿、DCF 估值和历史行情接口中文文档,挑一只熟悉的股票把整个数据链路跑通,再决定后续要不要补入第二个数据源。