部署微软开源人工智能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: <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 和工具进行量化研究或模型训练。

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

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

相关推荐
aneasystone本尊2 分钟前
学习 OpenMontage 的工具发现与打分选择器
人工智能
火山引擎开发者社区4 分钟前
Computer Use Agent 新能力上线,开启企业电脑自动化的新范式
人工智能
火山引擎开发者社区6 小时前
VeOps CLI:你的火山引擎可观测排障助手
人工智能
2501_941982058 小时前
企业微信二次开发:私域数据基石——三大核心基础能力接口实战
windows·架构·bootstrap·企业微信
To_OC8 小时前
调用远程MCP,手搓一个能查酒店、自动打开浏览器的 Agent
人工智能·agent·mcp
启雀AI8 小时前
生物医疗行业如何建设合规、安全、可复用的知识库?
人工智能·安全·软件构建·知识图谱·知识库
x-cmd8 小时前
Mac 涨价后,本地 AI 还能千元入门吗?
linux·人工智能·macos·ai·agent·amd·本地ai入门
To_OC8 小时前
跑通第一个 MCP Server 后,我终于搞懂它到底解决了什么问题
人工智能·agent·mcp
楷哥爱开发9 小时前
如何使用 Claude Fable 5 进行网页抓取?2026最新实战教程
大数据·网络·人工智能
YMWM_9 小时前
lerobot中use_relative_actions=True需要重新计算meta/stats.json等信息
人工智能·深度学习·lerobot