CNEquity

中国股票数据基础设施,覆盖行情、研报、资金面、筹码、公告、龙虎榜、ETF/期权、舆情互动、基本面、行业板块、宏观与风险事件等核心数据。42+A股数据集,日更、自托管、MCP 原生,零注册、零 API Token

LLM Mart
14 views 87 listing impressions

快速开始 · 数据集目录 · 研究 Recipes · 接入 AI Agent

CNEquity 开源、免注册、自托管。它不负责给出交易信号,而是把分散在不同来源、不同口径、不同更新节奏的数据,长期保存在自己的机器或服务器上,并且说明每一行从哪里来、何时采到、截至哪一天可用。

为什么要一个数据湖

发出一次 API 请求通常不是最费事的部分。真正困难的是长期保持研究口径一致:

  • 多源一致性:字段、代码体系、更新节奏和可回补范围并不相同;
  • 历史可复现:每次研究都现场拉取,结果会随上游变化而漂移;
  • Universe 完整性:用今天的股票名单回看过去,会自动删掉后来退市的股票;
  • PIT 语义:财报、公告和估值必须按当时实际可获得的日期查询;
  • 复权与交易状态:如果每个研究脚本各自处理,口径很快就会分叉。

幸存者偏差是一个直观例子。下面的实验使用同一个等权买入持有策略和同一段时间,唯一差别是历史股票池里是否保留后来退市的股票。只用今天仍在交易的股票时,2016–2021 年的收益从 5.9% 变成了 12.0%

使用当前股票名单会造成幸存者偏差

那些股票不是收益为零,而是根本没有进入计算。CNEquity 因此把退市股、复权因子、历史成分和 PIT(按当时可获得的信息取数)放在数据层里处理,而不是交给每个下游脚本临时拼接。

与 AkShare、Tushare、Qlib 有什么不同

AkShare 和其它取数工具解决“怎样调用数据源”,Tushare 提供云端数据服务,Qlib / vn.py 更偏研究或交易平台。CNEquity 做的是中间的数据基础设施:把多源数据落成可日更、可复查、可溯源的本地 Parquet 湖。

你在意的能力 CNEquity AkShare / efinance Tushare Pro Baostock Qlib / vn.py
本地可续跑的数据底座 湖 + 日更编排 拉到内存,编排自管 云端积分,非自建湖 会话拉数,无湖 绑在平台数据子系统
历史结果能否复查 行级溯源 + 写前校验 无统一契约 平台字段 无湖契约 视模块
复权 / 历史成分 / PIT 统一在 load() 自己拼接 自己拼接 自己拼接 用平台口径
退市股是否保留 保留(防幸存者偏差) 看调用方 看接口 看接口 看数据源
单一数据源故障 按批失败,可单独重试 调用方处理 平台处理 平台处理 视模块
需要注册 / token 不需要 不需要 需要积分 不需要 视数据源

更完整的逐项比较见项目对比

30 秒试玩

需要 Python 3.10+,无需 token、积分或账号:

pip install cnequity
cne demo

cne demo 默认拉取 5 只股票最近约 30 个交易日的真实数据,写入独立目录 data/cnequity-demo/,不会覆盖正式数据湖。需要能访问 TDX 行情主机;如果连接失败,可以先检查:

cne doctor                 # 环境体检:不需要配置,也不需要网络
cne sources probe --only tdx_protocol --config configs/cnequity.demo.toml

完全无法连接 TDX 时,运行 cne demo --sample,可离线验证安装、Parquet 落盘和查询链路。合成行全部标记为 source=mock,不可用于研究。

能力一览

采集 42 个数据集 · 14 个上游源 · 主备路由 · 批次级重试、断点续跑与水位对账
研究口径 复权(hfq / qfq 查询侧换算)· 历史指数与行业成分 · PIT 财报 · 保留退市股
数据契约 写前 schema 校验 · 行级溯源(source / data_version / fetched_at)· 破坏性变更必须提版本
质量 84 项审计检查 · 跨源比对 · 覆盖缺口与陈旧检测 · 可配置发布门禁
存储 本地 Parquet + DuckDB · 按数据集选择分区粒度 · 原子写 · 不可变代与时间旅行
消费 load() · DuckDB 视图 · Polars · MCP 6 个工具 · 只读运维控制台
运维 日更编排 · launchd / cron 模板 · 源健康探针 · 可移植快照与增量包

全部本地运行,不需要注册、token 或积分

cne demo 分阶段采集真实日线并打印结果

然后在 Python 中读取:

from cnequity.query import load

bars = load("daily_bars", data_root="data/cnequity-demo")
print(bars.tail())

想直接比较原始价格与后复权口径:

cne demo --research --symbols 600519.SH

数据运维页面

建好湖之后,日常要确认的是覆盖有没有跟上、哪里断了、上次审计留下了什么。cne serve 打开只读控制台:

cne serve                 # http://127.0.0.1:8787

cne serve 数据运维页面:湖状态、覆盖热力与行动项

示意截图,图中标有 ILLUSTRATIVE DEMO;完整覆盖热力不是对当前生产湖的声明。

概览页给出健康状态、Fresh / Stale 计数、覆盖热力和行动项。另外三个页面分别看数据集契约与水位、跑批时间线,以及审计 findings、跨源比对和隔离区。控制台不写湖:采集、重试和清理仍走 CLI,页面只显示该复制的命令。非回环地址必须加 --token

能回答哪些问题

研究问题 推荐入口
茅台过去五年复权后涨了多少 load("daily_bars", symbols=[...], adjust="hfq")
茅台 PE 在自身五年历史中的分位数 valuation_metrics + 窗口分位
2018 年财报因子的 IC,且不使用未来数据 load("financial_statement_items", as_of="2018-04-30")
退市股退市前 60 天的价格形态 delisting_events + daily_bars
三年前的沪深 300 成分或申万行业 index_constituents · industry_members
今天的龙虎榜、未来解禁和板块资金流 dragon_tiger · share_unlock_schedule · sector_fund_flow

常用查询:

from cnequity.query import load

From the project's README.

Comments (0)

Sign in to join the conversation.

No comments yet.