.. _data: ================================== 数据层:数据框架与使用 ================================== 简介 ============ ``Data Layer`` 提供了用户友好的API来管理和检索数据。它提供了高性能的数据基础设施。 该层专为量化投资设计。例如,用户可以通过 ``Data Layer`` 轻松构建公式化阿尔法因子。更多细节请参阅 `构建公式化阿尔法因子 <../advanced/alpha.html>`_ 。 ``Data Layer`` 的介绍包含以下部分: - 数据准备 - 数据API - 数据加载器 - 数据处理器 - 数据集 - 缓存 - 数据与缓存文件结构 以下是Qlib数据工作流的典型示例: - 用户下载数据并将其转换为Qlib格式(文件后缀为`.bin`)。此步骤通常只将基础数据(如OHLCV)存储在磁盘上 - 基于Qlib表达式引擎创建基础特征(例如"Ref($close, 60) / $close"表示过去60个交易日的收益率)。表达式引擎支持的运算符可查看 `此处 `__。此步骤通常由 `数据加载器 `_ 实现,它是 `数据处理器 `_ 的组成部分 - 如需更复杂的数据处理(如数据标准化),`Data Handler `_ 支持用户自定义处理器(预定义处理器参见 `此处 `__)。这些处理器与表达式引擎中的运算符不同,专为难以通过表达式运算符实现的复杂数据处理方法设计 - 最后,`数据集 `_ 负责从Data Handler处理后的数据中准备模型专用数据集 数据准备 ================ Qlib格式数据 ---------------- We've specially designed a data structure to manage financial data, please refer to the `File storage design section in Qlib paper `_ for detailed information. 此类数据将以`.bin`为文件后缀存储(我们称之为`.bin`文件、`.bin`格式或qlib格式)。`.bin`文件专为金融数据的科学计算设计。 ``Qlib`` 提供两种现成数据集,可通过此 `链接 `__ 获取: ======================== ================= ================ 数据集 美国市场 中国市场 ======================== ================= ================ Alpha360 √ √ Alpha158 √ √ ======================== ================= ================ 此外,``Qlib`` 还提供高频数据集。用户可通过此 `链接 `__ 运行高频数据集示例。 Qlib格式数据集 ------------------- ``Qlib`` 提供了一个现成的 `.bin` 格式数据集,用户可以使用脚本 ``scripts/get_data.py`` 下载中国股票数据集如下。用户也可以使用 numpy 加载 `.bin` 文件来验证数据。 由于价格成交量数据经过了**复权**处理 (`复权价格 `_),它们与实际交易价格看起来不同。因此您可能会发现不同数据源的复权价格存在差异,这是因为不同数据源采用的复权方式可能不同。Qlib 在复权时会将每只股票的首个交易日价格标准化为1。 用户可以利用 `$factor` 获取原始交易价格(例如通过 `$close / $factor` 获取原始收盘价)。 以下是关于 Qlib 价格复权的一些讨论: - https://github.com/microsoft/qlib/issues/991#issuecomment-1075252402 .. code-block:: bash # download 1d python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn # download 1min python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/qlib_cn_1min --region cn --interval 1min 除了中国股票数据外,``Qlib`` 还包含一个美国股票数据集,可通过以下命令下载: .. code-block:: bash python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/us_data --region us After running the above command, users can find china-stock and us-stock data in ``Qlib`` format in the ``~/.qlib/qlib_data/cn_data`` directory and ``~/.qlib/qlib_data/us_data`` directory respectively. ``Qlib`` 还在 ``scripts/data_collector`` 中提供了脚本,帮助用户从互联网爬取最新数据并转换为 qlib 格式。 当使用该数据集初始化 ``Qlib`` 后,用户可以用它构建和评估自己的模型。更多详情请参阅 `初始化 <../start/initialization.html>`_。 日频数据的自动更新 ---------------------------------------- **建议用户先手动更新一次数据(\-\-trading_date 2021-05-25),然后设置为自动更新。** 更多信息请参考:`雅虎收集器 `_ - 每个交易日自动更新数据到 "qlib" 目录(Linux) - 使用 *crontab*:`crontab -e` - 设置定时任务: .. code-block:: bash * * * * 1-5 python