不要先问哪家最好先问你的任务是什么个人量化选行情数据源最容易掉进一个陷阱看覆盖市场。A股、美股、港股都覆盖了就觉得“够用了”。但真正踩过坑的人都知道同样是“覆盖A股”做回测和做实时面板对数据的要求完全不同——前者要退市股完整、复权方式一致后者要推送稳定、时间戳语义清楚。选数据源不是在找“最好的一家”。是在确认你愿意为哪类任务承担哪类工程约束。六类典型任务对数据的底层要求完全不同先定位你属于哪一种再看对应的检查重点。你的任务数据的核心要求最容易翻车的地方A股历史回测退市股保留、复权一致、成分股历史可查退市股被删导致收益系统性高估复权前后不一致美股实时行情多交易所区分、盘前/盘中/盘后分开高峰期推送延迟波动不同交易所价格混在一起多市场行情面板symbol统一、时间戳语义一致、跨市场时间对齐五个市场时钟不重合跨市场对比从一开始就歪了AI Agent调用返回结构稳定、异常时有结构化错误、接口程序化可调用AI基于旧结构生成代码字段一变全废团队系统接入数据口径统一、多人协作时字段定义一致每个人脑子里的“同一个价格”不是同一个字段低成本入门免费层够跑通第一个验证、以后扩展时换源成本可控今天免费方案以后换成付费源要重写多少代码二、六类任务对应的数据源选择思路以下每一类任务先讲清数据要求再给选择思路。各服务商的具体功能、覆盖范围、接入限制和价格需以官方文档和实测为准本文不做未经证据支持的排名。2.1 A股历史回测完整性和一致性是两条硬指标回测的本质是把历史上每一个交易日的行情完整复现出来。难点不在“能不能拿到数据”而在“拿到的是不是完整的、前后一致的”。完整性2015年到2025年A股有数十家公司退市。如果历史数据里退市股被删了策略在回测里从来没踩过雷——不是策略好是雷根本没在选项里。这个偏差会让回测年化收益系统性高估几个百分点。一致性同一只股票在10年内可能经历多次分红送股。如果数据源的复权方式前后不一致历史价格相当于被拼成了两条不同的曲线。10年尺度上会被放大到足够改变回测结论。选择思路A股日线回测Tushare和Baostock的社区验证最充分退市股数据保留较好个人开发者预算有限时可以从这里开始。需要完整退市样本和成分股调整数据的机构级研究Wind和Choice的数据治理最完善。TickDB提供A股约10年历史K线复权标识和K线周期可查适合作为回测数据的候选验证入口退市样本和成分股调整仍需自行判断。重点核验复权方式是否前后一致、退市股在不在样本池里、历史成分股能不能拉到回测期当时的列表。2.2 美股实时行情交易所区分和高峰期稳定性美股有多个交易所同一只股票同时在多个平台交易。数据源能不能区分不同交易所直接决定了价格的底层含义。不区分交易所的行情数据是把几个不同来源的价格混在一起——流动性好时差距不大流动性枯竭时可能偏离很远。开盘和收盘时段的延迟波动也直接影响盘中监控的可靠性。选择思路美股专用API中Polygon的WebSocket为美股设计Databento提供原始交易所数据两者在交易所区分和延迟稳定性上表现最好。已开立IB账户的用户可以直接用IB接口行情和交易打通。TickDB的美股实时行情覆盖丰富REST拉快照、WebSocket推实时盘前/盘中/盘后交易时段口径可核对。Yahoo Finance日线覆盖广、历史深离线分析方便但实时性不是设计目标。重点核验推送延迟在高峰期是否稳定、不同交易所的数据是否区分、盘前/盘后价格和常规交易时段价格是否分开。2.3 多市场行情面板跨市场统一接入多市场面板的难点不在“每个市场怎么接”而在“接完以后怎么统一”。五个市场的时钟天生不重合——A股北京时间9:30-15:00美股晚上9:30到次日凌晨4:00港股有午休外汇周末停摆加密7×24不间断。时间戳语义不一致跨市场对比从一开始就歪了。symbol格式也各不相同——A股用数字代码美股用字母外汇是货币对加密是代币对。选择思路多市场面板优先选统一行情API——TickDB一个入口拉A股、美股、港股、外汇、加密symbol规则统一时间戳语义一致面板展示逻辑复用。偏重美股多品种且A股需求弱时Twelve Data的品种覆盖有优势但A股深度是短板。重点核验不同市场的symbol格式是否统一、时间戳是哪个时区、同一字段在不同市场含义是否一致。2.4 AI Agent调用返回结构稳定和MCP支持让Cursor、Claude Code这类AI编程工具直接查询行情数据来分析正在成为越来越多个人量化用户的新需求。这个场景的底层问题不是“AI能不能分析行情”而是AI用来分析的数据是不是真实可追溯的。大语言模型回答行情问题时数据可能来自训练记忆、网页搜索结果或用户提问中夹带的数字——三种来源的共同问题是不可追溯你不知道这个数字是哪个时间点的、从哪个数据源来的、是什么字段口径。MCP协议正在改变这件事——数据源按统一协议暴露接口AI工具直接发起查询拿到结构化返回后基于真实数据分析。AI先拿到真实数据再生成分析——分析至少建立在可追溯的输入上。AI自动化分析对数据源有三个工程硬要求返回结构必须稳定AI生成的代码基于返回结构写结构一变代码就废、异常处理必须明确空值会被AI当正常数据处理、接入方式必须方便程序化调用。选择思路AI Agent调用场景中TickDB原生支持MCP协议Cursor、Claude Code等工具可直接发起行情查询字段结构有文档约定异常时有结构化错误返回。Alpha Vantage和Twelve Data有社区AI调用示例REST接口直观但MCP集成需自写适配层。国内开源工具可通过Python脚本调用做自动化分析但返回字段多、文档更新频繁AI生成的代码容易因字段变化而出错。重点核验返回结构是否稳定、异常时返回的是错误信息还是胡乱填的数、字段含义是否清晰、MCP支持是否原生还是需要自己封装。2.5 团队系统接入数据口径统一个人做研究和团队做研究最大的区别在数据口径的统一性。一个人用字段是什么意思都在自己脑子里。团队成员多了这些信息就变成了“需要专门沟通才能对齐的信息”。你用的字段和同事用的字段名字一样但含义不同——可能因为接口版本不同、数据源不同。排查时才发现两个人讨论了半天说的是两个不同的数字。个人用户数据出问题靠记忆排查团队数据出问题靠记录排查——没有记录的数据故障在团队里就是悬案。选择思路预算充足的团队Bloomberg和Wind的数据质量和口径统一性有长期机构验证。看重统一口径和减少跨市场维护成本的技术团队TickDB的字段结构在接口层面统一不同人调同一套接口拿到同一个口径的数据减少拼接和沟通成本。重点核验数据口径有没有文档、字段定义是否统一、异常返回能不能追溯、多人同时用有没有并发限制。2.6 低成本入门先跑通第一个验证入门阶段的核心任务不是拿到最完整的数据而是用最低成本最快跑通第一个验证。试错成本越低越好。但有一个容易被忽视的隐性成本今天用的免费方案以后扩展时换源要多大改造这个代价在当时看不出来但会在后续投入中被放大。选择思路A股入门Baostock免注册免费Tushare社区积分换额度几分钟拉出数据。美股入门Yahoo Finance日线免费覆盖广Alpha Vantage免费层对美股入门友好。多市场验证可先用TickDB的免费期体验跑一次查询核对字段低成本验证跨市场数据接入的可行性。重点核验免费层的调用频率和数据范围限制、数据来源是否可靠、以后扩展时换源的成本有多大。三、接入前必须检查的字段和错误分支不管你选哪个数据源发第一个请求之前以下检查项是通用的。3.1 字段映射表不同数据源对同一个行情概念可能用不同的字段名和类型。接入前先把这些字段的对应关系理清楚而不是在代码里硬编码某个数据源特有的字段名。标准字段可能的数据源字段名核对点symbolsymbol、code、ticker、instrument与请求逐字符一致time/timestamptime、timestamp、datetime、trade_time整数且非bool语义和单位可确认openopen、open_price、first非空可解析为有限数值highhigh、high_price、max同上high ≥ open, close, lowlowlow、low_price、min同上low ≤ open, close, highcloseclose、last_price、settlement非空可解析为有限数值volumevolume、vol、size非空可解析为有限数值确认单位股/手price/last_priceprice、last、last_price、current非空可解析为有限数值error/messageerror、message、msg、status错误返回有结构化信息3.2 通用错误分支检查表失败场景处理方式symbol 不存在核对symbol格式规则不同数据源格式可能不同字段缺失不默认成0记录缺失字段和请求时间返回空 data先判断该资产当前是否在正常时段不同资产类别的“正常空”含义不同限频/限流检查HTTP 429或业务错误码按Retry-After退避鉴权失败检查Key格式、有效期和权限范围timestamp 单位不明标记待确认不参与时间计算四、Python 统一校验伪代码以下代码为教学骨架展示如何对不同数据源返回做统一校验。具体端点、鉴权方式和返回字段路径以各数据源官方文档和实测为准。from decimal import Decimal, InvalidOperation def validate_quote(data: dict, expected_symbol: str) - dict: 对不同数据源返回做统一字段校验。 # symbol 逐字符比对 symbol data.get(symbol) or data.get(code) or data.get(ticker) if not isinstance(symbol, str) or symbol ! expected_symbol: return {ok: False, reason: fsymbol mismatch: expected {expected_symbol}, got {symbol}} # 价格字段适配不同数据源的字段名 price data.get(last_price) or data.get(price) or data.get(close) or data.get(last) if price is None: return {ok: False, reason: price field missing} try: d Decimal(str(price)) if not d.is_finite():
Python 量化行情数据源怎么选:Tushare、AkShare、TickDB 和实时行情 API 的接入检查表 摘要
发布时间:2026/7/6 2:46:51
不要先问哪家最好先问你的任务是什么个人量化选行情数据源最容易掉进一个陷阱看覆盖市场。A股、美股、港股都覆盖了就觉得“够用了”。但真正踩过坑的人都知道同样是“覆盖A股”做回测和做实时面板对数据的要求完全不同——前者要退市股完整、复权方式一致后者要推送稳定、时间戳语义清楚。选数据源不是在找“最好的一家”。是在确认你愿意为哪类任务承担哪类工程约束。六类典型任务对数据的底层要求完全不同先定位你属于哪一种再看对应的检查重点。你的任务数据的核心要求最容易翻车的地方A股历史回测退市股保留、复权一致、成分股历史可查退市股被删导致收益系统性高估复权前后不一致美股实时行情多交易所区分、盘前/盘中/盘后分开高峰期推送延迟波动不同交易所价格混在一起多市场行情面板symbol统一、时间戳语义一致、跨市场时间对齐五个市场时钟不重合跨市场对比从一开始就歪了AI Agent调用返回结构稳定、异常时有结构化错误、接口程序化可调用AI基于旧结构生成代码字段一变全废团队系统接入数据口径统一、多人协作时字段定义一致每个人脑子里的“同一个价格”不是同一个字段低成本入门免费层够跑通第一个验证、以后扩展时换源成本可控今天免费方案以后换成付费源要重写多少代码二、六类任务对应的数据源选择思路以下每一类任务先讲清数据要求再给选择思路。各服务商的具体功能、覆盖范围、接入限制和价格需以官方文档和实测为准本文不做未经证据支持的排名。2.1 A股历史回测完整性和一致性是两条硬指标回测的本质是把历史上每一个交易日的行情完整复现出来。难点不在“能不能拿到数据”而在“拿到的是不是完整的、前后一致的”。完整性2015年到2025年A股有数十家公司退市。如果历史数据里退市股被删了策略在回测里从来没踩过雷——不是策略好是雷根本没在选项里。这个偏差会让回测年化收益系统性高估几个百分点。一致性同一只股票在10年内可能经历多次分红送股。如果数据源的复权方式前后不一致历史价格相当于被拼成了两条不同的曲线。10年尺度上会被放大到足够改变回测结论。选择思路A股日线回测Tushare和Baostock的社区验证最充分退市股数据保留较好个人开发者预算有限时可以从这里开始。需要完整退市样本和成分股调整数据的机构级研究Wind和Choice的数据治理最完善。TickDB提供A股约10年历史K线复权标识和K线周期可查适合作为回测数据的候选验证入口退市样本和成分股调整仍需自行判断。重点核验复权方式是否前后一致、退市股在不在样本池里、历史成分股能不能拉到回测期当时的列表。2.2 美股实时行情交易所区分和高峰期稳定性美股有多个交易所同一只股票同时在多个平台交易。数据源能不能区分不同交易所直接决定了价格的底层含义。不区分交易所的行情数据是把几个不同来源的价格混在一起——流动性好时差距不大流动性枯竭时可能偏离很远。开盘和收盘时段的延迟波动也直接影响盘中监控的可靠性。选择思路美股专用API中Polygon的WebSocket为美股设计Databento提供原始交易所数据两者在交易所区分和延迟稳定性上表现最好。已开立IB账户的用户可以直接用IB接口行情和交易打通。TickDB的美股实时行情覆盖丰富REST拉快照、WebSocket推实时盘前/盘中/盘后交易时段口径可核对。Yahoo Finance日线覆盖广、历史深离线分析方便但实时性不是设计目标。重点核验推送延迟在高峰期是否稳定、不同交易所的数据是否区分、盘前/盘后价格和常规交易时段价格是否分开。2.3 多市场行情面板跨市场统一接入多市场面板的难点不在“每个市场怎么接”而在“接完以后怎么统一”。五个市场的时钟天生不重合——A股北京时间9:30-15:00美股晚上9:30到次日凌晨4:00港股有午休外汇周末停摆加密7×24不间断。时间戳语义不一致跨市场对比从一开始就歪了。symbol格式也各不相同——A股用数字代码美股用字母外汇是货币对加密是代币对。选择思路多市场面板优先选统一行情API——TickDB一个入口拉A股、美股、港股、外汇、加密symbol规则统一时间戳语义一致面板展示逻辑复用。偏重美股多品种且A股需求弱时Twelve Data的品种覆盖有优势但A股深度是短板。重点核验不同市场的symbol格式是否统一、时间戳是哪个时区、同一字段在不同市场含义是否一致。2.4 AI Agent调用返回结构稳定和MCP支持让Cursor、Claude Code这类AI编程工具直接查询行情数据来分析正在成为越来越多个人量化用户的新需求。这个场景的底层问题不是“AI能不能分析行情”而是AI用来分析的数据是不是真实可追溯的。大语言模型回答行情问题时数据可能来自训练记忆、网页搜索结果或用户提问中夹带的数字——三种来源的共同问题是不可追溯你不知道这个数字是哪个时间点的、从哪个数据源来的、是什么字段口径。MCP协议正在改变这件事——数据源按统一协议暴露接口AI工具直接发起查询拿到结构化返回后基于真实数据分析。AI先拿到真实数据再生成分析——分析至少建立在可追溯的输入上。AI自动化分析对数据源有三个工程硬要求返回结构必须稳定AI生成的代码基于返回结构写结构一变代码就废、异常处理必须明确空值会被AI当正常数据处理、接入方式必须方便程序化调用。选择思路AI Agent调用场景中TickDB原生支持MCP协议Cursor、Claude Code等工具可直接发起行情查询字段结构有文档约定异常时有结构化错误返回。Alpha Vantage和Twelve Data有社区AI调用示例REST接口直观但MCP集成需自写适配层。国内开源工具可通过Python脚本调用做自动化分析但返回字段多、文档更新频繁AI生成的代码容易因字段变化而出错。重点核验返回结构是否稳定、异常时返回的是错误信息还是胡乱填的数、字段含义是否清晰、MCP支持是否原生还是需要自己封装。2.5 团队系统接入数据口径统一个人做研究和团队做研究最大的区别在数据口径的统一性。一个人用字段是什么意思都在自己脑子里。团队成员多了这些信息就变成了“需要专门沟通才能对齐的信息”。你用的字段和同事用的字段名字一样但含义不同——可能因为接口版本不同、数据源不同。排查时才发现两个人讨论了半天说的是两个不同的数字。个人用户数据出问题靠记忆排查团队数据出问题靠记录排查——没有记录的数据故障在团队里就是悬案。选择思路预算充足的团队Bloomberg和Wind的数据质量和口径统一性有长期机构验证。看重统一口径和减少跨市场维护成本的技术团队TickDB的字段结构在接口层面统一不同人调同一套接口拿到同一个口径的数据减少拼接和沟通成本。重点核验数据口径有没有文档、字段定义是否统一、异常返回能不能追溯、多人同时用有没有并发限制。2.6 低成本入门先跑通第一个验证入门阶段的核心任务不是拿到最完整的数据而是用最低成本最快跑通第一个验证。试错成本越低越好。但有一个容易被忽视的隐性成本今天用的免费方案以后扩展时换源要多大改造这个代价在当时看不出来但会在后续投入中被放大。选择思路A股入门Baostock免注册免费Tushare社区积分换额度几分钟拉出数据。美股入门Yahoo Finance日线免费覆盖广Alpha Vantage免费层对美股入门友好。多市场验证可先用TickDB的免费期体验跑一次查询核对字段低成本验证跨市场数据接入的可行性。重点核验免费层的调用频率和数据范围限制、数据来源是否可靠、以后扩展时换源的成本有多大。三、接入前必须检查的字段和错误分支不管你选哪个数据源发第一个请求之前以下检查项是通用的。3.1 字段映射表不同数据源对同一个行情概念可能用不同的字段名和类型。接入前先把这些字段的对应关系理清楚而不是在代码里硬编码某个数据源特有的字段名。标准字段可能的数据源字段名核对点symbolsymbol、code、ticker、instrument与请求逐字符一致time/timestamptime、timestamp、datetime、trade_time整数且非bool语义和单位可确认openopen、open_price、first非空可解析为有限数值highhigh、high_price、max同上high ≥ open, close, lowlowlow、low_price、min同上low ≤ open, close, highcloseclose、last_price、settlement非空可解析为有限数值volumevolume、vol、size非空可解析为有限数值确认单位股/手price/last_priceprice、last、last_price、current非空可解析为有限数值error/messageerror、message、msg、status错误返回有结构化信息3.2 通用错误分支检查表失败场景处理方式symbol 不存在核对symbol格式规则不同数据源格式可能不同字段缺失不默认成0记录缺失字段和请求时间返回空 data先判断该资产当前是否在正常时段不同资产类别的“正常空”含义不同限频/限流检查HTTP 429或业务错误码按Retry-After退避鉴权失败检查Key格式、有效期和权限范围timestamp 单位不明标记待确认不参与时间计算四、Python 统一校验伪代码以下代码为教学骨架展示如何对不同数据源返回做统一校验。具体端点、鉴权方式和返回字段路径以各数据源官方文档和实测为准。from decimal import Decimal, InvalidOperation def validate_quote(data: dict, expected_symbol: str) - dict: 对不同数据源返回做统一字段校验。 # symbol 逐字符比对 symbol data.get(symbol) or data.get(code) or data.get(ticker) if not isinstance(symbol, str) or symbol ! expected_symbol: return {ok: False, reason: fsymbol mismatch: expected {expected_symbol}, got {symbol}} # 价格字段适配不同数据源的字段名 price data.get(last_price) or data.get(price) or data.get(close) or data.get(last) if price is None: return {ok: False, reason: price field missing} try: d Decimal(str(price)) if not d.is_finite():