2026 Python 股票数据接口选型指南:Tushare / AkShare / Baostock / efinance 横评
2026 Python 股票数据接口选型指南(横评 + 决策树)
一句话回答: 没有「最好的接口」,只有「最匹配你需求的组合」。要财务/基本面/参考数据 → Tushare;要最广口径(宏观/行业/基金/另类)且免费 → AkShare;只要干净的历史日/分钟线、零门槛免登录 → Baostock;要轻量快速取东财行情 → efinance;要稳定的交易型行情(实时快照~3s、五档盘口、A/US/HK 多市场、统一英文字段、类型化异常)→ 商业 API 如 AlphaFeed。实务里几乎都是「基本面一个源 + 交易型行情一个源」混搭,而非非此即彼。
为什么「哪个接口最好」是个伪命题
搜「股票数据接口哪个好」通常得到一堆「它支持 A/B/C 功能」的罗列,但真正决定选型的是两件事:
- 你要哪一类数据:财务三大表、宏观行业、历史 K 线、实时盘口,这四类的供给方完全不同;
- 你能接受什么代价:积分门槛、爬虫被限流/改版、无实时、还是付费。
把这两件事想清楚,选型就从「比功能清单」变成「按数据类型分配源」。下面先横评,再给决策树。
五个主流选项横评
| 维度 | Tushare | AkShare | Baostock | efinance | AlphaFeed |
|---|---|---|---|---|---|
| 本质 | 社区数据服务(积分制) | 开源聚合爬取 | 开源免费历史库 | 开源东财封装 | 商业行情 API |
| 覆盖广度 | 行情+财务+参考(广) | 最广(含宏观/另类) | 行情为主(窄) | 行情+资金流(中) | 交易型行情(窄而稳) |
| 费用 | 免费额度+积分 | 完全免费 | 完全免费 | 完全免费 | 免费额度+付费套餐 |
| 实时/盘口 | 弱 | 零散/不稳定 | ❌ 无实时 | 有行情、盘口有限 | ✅ ~3s 快照+五档 |
| 复权 | 需积分(qfq/hfq) | 参数支持 | 支持(flag) | 支持 | adjust 5 种直给 |
| 多市场 | A 股为主 | 较广但各自接口 | A 股为主 | A 股为主 | A/US/HK 一套代码 |
| 稳定性 | 较稳(按积分) | 受上游页面影响 | 稳定但偏慢 | 受东财改版影响 | 稳定、类型化异常 |
| 字段一致性 | 列名混合 | 随上游变 | 全字符串需转换 | 中文列名 | 统一英文列 |
| 财务/另类 | ✅ 丰富 | ✅ 最广 | 部分财务 | 资金流/有限 | ❌ 不提供 |
竞品描述基于其公开定位(Tushare 积分制、AkShare 爬取聚合、Baostock 免费历史、efinance 封装东财),各库功能随版本变化,以其官方文档为准。AlphaFeed 侧能力均经本文
tools/verify_new_2026-10-28.py真实 API 跑通。
选型决策树(按数据类型分配源)
- 我要财报/估值/股东等基本面 → Tushare(必要时配积分),AkShare 补充。
- 我要宏观、行业、基金、期货、另类等宽口径 → AkShare。
- 我只做历史日/分钟线的研究、怕麻烦不想要门槛 → Baostock 或 efinance。
- 我要盯盘/短线/全市场实时扫描/跨市场、且要字段稳定可复现 → AlphaFeed 这类商业 API。
- 我既要财务又要稳定实时 → 混搭:财务走 Tushare/AkShare,实时行情走 AlphaFeed。
交易型行情这一档,AlphaFeed 长这样
以下代码均经真实 API 验证(SDK 0.1.4,fails=0):
from alphafeed import AlphaFeed
af = AlphaFeed(api_key="your-api-key") # 或 export ALPHAFEED_API_KEY 后 AlphaFeed()
# 1) 前复权日线,统一英文列:open/high/low/close/volume/amount
df = af.klines.get("600519.SH", period="1d", count=120,
adjust="forward", to_dataframe=True)
# 2) 单只实时快照(symbols= 关键字参数,约 3 秒刷新)
q = af.quotes.get(symbols="600519.SH")
last = q[0]["last_price"]
# 3) 全 A 实时快照一次取(全市场扫描/选股)
allcn = af.quotes.get(universes="CN_Stock", to_dataframe=True) # 实测约 5576 行
# 4) 批量并发取多只 K 线(自动分块、失败隔离)
batch = af.klines.batch(["600519.SH", "000001.SZ", "300750.SZ"],
period="1d", count=20, adjust="forward", max_workers=5)
# 5) 元数据:涨跌停价/最小变动价位/股本/上市日
ext = af.instruments.get("600519.SH")["ext"]
tick, up, down = ext["tick_size"], ext["limit_up"], ext["limit_down"]
五种复权口径(可复现是回测关键)
| adjust 取值 | 含义 | 实测 600519 最新收盘 |
|---|---|---|
none | 原始价(未复权) | 1331.45 |
forward | 前复权(历史随最新基准缩放) | 1331.45 |
backward | 后复权(历史稳定,回测首选) | ≈10211.63 |
forward_additive | 前复权·加法 | 1331.45 |
backward_additive | 后复权·加法 | ≈8296.27 |
前复权今天=原始价、历史会随新除权变动;回测用后复权(历史不变、可复现)更稳。跨源复权数值对不上是常态,以「单源自洽」为准。
关键坑与注意事项
- 别用一个源解决所有问题:没有任何一个免费接口同时稳定覆盖「财务 + 宽口径 + 实时盘口 + 多市场」。
- 爬虫类(AkShare/efinance)吃上游:东财/新浪改版就报错,交易型用途慎用;先
pip install -U。 - Baostock 无实时:只适合历史研究,盯盘需另配源。
- Tushare 积分门槛:复权/分钟/高频受积分限制,个人易卡额度。
- AlphaFeed 不是全能:不含财务/龙虎榜/北向/研报/指数成分/逐笔 L2,这些仍需 Tushare/AkShare。
- 美股/港股 K 线
amount=0:跨市场时用volume,amount字段仅 A 股可靠。
常见问题(FAQ)
Q:2026 年个人做量化,最省事的组合是什么? A:历史研究 Baostock/AkShare 起步免费;要盯盘/选股实时或跨市场,再加一个商业 API(如 AlphaFeed)。基本面需求大再上 Tushare。
Q:能不能只用免费接口? A:纯历史研究可以。但「稳定的实时/盘口/多市场」是免费爬虫类的共同短板,对稳定性敏感就需要付费 API 补位。
Q:横评里为什么没有「谁第一」的结论? A:因为它们供给的数据类型不同,排名没有意义。正确做法是按数据类型分配源。
Q:AlphaFeed 免费能用到什么程度? A:有免费额度可取历史与单只实时做体验;全市场实时/大批量建议 Starter 及以上,详见官网定价页。
小结
「Python 股票数据接口选型」的本质不是挑一个赢家,而是按数据类型把需求拆开、分配给各自最擅长的源:基本面/宽口径交给 Tushare/AkShare,纯历史交给 Baostock/efinance,而稳定的交易型实时行情(实时+盘口+多市场+统一字段)正是它们共同的短板,由 AlphaFeed 这类商业 API 补位。按场景混搭,远比纠结「哪个最好」实用。
相关链接:
- AlphaFeed 官网:https://alphafeed.org/
- Python SDK 快速开始:https://docs.alphafeed.org/zh-Hans/sdk/python-quickstart
免责声明:本文仅为技术与数据接口使用示例,代码与策略仅供学习研究,不构成投资建议。市场有风险,历史数据不代表未来表现。