Releases: rootSunc/CNEquity
Release list
0.9.0
一处破坏性数据契约变更(cne contract diff contracts/v0.8.1.json contracts/v0.9.0.json 报告 29 breaking / 0 compatible,全部是同一个字段),外加存储保留与质量门禁两项改造。
⚠️ 破坏性:pit_quality 新增 not_applicable
不作 point-in-time 声明的数据集此前会回落到字面量 strict,42 个注册数据集里有 29 个因此公布了最强的 PIT 声明——daily_bars、trade_ticks、trading_calendar 都在内,真正成立的只有 announcement_index。
迁移:无数据变更、不需重采,只是元数据取值。把 pit_quality == "strict" 当作“可用于 PIT 研究”的消费方改读 pit(布尔)或 pit_grade,这两个字段一直是对的;枚举取值的消费方需接受第四个值。取舍见 ADR-0011。
新增
cne clean --keep-revision-generations N(默认 5) — 每次 commit 都复制出一个新的不可变代,而旧代从不回收:实测湖 307 代 / 16 GB,其中adj_factors一家 46 代 9.5 GB。回收 11.2 GB,receipt 全留,current.json指向的那一代永不触碰。ADR-0010[quality].audit_gate— 84 项审计此前无论结果都记success;现在error级 finding 可以让step_audit记成failed,默认shadow:仍然放行,但把严重度分布写进meta/quality/audit_gate.jsonl,便于用实测证据再武装门禁。CNE_SOFT_FAIL_MAX_DAYS(默认 3)让连续多日失败的 soft 组退出 1。ADR-0012scripts/sync_schema_docs.py,CI 设卡 —docs/datasets/schema.md手工维护已漂移,42 个数据集里 11 个完全没有章节。
修复
- 双时态 PIT 列现在真的落盘 —
available_at、source_published_at、observed_at、revision_id在契约里声明,却被validate_dataframe的列投影在写盘前丢掉,任何 PIT 数据集都存不下。顺带:读一个financial_statement_items分区从 0.55 秒降到 0.003 秒,全量从约 19 秒降到约 0.1 秒;revision_id改为 96 位截断 SHA-256(1220 万行碰撞概率约 1e-15)。
移除
ROADMAP.md、CONTRIBUTING.md— 内容分别并入 comparison 与 development/conventions。
pip install cnequity==0.9.0完整条目见 CHANGELOG。
0.8.1
本版本给已有数据集加了一个可选的授权对照源用于交叉仲裁,补了三项审计校验,并修复了一批会影响研究结果和文档可达性的缺陷。
数据契约无变更(cne contract diff 对 0.8.0 为 0 breaking / 0 compatible)。没有 HiThink key 的用户不受 Added 部分任何影响——该源保持惰性,其对照校验静默跳过,见 ADR-0008。
- 新增可选授权对照源:日线、财务报表、估值、板块行情与公司行动均可走授权端点并用于仲裁分歧——只有第三方源支持时才会改写既有值。含 2016–2024 资产负债与现金流回补、ETF 代码走基金端点、以及每日累积估值快照(上游不保留历史)。
- 新增
cne ths-official命令组(backfill/repair-bars/resource-sectors/snapshot),无 key 时报skipped而非失败。 - 审计新增三项校验:资产负债表必须平衡;估值列装的是金额而非比率会被抓出;合规登记册改为对照
curated实际持有的内容核对——当场查出两处真实缺口:bse向daily_bars和trading_status写入却无任何 policy 条目,以及六个已登记源写入了并不路由到它们的数据集。 - 北交所(BSE)登记进
sources/SOURCES.yml。此前它一直在写入数据却不在登记册中,条款完全无法查询;因该站点从本出口返回 403,所有权限字段保持unknown。
519xxx 开放式基金不再被归为场内交易品种。此前 51 前缀把全部 188 个此类代码扫进了可交易 universe,TDX 随之返回 NAV 序列——daily_bars 中 436,533 行有收盘价但成交量与成交额全为零。依赖 all_a universe 的研究结果会因此变化。
其余修复:
- 文档站全部链接此前返回 404。GitHub Pages 路径大小写敏感,13 处链接(含 PyPI 页面展示的
Documentation链接和 mkdocs 自身的site_url)指向了rootsunc.github.io/cnequity而非/CNEquity。 - 从未交易过的证券不再被推断为已退市——无行情历史此前与"曾交易后停止"无法区分。
- Windows 上四个配置测试无法解析 TOML(裸
Path在D:\a\…下变成非法转义)。 .git-blame-ignore-revs指向了历史重写前的旧 commit id,在 GitHub 上完全失效。
完整变更见 CHANGELOG。
0.8.0
本版本把研究契约、7x24 事件作业和发布门禁收成可验证的发布物,并修了一批会把失败报成成功的采集与调度缺陷。
- 新增
cne run events(独立锁与日历轴)、机器可读数据集契约、pit_mode查询、版本化 universe profile、可移植 snapshot / delta,以及 source policy / SLO / stability 门禁。 - 控制台改成与 CLI / manifest 同一套 success / degraded / failed 用语;Python 3.14 进入测试矩阵。
- 价格与融资融券交叉校验改为对照交易所原文;
regulatory_events从已索引公告派生,不再对 CNINFO 再抓一遍。 trading_status把交易状态和risk_warning拆开;停牌推导经 staging → compact 发布。- CNINFO 密日可完整读完、增量窗口按日隔离,失败切片不再把整次 backfill 标成 success。
cne sources 现在是命令组,探测改为 cne sources probe;run 级 warning 变为 degraded 且退出码为 2;部分一次性 CLI 迁到 scripts/,cne servers test 在 0.8.x 保留为兼容别名。
完整变更见 CHANGELOG。
0.7.3
本版本聚焦研究范围语义、数据源韧性与可恢复性:
- 新增
cne query --refresh、显式all_a_sh_szuniverse、按研究范围计算的质量/健康检查,以及限定范围的公司行动修复。 - 补充北京市场 ST 历史证据和日线 tip 换手率。
- 统一全湖多源数据优先级;日线 failover 现在可限定范围、续跑并保留部分成功结果。
- 修复 EastMoney 在 httpx 0.28+ 下丢失查询参数、
cne retry使用错误交易日、畸形 failover 配置未被拒绝,以及 Windows Baostock 超时失效等问题。 - 上游请求、payload 校验、历史日历、公司行动、复权因子、PIT 基本面和回补恢复均进一步收紧,避免静默写入或报告不完整数据。
- 质量与查询扫描改为有界或流式执行,减少全湖扫描和重复请求。
UniverseCoverageError;不支持的 universe 名称会抛出 ValueError,不再静默返回未过滤或空结果。
完整变更见 CHANGELOG。
0.7.2
0.7.1
0.7.0 — CNEquity
重命名:ashare-lake → CNEquity
ashare 与同领域已有项目(如 mpquant/Ashare、AKShare)存在名称冲突,而且在搜索 “A股 数据湖” / “A-share data lake” 时不容易被发现。因此,本次版本对项目名称、包名、CLI、配置文件和默认数据目录进行了统一重命名:
| 原名称 | 新名称 | |
|---|---|---|
| PyPI 包 | ashare-lake |
cnequity |
| Python 导入 | from ashare_lake... |
from cnequity... |
| CLI | asl |
cne |
| 默认配置文件 | ashare-lake.toml |
cnequity.toml |
| 默认数据目录 | data/ashare-lake/ |
data/cnequity/ |
pip install ashare-lake 仍然可以安装最后一个可用版本(0.6.1),但该版本现在仅作为过渡版本指向新项目,后续将不再更新。
⚠️ 这是一次破坏性变更
现有用户需要重新安装新包:
pip uninstall ashare-lake
pip install cnequity0.6.0
ASL · ashare-lake 0.6.0
本地可日更的 A 股研究湖:多源进同一契约,落盘为带行级溯源的 curated Parquet;人用 DuckDB / Polars / load(),AI agent 走 MCP。已发布 PyPI。
pip install -U ashare-lake
asl demo
# 可选:接给 Claude Code
# claude mcp add ashare-lake -- asl mcp --config "$(pwd)/configs/ashare-lake.demo.toml"
asl doctorHighlights
- 修好
northbound_flows:此前读的是上证指数主力/小单净流入,不是沪深港通;现改为RPT_MUTUAL_DEAL_HISTORY,并补齐 2014-11-17 → 2024-08-16 历史。旧分区是错的,需删分区与 watermark 后asl backfill northbound_flows - 申万 TLS /
industry_members:打包 DigiCert 中间证书,asl sources --only sw从 0/5 → 5/5 - EastMoney 客户端回到纯
httpx:海外只用[sources.eastmoney].proxy;移除push2hissticky CDN / JA3 /asl push2his * - 日更与慢接口:
core调度槽扩到 60 分钟;share_unlock_schedule、commodity_bars不再整跑失败或空转耗时 - 文档站 + 发版自动化:GitHub Pages / Recipes;tag 触发 Trusted Publishing
Breaking / action required
- 已有
northbound_flows数据必须重建(见上) - 移除
asl push2his remember/asl push2his probe;配置里未使用的[sources.eastmoney].batch_size/.batch_rest_seconds可删
Full changelog: CHANGELOG.md
0.5.0
ASL · ashare-lake 0.5.0
本地可日更的 A 股研究湖:多源进同一契约,落盘为带行级溯源的 curated Parquet;人用 DuckDB / Polars / load(),AI agent 走 MCP。已发布 PyPI。
pip install -U ashare-lake
asl demo
# 可选:接给 Claude Code
# claude mcp add ashare-lake -- asl mcp --config "$(pwd)/configs/ashare-lake.demo.toml"
asl doctor从 0.4.x 升级无需再跑 volume v2 迁移(那是 0.3 → 0.4 的事)。代码许可改为 Apache-2.0;落盘行情仍受上游条款约束。
Highlights
asl mcp:把湖接给 AI agent(6 个工具,口径写在响应里);--live可在无湖时现拉符号与未复权日线asl sources:14 个上游主机健康度;探测在 CLI,展示在asl serve /source-healthasl init --profile quick:更浅、不更窄——最近 3 年全市场回填,避免把幸存者偏差建进湖里trade_ticks:可选分笔(Level-1 3 秒快照聚合,非逐笔);默认关闭- 协议 Apache-2.0 + README 品牌化为 ASL · ashare-lake
Full changelog: CHANGELOG.md
0.4.0
A股数据湖 0.4.0
自托管 A 股研究数据湖:日线 / 复权 / 基本面 / 资金面 / 行业结构 / 宏观舆情等到同一契约,日更编排落盘为带行级溯源的 curated Parquet。已发布 PyPI。
pip install -U ashare-lake
asl demo
# 可选分钟线试玩:
# asl demo --intraday
asl doctorHighlights
- 可选分钟线:
minute_bars(1m)/minute_bars_5m(5m,唯一有较长历史);默认关闭,用asl run daily --group intraday或asl backfill - 去掉 AkShare:PMI / M2 直连东财,社融直连央行(
pboc);卸掉孤儿包akshare mini-racer py-mini-racer daily_bars.volume一律股(data_version = v2):已有湖需跑scripts/migrate_daily_bars_volume_v2.py- 发布方交叉核验:PMI↔统计局、ST↔交易所;宏观 freshness / revision 检查
- 宏观自愈:下次
macro_indicators重写错误的m2_yoy并回填社融
Upgrading from 0.3.x
见 CHANGELOG — Upgrading from 0.3.x。
Full changelog: CHANGELOG.md