核心摘要
合适的免费股票历史价格 API 应覆盖所需交易所、日期范围、K 线周期和证券代码数量,并且无需升级到付费套餐即可获取关键数据
至少应包含时间戳、开盘价、最高价、最低价、收盘价和成交量。用于收益分析时,还需核对拆股、分红和复权收盘价
免费套餐通常会限制每分钟请求次数、单次响应返回的记录数、可查询的历史跨度和盘中数据保留期限,也可能限制商业用途
在确定数据库结构或研究流程前,应测试多个股票代码,并重点核验拆股、分红等公司行为发生日前后的价格数据
用于长期收益和投资组合研究时,免费日线复权 OHLCV 通常是合适起点;用于还原盘中入场位置时,需要边界定义清楚且历史保留期足够的盘中 K 线;用于事件研究时,则应同时保留原始价格、复权价格,以及连接两者的公司行为记录。因此,真正合适的 API 是价格口径与计算目的相匹配的服务,而不只是宣传历史跨度最长的服务
股票历史价格数据应包含哪些内容
“历史价格”既可能仅指未复权的每日收盘价,也可能指完整的 OHLCV K 线,或跨度长达数年的盘中 K 线数据。比较数据供应商前,应先准确界定所需数据集
核对时间戳所用时区、交易日历和 K 线周期定义,并确认 API 是否会省略零成交 K 线或数据缺失的交易时段
拆股和分红会影响不同时期价格的可比性。应确认 API 返回未复权价格、复权价格还是两者,并记录所采用的具体复权方法
明确主要上市地、交易币种、常规或盘前盘后时段、交易场所日历,并确认日线收盘价究竟指收盘集合竞价价、官方收盘价、最后成交价,还是服务商自行选择的数值
最好在复权 OHLCV 之外单独提供拆股与现金分配因子或事件,并确认成交量是否反向调整、现金分红是否作用于全部价格字段,以及数据更正何时会改变历史复权因子
保存稳定的证券和上市 ID、股票代码有效期、IPO 日期、退市日期、转板记录、股份类别变化和停牌信息。今天的股票代码名单不能直接作为历史研究样本
分钟或小时数据应说明事件时间与接收时间、K 线以区间开始还是结束时间标记、交易时段中断、集合竞价成交、延迟成交、更正记录,以及空区间是省略还是返回空 K 线
保留服务商、接口、请求参数、获取时间、来源时间戳、数据结构版本和原始响应。历史价格可能因成交更正或公司行为的后续处理而被重新计算
值得评估的免费股票历史价格数据来源
仅列出供应商名称并不能构成有效推荐。同一家供应商可能分别提供日线、复权日线、盘中数据和批量下载产品,其覆盖范围与套餐边界并不相同。应先按工作负载选择路线,再到官方文档核对当前权限、许可、历史保留期和复权口径
| 路线 | 适合用途 | 选择前核验 |
|---|---|---|
| Alpha Vantage | 需要 JSON 或 CSV 时间序列,并希望把价格与同一文档体系中的其他行情能力结合起来的原型 | 所需原始或复权接口在当前套餐中是否开放、输出规模、调用频率,以及实际返回的复权字段 |
| Massive | 需要明确 K 线周期构建、时间戳和市场数据上下文的美国股票聚合 K 线场景 | 当前免费权限、历史窗口、复权参数含义、分页、交易场所覆盖与商业条款 |
| Stooq CSV 下载 | 能够读取可下载日线文件的人工探索、电子表格与轻量研究 | 证券代码规则、交易所后缀、更新频率、复权口径、自动化适用性与再分发条款 |
| 交易所或发行人记录 | 为公司行动、代码历史、官方交易日历和存在争议的价格日期建立真值集 | 这通常是验证来源,而不是方便的标准 API;必须记录每条记录如何映射到供应商价格序列 |
不要把套餐描述写死在应用逻辑中:免费额度与接口权限可能变化。应保存供应商、接口、参数、文档核对日期和实际响应契约,后续发生变化时才能定位原因,而不是误判为市场数据缺失
实例:2 比 1 拆股并不代表股价亏损 50%
假设某股票周一收盘价为 100 美元,随后进行 2 比 1 拆股,周二以 50 美元附近开始交易。未复权序列显示 100 变为 50,看上去像亏损 50%;拆股复权序列会把周一可比收盘价重述为 50 美元,并通常反向调整历史成交量,因此在不考虑普通价格波动时,拆股前后的经济收益约为 0%。如果接口只复权收盘价,而策略还使用开盘、最高或最低价,信号仍可能失真
现金分红需要单独确定口径
假设某股票在派发 1 美元现金股息前收于 50 美元,除息后在 49 美元附近开盘。原始价格收益序列会记录下跌,总收益序列则把现金分配视为股东已经取得的价值。两种序列都不是所有场景下的唯一正确答案:展示实际成交价格应使用原始 K 线,估算股东财富应使用定义清楚的总收益复权,事件研究往往需要同时保留两者和股息记录。复权方法应写入元数据,不能把所有转换结果笼统命名为 adjusted_close
如何比较免费股票历史数据 API
| 方案 | 优势 | 优先核对 | 适合场景 |
|---|---|---|---|
| 日线 OHLCV API | 通常可查询更长时间跨度的数据,单次响应的数据量也较小 | 价格复权方式、退市股票数据和交易所覆盖范围 | 策略回测与投资组合研究 |
| 盘中数据 API | 提供时间粒度更细的 K 线,适合交易分析 | 数据保留期限、请求频率限制和交易时段 | 交易信号、图表分析和交易执行研究 |
| CSV 下载 | 无需安装客户端库即可进行批量分析 | 能否自动化获取、数据更新频率和文件字段结构 | 电子表格分析与一次性研究任务 |
| 多源数据聚合工具 | 通过统一入口查找并调用不同供应商的数据服务 | 数据来源是否透明,以及字段是否经过标准化 | 智能体与多数据源工作流 |
可以针对所有候选服务商执行同一组验收查询:高流动性股票、新股 IPO、股票代码变更、已退市证券、拆股、特别股息、境外上市证券,以及交易所休市或提前收盘日。逐项比较记录数量、时间戳、币种、原始与复权价格、成交量处理和数据修订行为。即使接口返回 HTTP 200,只要漏掉退市证券或悄悄改变复权基准,也不能算通过历史价格验收
根据最终计算选择 API
使用明确标注交易所、时段、时区和最近完整周期的原始 OHLCV,并以公司行动标记说明事件,不要改写可见成交价
需要复权历史或可复现的因子、股息事件、退市证券和历史时点标识
同时保存原始与复权 K 线、准确事件日期、公开时间戳和事件前后的控制窗口
优先考虑足够长的盘中保留期、确定的 K 线构建、交易时段标记、更正记录和真实可用时间
实用接入检查清单
列明交易所、股票代码、起始日期、K 线周期、时区、复权方式、所需字段、更新频率和预期用途
选取一只流动性较高的股票,并覆盖一次拆股日期、一次分红日期、一个已退市股票代码和一个非美国交易所的标的,再逐项与可信的交易所或发行人数据源核对
加入分页、缓存、指数退避和请求日志,并采用可从检查点续传的下载机制。不要假定免费套餐的限制条件会长期不变
将服务商原始记录、公司行为事件、复权因子和标准化 K 线分开保存,不能用复权值覆盖原始收盘价,也不能丢弃所使用的复权因子
发布价格序列前,检查 OHLC 逻辑、负数或不可能价格、重复时间戳、缺失交易日、时区偏移、币种变化、成交量异常和拆股日前后的连续性
为请求生成指纹,按页面和证券记录检查点,冻结数据来源版本并保存更正日期。重复运行后,每一条发生变化的记录都应能够解释
针对结构漂移、更新延迟、证券覆盖下降、配额变化、静默返回不完整数据和许可变更设置告警,关键工作负载还应准备有文档的备用方案
使用 QVeris 查找可直接调用的市场数据服务
免费套餐和接口可能发生变化。QVeris 可帮助智能体在路由请求前,按市场、周期、日期范围、证券标识、格式和公开的供应商边界查找并检查历史价格能力。它能够简化能力访问,但复权政策、交易日历、历史时点证券范围、原始数据留存、质量门槛、结果复现和许可管理,仍由应用方负责
- 根据所需市场、数据周期、数据格式和操作类型查找匹配的数据服务
- 智能体决定调用某一供应商的接口前,先检查工具的输入要求和输出结果
- 工作流涉及多个金融数据源时,确保服务查找和调用过程可追溯、可审计
常见问题
可以。许多 API 免费提供日线历史数据,但市场覆盖范围、可查询的历史跨度、请求次数限制、许可条款以及复权数据的提供方式各不相同
JSON 通常最适合应用程序和 Python 脚本;CSV 则更适合批量下载、电子表格处理以及生成可复现的归档数据集
部分收益序列只需要复权收盘价,但如果策略使用开盘、最高或最低价,就需要口径一致的复权 OHLC 与成交量,或者能够取得自行计算这些字段所需的复权因子
取决于序列定义。总收益复权会纳入现金分配,纯拆股复权则不会。必须标明方法并保留股息事件,不能假设所有“复权”字段都代表总收益
不可以。这样会排除已经退市或更名的证券并产生幸存者偏差。历史证券范围应根据当时的上市状态和标识有效期构建
它们可能采用不同交易场所、官方收盘价或最后成交价、交易时段、币种、更正时间或复权方法。判断哪一方有误前,应先比较元数据和原始事件
