部署微软开源人工智能Qlib量化投资平台

微软开源的人工智能量化投资平台 Qlib 部署及初步使用笔记

一、环境配置

(一)克隆仓库

  1. 打开 GitHub Desktop

  2. 在菜单栏中选择 Repository -> Clone Repository

  3. 输入仓库的 URL:https://github.com/microsoft/qlib.git

  4. 选择本地存储路径,然后点击 Clone

  5. 克隆完成后,点击 Show in Explorer 打开项目文件夹。

https://github.com/microsoft/qlib.git

(二)在 PyCharm 中打开项目

  1. 在项目文件夹内,空白处按住 Shift 键并点击鼠标右键。

  2. 在弹出的菜单中选择 "Open Folder as PyCharm Community Edition Project"

(三)创建虚拟环境

  1. PyCharm 会自动检测并开始引导进行项目虚拟环境的创建过程。

  2. 在弹出的确认对话框中:

    • 确认虚拟环境的存储位置(默认为项目根目录下的 .venv 文件夹)。

    • 选择基础解释器的 Python 版本。

    • 由于项目根目录下没有 requirements.txt 文件,PyCharm 会自动依据项目的 setup.py 文件安装依赖,包括 pyqlibnumpy 等包。

  3. 点击 确定 开始创建虚拟环境并安装依赖。

二、依赖安装及升级

(一)验证安装的依赖包

  1. PyCharm 左侧工具栏中,点击 "终端" 按钮打开内置终端。

  2. 输入以下命令来验证 pyqlibnumpy 是否正确安装:

    复制代码
    pip show pyqlib
    pip show numpy

(二)升级 pip 及构建工具

  1. 输入以下命令来升级虚拟环境中的 pip 和构建工具:

    复制代码
    python -m pip install --upgrade pip setuptools wheel

(三)安装或升级 Cython

  1. 输入以下命令来安装或升级 Cython

    复制代码
    pip install --upgrade cython

验证安装:

复制代码
pip show cython

三、安装额外的依赖库

(一)安装 PyTorch 及其相关库

  1. 输入以下命令来安装最新版的 PyTorch 及其相关库:

    复制代码
    pip3 install --pre torch torchvision torchaudio --index-url https://download.pytorch.org/whl/nightly/cu128

    尽量从PyTorch官方获取安装命令,确保一次成功。

  2. 安装完成后,可以通过以下命令验证 PyTorch 是否正确安装:

    复制代码
    python -c "import torch; print(torch.__version__)"

或者使用完整的验证命令(进入python环境进行验证):

复制代码
import torch  # 导入 PyTorch 库
 
print("PyTorch 版本:", torch.__version__)  # 打印 PyTorch 的版本号
 
# 检查 CUDA 是否可用,并设置设备("cuda:0" 或 "cpu")
device = torch.device("cuda:0" if torch.cuda.is_available() else "cpu")
print("设备:", device)  # 打印当前使用的设备
print("CUDA 可用:", torch.cuda.is_available())  # 打印 CUDA 是否可用
print("cuDNN 已启用:", torch.backends.cudnn.enabled)  # 打印 cuDNN 是否已启用
 
# 打印 PyTorch 支持的 CUDA 和 cuDNN 版本
print("支持的 CUDA 版本:", torch.version.cuda)
print("cuDNN 版本:", torch.backends.cudnn.version())
 
# 创建两个随机张量(默认在 CPU 上)
x = torch.rand(5, 3)
y = torch.rand(5, 3)
 
# 将张量移动到指定设备(CPU 或 GPU)
x = x.to(device)
y = y.to(device)
 
# 对张量进行逐元素相加
z = x + y
 
# 打印结果
print("张量 z 的值:")
print(z)  # 输出张量 z 的内容

验证PyTorch深度学习环境Torch和CUDA还有cuDNN是否正确配置的命令-CSDN博客

(二)安装 CatBoost 和 XGBoost

  1. 输入以下命令来安装 CatBoost 和 XGBoost:

    复制代码
    pip install catboost xgboost
  2. 安装完成后,可以通过以下命令验证 CatBoost 和 XGBoost 是否正确安装:

    复制代码
    pip show catboost
    pip show xgboost

四、数据准备

(一)准备数据

  • PyCharm 的终端中,输入以下命令来下载和准备数据:

    复制代码
    python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn

(二)检查数据健康状况

  • 数据准备完成后,输入以下命令来检查数据的健康状况:

    复制代码
    python scripts/check_data_health.py check_data --qlib_dir ~/.qlib/qlib_data/cn_data

五、安装 Qlib

安装 Qlib

  1. PyCharm 的终端中(确保激活了项目的虚拟环境),输入以下命令开始安装 Qlib:

    复制代码
    python setup.py install
  2. 从下边图片的输出可以看到,安装过程中出现了一些 SetupToolsDeprecationWarning,提示 License classifiers 已被弃用,并建议使用 SPDX 许可证表达式。这些警告不会影响安装过程,可以忽略。

验证安装

  1. 安装完成后,终端会显示安装成功的消息。

  2. 从下边最后的图片输出可以看到,安装过程完成了字节编译和相关文件的安装,表明 Qlib 已成功安装到虚拟环境中。

六、初始化 Qlib

