Skip to content

Releases: rootSunc/CNEquity

0.9.0

Choose a tag to compare

@rootSunc rootSunc released this 13 Sep 19:25

一处破坏性数据契约变更(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_barstrade_tickstrading_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-0012
  • scripts/sync_schema_docs.py,CI 设卡docs/datasets/schema.md 手工维护已漂移,42 个数据集里 11 个完全没有章节。

修复

  • 双时态 PIT 列现在真的落盘available_atsource_published_atobserved_atrevision_id 在契约里声明,却被 validate_dataframe 的列投影在写盘前丢掉,任何 PIT 数据集都存不下。顺带:读一个 financial_statement_items 分区从 0.55 秒降到 0.003 秒,全量从约 19 秒降到约 0.1 秒;revision_id 改为 96 位截断 SHA-256(1220 万行碰撞概率约 1e-15)。

移除

pip install cnequity==0.9.0

完整条目见 CHANGELOG

0.8.1

Choose a tag to compare

@rootSunc rootSunc released this 12 Sep 21:51

本版本给已有数据集加了一个可选的授权对照源用于交叉仲裁,补了三项审计校验,并修复了一批会影响研究结果和文档可达性的缺陷。

数据契约无变更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 实际持有的内容核对——当场查出两处真实缺口bsedaily_barstrading_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(裸 PathD:\a\… 下变成非法转义)。
  • .git-blame-ignore-revs 指向了历史重写前的旧 commit id,在 GitHub 上完全失效。

完整变更见 CHANGELOG

0.8.0

Choose a tag to compare

@rootSunc rootSunc released this 05 Sep 21:33

本版本把研究契约、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

Choose a tag to compare

@rootSunc rootSunc released this 23 Aug 00:10

本版本聚焦研究范围语义、数据源韧性与可恢复性:

  • 新增 cne query --refresh、显式 all_a_sh_sz universe、按研究范围计算的质量/健康检查,以及限定范围的公司行动修复。
  • 补充北京市场 ST 历史证据和日线 tip 换手率。
  • 统一全湖多源数据优先级;日线 failover 现在可限定范围、续跑并保留部分成功结果。
  • 修复 EastMoney 在 httpx 0.28+ 下丢失查询参数、cne retry 使用错误交易日、畸形 failover 配置未被拒绝,以及 Windows Baostock 超时失效等问题。
  • 上游请求、payload 校验、历史日历、公司行动、复权因子、PIT 基本面和回补恢复均进一步收紧,避免静默写入或报告不完整数据。
  • 质量与查询扫描改为有界或流式执行,减少全湖扫描和重复请求。

⚠️ 行为变化:严格 universe 查询在无法证明覆盖时会抛出 UniverseCoverageError;不支持的 universe 名称会抛出 ValueError,不再静默返回未过滤或空结果。

完整变更见 CHANGELOG

0.7.2

Choose a tag to compare

@rootSunc rootSunc released this 17 Aug 09:01

本版本聚焦覆盖率、水位与查询语义的正确性:

  • 数据源对截断、畸形或不完整响应失败即停,避免把坏快照写入湖中。
  • 水位与 freshness 按覆盖缺口判定,不再被最新文件或稀疏 tip 推过缺口。
  • 退市股回补可按已落地标的续跑;ST 覆盖在全量数据扩大时可继承兼容 checkpoint。
  • 无成交占位行不再进入派生数据集、质量审计和查询结果。
  • CLI 回补进度与退出码与实际落盘一致。

0.7.1

Choose a tag to compare

@rootSunc rootSunc released this 16 Aug 17:25

本版本聚焦数据获取稳定性与数据质量加固:

  • 重构 TDX 限速机制,增加锁等待超时并降低并发争用,避免初始化阶段长时间无响应。
  • corporate_actions 支持分块回补与失败分块重试,降低单个标的失败造成的数据缺口。
  • 强化多数据源响应校验、去重、时间窗口约束,以及分区读取、派生计算和质量审计。
  • 改进日线数据处理,对停牌或异常标的进行更稳健的容错。

0.7.0 — CNEquity

Choose a tag to compare

@rootSunc rootSunc released this 15 Aug 12:08
2bf9059

重命名: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 cnequity

0.6.0

Choose a tag to compare

@rootSunc rootSunc released this 10 Aug 06:16

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 doctor

Highlights

  • 修好 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;移除 push2his sticky CDN / JA3 / asl push2his *
  • 日更与慢接口core 调度槽扩到 60 分钟;share_unlock_schedulecommodity_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

Choose a tag to compare

@rootSunc rootSunc released this 02 Aug 22:45

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-health
  • asl init --profile quick:更浅、不更窄——最近 3 年全市场回填,避免把幸存者偏差建进湖里
  • trade_ticks:可选分笔(Level-1 3 秒快照聚合,非逐笔);默认关闭
  • 协议 Apache-2.0 + README 品牌化为 ASL · ashare-lake

Full changelog: CHANGELOG.md

0.4.0

Choose a tag to compare

@rootSunc rootSunc released this 01 Aug 21:14

A股数据湖 0.4.0

自托管 A 股研究数据湖:日线 / 复权 / 基本面 / 资金面 / 行业结构 / 宏观舆情等到同一契约,日更编排落盘为带行级溯源的 curated Parquet。已发布 PyPI

pip install -U ashare-lake
asl demo
# 可选分钟线试玩:
# asl demo --intraday
asl doctor

Highlights

  • 可选分钟线minute_bars(1m)/ minute_bars_5m(5m,唯一有较长历史);默认关闭,用 asl run daily --group intradayasl 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