当前位置: 首页 > news >正文

部署人工智能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_CNqlib.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: <function ResourceTracker.__del__ at 0x00000267C69C4040>
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 和工具进行量化研究或模型训练。

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

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

http://www.xdnf.cn/news/587233.html

相关文章:

  • 你通俗易懂的理解——线程、多线程与线程池
  • 架构实践中,指标体系如何科学建立?构建指标体系的五层结构模型是什么?不同架构风格下的指标体系有怎样的差异?
  • 腾讯2025年校招笔试真题手撕(二)
  • 欧拉降幂(JAVA)蓝桥杯乘积幂次
  • Windows 平台 TCP 通信开发指南
  • Redisson分布式锁案列和源码解读
  • WebBuilder快速开发平台:企业级开发的未来
  • 语义分割的image
  • linux arm架构下如何搭建内网穿透
  • linux 下 scp 传文件时保留文件夹中的原格式属性
  • vue3+element-plus+pinia完整搭建好看简洁的管理后台
  • 关于Python编程语言的详细介绍,结合其核心特性、应用领域和发展现状,以结构化方式呈现:
  • 邮箱验证码登录流程
  • [每日一题] 3362. 零数组变换 iii
  • MapReduce-Top N程序编写与运行
  • 修改 vue-pdf 源码升级 pdfjs-dist 包, 以解决部分 pdf 文件显示花屏问题
  • 基于大模型的胫腓骨干骨折全周期预测与治疗方案研究报告
  • 五分钟学会如何封装Jsckson工具类
  • OpenCV CUDA 模块图像过滤------创建一个高斯滤波器函数createGaussianFilter()
  • Python中的并发编程
  • Java集合框架与三层架构实战指南:从基础到企业级应用
  • OceanBase 系统表查询与元数据查询完全指南
  • 使用web3工具结合fiscobcos网络部署调用智能合约
  • JAVA:柔性一致性策略 BASE 原则
  • tasklet上下文内存分配触发might_alloc检查及同步回收调用链
  • 【C++】笔试强训 第一天
  • 【学习笔记】机器学习(Machine Learning) | 第七章|神经网络(3)
  • 并发编程之线程安全
  • 云原生安全 SaaS :从基础到实践
  • 驱动钛丝(SMA)的应用(5)汽车腰托气阀常见问题及解决方案