ashare-lake

mcp
Security Audit
Warn
Health Pass
  • License — License: MIT
  • Description — Repository has a description
  • Active repo — Last push 0 days ago
  • Community trust — 78 GitHub stars
Code Warn
  • network request — Outbound network request in frontend/src/main.js
Permissions Pass
  • Permissions — No dangerous permissions requested

No AI report is available for this listing yet.

SUMMARY

A股数据湖,覆盖股票行情/期货etf/基本面/资金/结构/宏观/舆情/风控等全套量化数据

README.md

A股数据湖

CI
codecov
PyPI
Ruff
Python 3.10+
License: MIT

English

别再每次重拉、自己拼复权了。 一行命令把能按天自动更新的 A 股研究湖落到本地 Parquet——多源进同一契约,行级可溯源。

  • 真数上手pip installasl demo,几分钟出可复权日线
  • 日更能挂着跑:水位 / 失败重试 / 质量审计;作者自用每天自动跑
  • 研究口径一次定好:复权 · universe · PIT;38 个注册数据集,日线可回溯到约 2001

CLI:asl · 包名:ashare_lake · 只做数据层(回测和信号留给下游)· 可选分钟线(1m / 5m,默认关)

30 秒拿到真数

需要能访问 TDX 行情主机(大陆出口更稳)。5 只流动性股票 × 约 30 个交易日;独立目录,不会变成全市场湖。demo 只落日线——下面表里的其它数据集要走自建湖。

pip install ashare-lake
asl demo
# 可选:asl demo --intraday   # 再看一根完整 1m 会话

asl demo:分阶段拉数并打印样例日线

from ashare_lake.query import load

bars = load("daily_bars", data_root="data/ashare-lake-demo", adjust="hfq")
asl query --config configs/ashare-lake.demo.toml --sql "
  SELECT symbol, trade_date, close, volume, source
  FROM daily_bars
  WHERE symbol = '600519.SH'
  ORDER BY trade_date DESC
  LIMIT 10
"

asl query:带 source 溯源列的日线

TDX 不通时先 asl servers test。也可 asl demo --symbols 600519.SH,000001.SZ --days 10

macOS / Linux / Windows(PowerShell、cmd)命令通用;venv 与调度见 installation / runbook

自建日更湖

首次 asl init 会回填(耗时长、占磁盘);之后日常增量 + 读取。load() 默认读 cwd 下 configs/ashare-lake.tomldata.root

默认不含分钟线。 asl init / asl run daily 只跑日频与基本面等主路径;1m / 5m 需显式开启(见下节)。

pip install ashare-lake
# macOS / Linux:
asl config init --data-root /Users/you/ashare-lake
# Windows:asl config init --data-root D:/ashare-lake
# macOS / Windows 默认 workers=1;Linux 示例模板为 8
asl init          # 建目录 + 首次回填
asl run daily     # 之后每个交易日(不含分钟线)
asl status
from ashare_lake.query import load

bars = load(
    "daily_bars",
    start="2020-01-01", end="2025-12-31",
    adjust="hfq",              # None | "qfq" | "hfq"
    universe="all_a",
)
roe = load("financial_statement_items", items=["roe"], as_of="2024-04-30")

Python load():从本地 curated Parquet 读日线

asl query --sql "
  SELECT symbol, trade_date, adj_close
  FROM daily_bars_adj
  WHERE trade_date >= '2025-01-01'
"

demo 线:data/ashare-lake-demo/ + configs/ashare-lake.demo.toml(查数要带该 --config)。
日更线:asl config init 写出的 configs/ashare-lake.toml。两条线互不覆盖。

无 extras:pip install ashare-lake 装齐运行时数据源。全量回填后建议按 回填验收 再挂调度。

可选:分钟线(1m / 5m)

默认关闭,也不在 asl run daily 里——全市场 1m 约 35MB/日、8.4GB/年。TDX 约只留 95 个交易日的 1m、491 个交易日的 5m;更早窗口为空,无法靠回填拉长。磁盘与耗时见 runbook

configs/ashare-lake.toml 里打开:

[minute_bars]
enabled = true
scope = "index:000300.SH"     # 或 watchlist / all
frequencies = ["1m", "5m"]    # 5m 是唯一有较长历史的频率
# 一次性种子(可续跑;--symbols 可只拉几只、不必改配置)
asl backfill minute_bars_5m --start 2024-08-01 --end 2026-07-31
asl backfill minute_bars --start 2026-05-01 --symbols 600519.SH,000001.SZ

# 日更:单独一组,不要塞进默认 daily
asl run daily --group intraday
from ashare_lake.query import load

