与 AKShare、Tushare 的区别与配合¶
三者经常被放在一起比较,但它们解决的是不同环节的问题:
- AKShare:开源 Python 取数库,调用一次,返回一张 DataFrame。
- Tushare Pro:注册后凭 token 调用的数据 API 服务。
- CNEquity:本地数据湖。它负责把数据采进来并持续维护,研究时从本地读。
所以问题不在于谁替代谁,而在于你的工作缺的是哪一环。下文只比较工作方式,不对另外两家的覆盖范围、价格或授权做静态评分。这些会随版本和条款变化,以对方当前的文档为准。
一张表看工作方式¶
| AKShare | Tushare Pro | CNEquity | |
|---|---|---|---|
| 形态 | Python 库,函数直接返回 DataFrame | 远程 API 服务,Python SDK 调用 | 本地 Parquet 数据湖,附带 CLI、Python / SQL 查询、控制台和 MCP |
| 账号与凭证 | 不需要 | 需要注册并使用 token,接口权限和频次与积分挂钩 | 基础采集不需要;少数补充来源需自备凭证 |
| 数据放在哪 | 不落盘,由调用方自己存 | 不落盘,由调用方自己存 | 落到本地,按数据集、分区和不可变版本管理 |
| 增量与续跑 | 调用方自己实现 | 调用方自己实现 | 内置水位、按批次续跑、失败范围重试 |
| 质量检查 | 调用方自己做 | 由服务方清洗 | 发布前和发布后各有审计,结果可在控制台和 cne check 查看 |
| 研究口径 | 取决于具体接口 | 取决于具体接口 | 原始价与复权因子分存;保留退市股票;财报区分严格 PIT 与事后重建 |
| 溯源 | 无行级记录 | 无行级记录 | 每行带 source、data_version、fetched_at |
| 给 AI agent 用 | 需要自己封装 | 需要自己封装 | cne mcp 提供只读工具,stdio 和 HTTP 都支持 |
| 覆盖面 | 很广:A 股之外还有港美股、基金、宏观、全球市场等 | 广,按积分开放 | 聚焦中国市场:A 股及其基本面、资金面、事件,加国内期货期权,共 55 个数据集 |
什么时候用哪个¶
只是偶尔取一张表,比如今天的龙虎榜、某个宏观指标的最新值,直接用 AKShare 或 Tushare 更轻。为这种需求建一个湖不划算。
同一份历史反复用于多个研究时,取数库的成本会转移到你自己身上:每次重新拉、自己存文件、自己处理中断和缺口、自己记住这份数据是哪天从哪个接口拉的。CNEquity 把这些做成了数据层的职责。
回测怕口径出错时,取数库通常给的是"今天的视角":今天还在交易的股票名单、事后重述过的财报、某种复权后的价格。CNEquity 把这些口径写进查询契约:
- 历史股票池保留已退市标的,避免幸存者偏差。
- 财报按
as_of切片,pit_mode="strict"只返回当时已经披露的数据,见 PIT 示例。 - 原始价和复权因子分开存,复权方式在查询时选,见复权示例。
想让 AI 直接查历史数据时,agent 需要的是一份覆盖范围清楚、口径写在响应里的数据,而不是现场调用的网页接口。cne mcp 先报告湖里有什么,再回答问题,见 MCP 接入。
一起用¶
- CNEquity 没覆盖的品种,比如港美股、公募基金净值、海外宏观,继续用 AKShare 或 Tushare 拉取,再用 DuckDB 和湖里的 Parquet 关联查询。
- 已经有 Tushare 积分的数据,可以作为对照来源,抽查湖里同一字段是否一致。
- 从 AKShare 迁移时,CNEquity 的代码格式是
600519.SH,日期是date类型,成交量单位见字段与单位。
CNEquity 的代价¶
- 要占本地磁盘,也要有地方跑定时任务。 全市场近 3 年主干第一次初始化需要几个小时。
- 公共来源会变。 可达性、历史深度和发布节奏都可能调整,项目会跟进,但不能提供服务方那样的 SLA。
- 只有启用之后才开始积累。 快照类数据(如人气榜、个股资金流、一致预期)无法补回启用之前的历史,见数据集目录。
- 仍处于 0.x 阶段。 升级前请看更新日志。
想先感受一下,用 cne init --profile demo 一分钟建一个只有 5 只股票的小湖,见快速开始。