初始化

  1. PyCharm 的终端中,启动 Python 交互环境:

    复制代码
    python
  2. 在 Python 交互环境中,输入以下代码来初始化 Qlib:

    复制代码
    import qlib
    from qlib.constant import REG_CN
    
    qlib.init(provider_uri='~/.qlib/qlib_data/cn_data', region=REG_CN)

七、运行示例

(一)进入示例目录

  1. PyCharm 的终端中,退出上一步中的 Python 交互环境:

    复制代码
    exit()
  2. 切换到 examples 目录:

    复制代码
    cd examples

(二)运行工作流配置

  • 运行 Qlib 的 qrun 命令来执行 LightGBM 的工作流配置:

    复制代码
    qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml

八、结果分析

(一)回测输出及结果分析

backtest loop: 100%|█████████████████████████████████████████████████████████████████████████████████████████████████████| 871/871 [00:04<00:00, 179.74it/s]

61348:MainThread\](2025-05-22 11:37:32,922) INFO - qlib.workflow - \[record_temp.py:515\] - Portfolio analysis record 'port_analysis_1day.pkl' has been saved as the artifact of the Experiment 962284265396741762 'The following are analysis results of benchmark return(1day).' risk mean 0.000477 std 0.012295 annualized_return 0.113561 information_ratio 0.598699 max_drawdown -0.370479 'The following are analysis results of the excess return without cost(1day).' risk mean 0.000530 std 0.005718 annualized_return 0.126029 information_ratio 1.428574 max_drawdown -0.072310 'The following are analysis results of the excess return with cost(1day).' risk mean 0.000339 std 0.005717 annualized_return 0.080654 information_ratio 0.914486 max_drawdown -0.086083 \[61348:MainThread\](2025-05-22 11:37:32,928) INFO - qlib.workflow - \[record_temp.py:540\] - Indicator analysis record 'indicator_analysis_1day.pkl' has been saved as the artifact of the Experiment 962284265396741762 'The following are analysis results of indicators(1day).' value ffr 1.0 pa 0.0 pos 0.0 \[61348:MainThread\](2025-05-22 11:37:33,625) INFO - qlib.timer - \[log.py:127\] - Time cost: 0.000s \| waiting \`async_log\` Done Exception ignored in: \ Traceback (most recent call last): File "F:\\PythonProjects\\qlib\\.venv\\Lib\\site-packages\\joblib\\externals\\loky\\backend\\resource_tracker.py", line 181, in __del__ AttributeError: 'super' object has no attribute '__del__'

回测输出显示了模型预测结果,包括时间序列、标的和得分。生成的指标如 IC 和 ICIR 用于评估模型的有效性和稳定性。回测过程还输出了模型训练的日志,如均方误差等。这些信息表明回测过程正常进行,模型在训练集和验证集上表现良好。

最后的报错是由于 joblib 库中的资源跟踪器在程序结束时尝试清理资源,但遇到了某些不兼容的操作导致的。这个错误通常不会影响回测结果的有效性,可以忽略。

(二)输出的分析结果

  1. 基准回报(benchmark return)

    • 年化回报(annualized_return):11.36%

    • 信息比率(information_ratio):0.60

    • 最大回撤(max_drawdown):-37.05%

  2. 无成本超额回报(excess return without cost)

    • 年化回报:12.60%

    • 信息比率:1.43

    • 最大回撤:-7.23%

  3. 含成本超额回报(excess return with cost)

    • 年化回报:8.07%

    • 信息比率:0.91

    • 最大回撤:-8.61%

  4. 指标分析(indicators)

    • FFR(ffr):1.0

    • PA(pa):0.0

    • POS(pos):0.0

九、总结

通过上述步骤,我们已经成功地在本地部署了 Qlib 项目,并配置好了开发环境。

我们可以使用 Qlib 提供的 API 和工具进行量化研究或模型训练。

如果在后续开发过程中遇到任何问题,可以随时向我提问,我会尽力帮助您解决。

希望这份笔记对您有所帮助!

相关推荐
FnTop10 分钟前
为什么共现矩阵是高维稀疏的
人工智能·线性代数·矩阵
AIGC_ZY30 分钟前
DiT、 U-Net 与自回归模型的优势
人工智能·数据挖掘·回归
这张生成的图像能检测吗30 分钟前
OpenGAN:基于开放数据生成的开放集识别
人工智能·pytorch·深度学习·算法·机器学习·生成对抗网络·聚类
chatshare镜像31 分钟前
GPT-4o 风格提示词案例大全(持续更新 ing...)
人工智能
熵减画眉36 分钟前
科技趋势分析系统(BBC)技术全解
人工智能·python·科技·机器学习·unity·自然语言处理·游戏引擎
LaughingZhu38 分钟前
PH热榜 | 2025-05-24
前端·人工智能·经验分享·搜索引擎·产品运营
群联云防护小杜41 分钟前
动态防御新纪元:AI如何重构DDoS攻防成本格局
人工智能·重构·ddos
广州正荣44 分钟前
百度外链生态的优劣解构与优化策略深度研究
大数据·深度学习·百度
Jamence1 小时前
多模态大语言模型arxiv论文略读(九十四)
论文阅读·人工智能·深度学习·语言模型·论文笔记
赵谨言1 小时前
基于Python技术的面部考勤微信小程序的设计与实现
经验分享·python·毕业设计