m5 = load("minute_bars_5m", start="2026-07-01", symbols=["600519.SH"], adjust="hfq")

架构

ashare-lake 架构:数据源 → ASL Daily Pipeline → staging/curated/derived → load()/DuckDB/Polars

落盘布局(日更湖的 data.root 下):

{data_root}/
  curated/   {dataset}/{partition}=v/part-*.parquet
  derived/   adj_factors/...
  staging/   本次 run 原始落地(compact 后可清理)
  meta/      manifest、quality findings、水位、on-demand 缓存
  duckdb/    ashare-lake.duckdb

有什么数据

下表覆盖注册表全部 38 个数据集(35 curated + 3 derived,与 domain/datasets.py 同步)。
英文名即 load() 的第一个参数;字段见 schema,编排与主源见 catalog

类别 数据集(load() 名 · 中文)
基础参考 instruments 证券主数据 · trading_calendar 交易日历 · trading_status 交易状态(停复牌 / ST)
行情 daily_bars 日线(未复权) · index_bars 指数日线 · minute_bars 1 分钟线(可选) · minute_bars_5m 5 分钟线(可选) · commodity_bars 商品期货主连(可选) · adj_factors 复权因子(派生) · delisting_events 退市事件(派生)
公司事件 corporate_actions 公司行为(除权除息) · announcement_index 公告索引 · earnings_disclosure_schedule 业绩披露预约
基本面 / 估值 financial_statement_items 财务报表科目(PIT) · valuation_metrics 估值指标 · analyst_consensus 分析师一致预期
资金面 fund_flow 个股资金流 · margin_trading 融资融券 · northbound_flows 北向资金流向 · northbound_holdings 北向持股 · dragon_tiger 龙虎榜 · block_trades 大宗交易 · institutional_holdings 机构持股
结构 / 行业 sector_members 板块成分 · index_constituents 指数成分 · industry_members 行业分类成分 · industry_index 行业指数(派生)
宏观 macro_indicators 宏观指标 · market_breadth 市场宽度 · economic_calendar 经济日历(占位,源已下线)
舆情 / 轮动 sentiment_scores 情绪评分 · hot_rank 人气榜 · sector_bars 板块行情 · sector_fund_flow 板块资金流 · news_headlines 新闻标题 · flash_news_wire 7×24 快讯
风险 share_unlock_schedule 解禁日程 · regulatory_events 监管事件

另有 on-demand(不进 curated 主路径):stock_newsresearch_reports 等,见 catalog

定位:与同类差异

AkShare / efinance 解决「怎么拉数」;Tushare 解决「云端宽表」;Qlib / vn.py 解决「研究/交易平台」。
ashare-lake 专做中间层:多源进同一契约,落成可日更、可溯源、可审计的本地 Parquet 湖。详见 comparison

你在意什么 ashare-lake AkShare / efinance Tushare Pro Baostock Qlib / vn.py
本地可续跑的数据底座 湖 + 日更编排(水位 / 重试 / audit) 只拉到内存,编排自管 云端积分,非自建湖 会话拉数,无湖 绑在平台数据子系统里
数据从哪来、能否复查 行级溯源 + 写前 schema 校验 通常无统一契约 平台字段 无湖契约 视模块
多源交叉核验 主源 curated + 备源 snapshot,可 diff,不静默顶替 单次单源调用 单平台 单源 视配置
研究口径是否稳定 load() 契约:复权组合 / universe / PIT as_of 自己拼 自己拼 自己拼 平台口径
源挂了会怎样 fail batch,暴露问题,可按批 retry 看调用方 看平台 看调用方 视模块
能否单独当研究数据底座 (湖 + 日更 + load() 否,还需自建落盘/编排 云端表,非自建湖 否,会话拉数 能,但绑平台

已知限制

  • 幸存者偏差:退市股需 asl delisted backfill + repair;未补齐前收益序列要打折看
  • 海外网络:部分 HTTP / 板块回填依赖大陆出口;行情 demo 需 TDX 可达
  • 日内视野:TDX 约保留 95 个交易日的 1m、491 个交易日的 5m;更早窗口为空——见 catalog
  • 年/月分区(如 index_bars):优先 asl query / load(),避免 hive 分区标签撞真日期——见 lake-layout

更多见 runbook排障legal

项目状态

个人项目:issue / PR 欢迎,响应尽力而为。贡献指南 · 安全策略。文档中文为主;CHANGELOGADR 为英文。

文档

完整索引:docs/README.md。常用入口:安装 · 快速开始 · 数据集目录 · Runbook · CLI

许可

代码 MIT。落盘行情 / 公告仍受上游条款约束;仓库不附带数据湖,也不授予再分发权 legal

Reviews (0)

No results found