Qlib 如何下载社区众包数据集(crowd source data)并解压到 qlib_data?
【免费下载链接】qlibQlib is an AI-oriented Quant investment platform that aims to use AI tech to empower Quant Research, from exploring ideas to implementing productions. Qlib supports diverse ML modeling paradigms, including supervised learning, market dynamics modeling, and RL, and is now equipped with https://github.com/microsoft/RD-Agent to automate R&D process.项目地址: https://gitcode.com/GitHub_Trending/qli/qlib
Qlib 官方数据集目前处于临时停用状态:README.md 中明确写着 "Due to more restrict data security policy. The official dataset is disabled temporarily",并推荐改用社区贡献的数据源。这篇文章解决一个具体任务:把社区众包数据集(crowd source data)下载为 qlib bin 格式压缩包,解压到~/.qlib/qlib_data/cn_data,然后用qlib.init确认数据可以被正常读取。
社区众包数据的定位在 scripts/data_collector/crowd_source/README.md 中说明:它合并多个数据来源并互相交叉验证,目的是获得更完整的历史记录(减少退市股票缺失带来的 survivorship bias),并在必要时识别、纠正异常数据。原始数据托管在 dolthub,处理脚本和 SQL 托管在独立仓库,数据每日更新。
主路径:下载 qlib_bin.tar.gz 并解压
前提:系统已安装wget和tar,能访问网络。执行以下命令(来自 README.md 的 Data Preparation 一节):
wget https://github.com/chenditc/investment_data/releases/latest/download/qlib_bin.tar.gz mkdir -p ~/.qlib/qlib_data/cn_data tar -zxvf qlib_bin.tar.gz -C ~/.qlib/qlib_data/cn_data --strip-components=1- 第一条命令下载最新的 qlib bin 格式数据压缩包;
releases/latest始终指向最新版本。 mkdir -p确保目标目录存在,目录不存在时自动创建。tar -zxvf ... -C ~/.qlib/qlib_data/cn_data把压缩包解压到指定目录。
解压完成后,~/.qlib/qlib_data/cn_data下应该出现 qlib 数据目录(如features/等)。最后一条命令rm -f qlib_bin.tar.gz会删除已下载并解压完毕的压缩包文件,属于可选的清理动作,确认数据正常前不建议先执行。
需要注意一处文档间差异:scripts/data_collector/crowd_source/README.md 给出的命令是tar -zxvf qlib_bin.tar.gz -C ~/.qlib/qlib_data/cn_data --strip-components=2,与根 README 的--strip-components=1不同,且未包含mkdir -p。两者的适用取决于压缩包内部目录层级,两份文档未给出进一步说明。如果按其中一种方式解压后发现cn_data下多嵌套了一层目录或文件层级不对,对照另一种strip-components值重新解压即可。
可选分支:用 docker 从 dolthub 生成当日数据
dolthub 上的原始数据每日更新。如果需要当天最新数据而不是 release 包里预打好的 bin 数据,scripts/data_collector/crowd_source/README.md 给出 docker 方式:
docker run -v /<some output directory>:/output -it --rm chenditc/investment_data bash dump_qlib_bin.sh && cp ./qlib_bin.tar.gz /output//<some output directory>是占位符,替换为你机器上一个真实存在的本地目录,容器会把生成结果拷贝到该目录。--rm表示容器退出后自动删除该容器,属于正常的一次性运行行为;该命令只读取镜像内数据并产出压缩包,不修改宿主机其他内容。- 生成的
qlib_bin.tar.gz仍需用与主路径相同的tar命令解压到~/.qlib/qlib_data/cn_data。
结果验证:用 qlib.init 读取数据
数据解压到位后,按 scripts/README.md 的 "Using in Qlib / CN data" 一节验证。在一个 Python 环境中执行:
import qlib from qlib.constant import REG_CN provider_uri = "~/.qlib/qlib_data/cn_data" # target_dir qlib.init(provider_uri=provider_uri, region=REG_CN)两个注意事项,均来自 docs/start/initialization.rst:
- 不要在 Qlib 仓库目录内
import qlib,否则可能报错。 region要与provider_uri中存放的数据一致,社区众包数据对应 A 股,使用REG_CN。
初始化成功后,按 docs/start/getdata.rst 的示例读取交易日历和行情,确认数据真正可读:
from qlib.data import D D.calendar(start_time='2010-01-01', end_time='2017-12-31', freq='day')[:2]文档示例输出为:
[Timestamp('2010-01-04 00:00:00'), Timestamp('2010-01-05 00:00:00')](以上为源文档中的示例输出,不同数据集的具体数值会不同。)进一步可以用D.features读取个股 OHLCV,例如D.features(['SH600000'], ['$close', '$volume', ...]),能返回带instrument、datetime索引的 DataFrame 即说明数据链路完整。
用 check_data_health.py 检查数据质量
仓库提供了 scripts/check_data_health.py,可以对已解压的 qlib 数据集做完整性与正确性检查。它把数据转成 DataFrame 后检查:
open、high、low、close、volume列是否缺失;- 是否存在缺失数据;
- OHLCV 列的阶跃变化是否超过阈值(价格默认 0.5,成交量默认 3);
factor列是否缺失;<qlib_dir>/features下的子目录是否都是小写命名。最后一项针对大小写敏感文件系统(如 Linux):qlib 内部用 lowercase 的标的名称构造 feature 路径,features/下的大写目录名会导致数据加载失败。
脚本通过fire暴露命令行,按qlib_dir参数指向解压目录执行即可,例如:
python scripts/check_data_health.py --qlib_dir ~/.qlib/qlib_data/cn_data各检查通过时脚本会打印类似There are no missing data.的日志;发现问题时会输出对应标的和列的问题表格(如non_lowercase_dir列列出需要手动改名为小写的目录)。
限制说明
- 官方数据集目前仍是停用状态,
scripts/get_data.py qlib_data的常规下载路径不能替代社区众包数据;后续官方数据恢复后,README.md 中的说明会随之更新。 - 社区众包数据是社区贡献来源,仓库文档没有对其字段覆盖范围做与官方数据的逐项对照承诺;对数据质量有严格要求的场景,先用
check_data_health.py跑一遍再进入建模。 - 解压目标固定为
~/.qlib/qlib_data/cn_data时,provider_uri保持同一路径即可与 docs/start/initialization.rst 中的初始化示例完全对齐。
完成验证后,数据即可用于后续的特征加载与建模,入口参见 docs/start/getdata.rst 中的D.features用法示例。
【免费下载链接】qlibQlib is an AI-oriented Quant investment platform that aims to use AI tech to empower Quant Research, from exploring ideas to implementing productions. Qlib supports diverse ML modeling paradigms, including supervised learning, market dynamics modeling, and RL, and is now equipped with https://github.com/microsoft/RD-Agent to automate R&D process.项目地址: https://gitcode.com/GitHub_Trending/qli/qlib
创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考