← 返回主题列表
Q
QianXun
@QianXun · 2026年02月18日 07:32 · 11浏览

量化交易 RD-Agent/Qlib 实战指南

量化交易 RD-Agent/Qlib 实战指南

前言

在人工智能快速发展的今天,量化投资领域正经历着一场深刻的变革。微软研究院开源的 QlibRD-Agent 两大项目,为量化交易提供了从数据处理到策略自动演化的完整解决方案。

  • Qlib: AI 驱动的量化投资平台,37.5k+ Stars
  • RD-Agent: LLM 驱动的 R&D 自动化框架,11.2k+ Stars,NeurIPS 2025 论文
本文将深入剖析这两个项目,从架构设计到实战应用,助你掌握 AI 量化交易的完整技术栈。

---

第一章:项目概览与核心价值

1.1 Qlib - AI 量化投资全流程平台

Qlib 是微软开源的 AI 面向量化投资平台,旨在将 AI 技术从研究探索延伸到生产部署的完整生命周期。

┌─────────────────────────────────────────────────────────────────┐
│                        Qlib 平台架构                             │
├─────────────────────────────────────────────────────────────────┤
│  📊 数据层     │  🤖 模型层      │  📈 策略层     │  📋 分析层   │
│  ─────────────  │  ─────────────  │  ─────────────  │  ────────   │
│  高性能数据存储  │  20+ 预置模型   │  组合优化      │  信号分析    │
│  Alpha158/360  │  GBDT/DL/RL     │  回测引擎      │  风险评估    │
│  中/美市场支持  │  AutoML支持     │  执行模拟      │  报告生成    │
└─────────────────────────────────────────────────────────────────┘

核心特性

特性说明
全流程 ML Pipeline数据处理 → 模型训练 → 回测分析
多学习范式监督学习、强化学习、元学习
高性能数据引擎自研 .bin 格式,优化金融数据访问
丰富模型库LightGBM、LSTM、Transformer 等 20+ 模型
RD-Agent 集成LLM 驱动的自动化因子挖掘

1.2 RD-Agent - LLM 驱动的研发自动化

RD-Agent 是一个将 LLM 应用于数据科学研发自动化的框架,其量化金融版本 RD-Agent(Q) 是首个实现因子-模型联合优化的多智能体系统。

┌──────────────────────────────────────────────────────────────────┐
│                    RD-Agent(Q) 核心能力                           │
├──────────────────────────────────────────────────────────────────┤
│  🔬 研究 (Research)              │  🛠️ 开发 (Development)         │
│  ────────────────                │  ──────────────────           │
│  • 读取研报/论文                  │  • 代码实现 (Co-STEER)         │
│  • 提取关键公式                   │  • 因子/模型开发               │
│  • 生成创新假设                   │  • 自动化回测                  │
│  • 知识森林构建                   │  • 反馈分析迭代                │
└──────────────────────────────────────────────────────────────────┘

量化应用场景

场景命令说明
💰 自动量化工厂rdagent fin_quant因子-模型联合演化
📊 因子演化rdagent fin_factor仅优化因子库
🤖 模型演化rdagent fin_model仅优化模型结构
📄 研报因子提取rdagent fin_factor_report从研报提取因子
🏆 Kaggle 竞赛rdagent data_science自动特征工程

1.3 两者关系与集成

                    ┌─────────────────┐
                    │   RD-Agent      │
                    │  (大脑: LLM)    │
                    └────────┬────────┘
                             │ 生成因子/模型代码
                             ▼
┌────────────────────────────────────────────────────────────┐
│                         Qlib 平台                           │
├─────────────┬─────────────┬─────────────┬──────────────────┤
│  数据服务   │  模型训练   │  回测引擎   │  策略执行        │
│  (CSI 300)  │  (LightGBM) │  (TopkDrop) │  (模拟器)        │
└─────────────┴─────────────┴─────────────┴──────────────────┘
                             │
                             ▼
                    ┌─────────────────┐
                    │   性能指标反馈   │
                    │ IC/ARR/MDD/IR   │
                    └─────────────────┘

---

第二章:Qlib 深度解析

2.1 架构设计

Qlib 采用分层模块化架构,各层松耦合,可独立扩展:

┌─────────────────────────────────────────────────────────────────┐
│                      接口层 (Interface)                          │
│  ┌─────────────┐  ┌─────────────┐  ┌─────────────────────────┐  │
│  │  分析器     │  │  可视化     │  │  实验管理 (Recorder)    │  │
│  └─────────────┘  └─────────────┘  └─────────────────────────┘  │
├─────────────────────────────────────────────────────────────────┤
│                      工作流层 (Workflow)                         │
│  ┌───────────┐ ┌───────────┐ ┌───────────┐ ┌───────────────┐   │
│  │ 信息提取  │ │ 预测模型  │ │ 决策生成  │ │ 执行环境      │   │
│  └───────────┘ └───────────┘ └───────────┘ └───────────────┘   │
├─────────────────────────────────────────────────────────────────┤
│                    学习框架层 (Learning Framework)               │
│  ┌───────────────────┐          ┌───────────────────────────┐   │
│  │   预测模型        │          │    交易智能体 (RL)        │   │
│  │   (Supervised)    │          │    (Reinforcement)        │   │
│  └───────────────────┘          └───────────────────────────┘   │
├─────────────────────────────────────────────────────────────────┤
│                     基础设施层 (Infrastructure)                   │
│  ┌───────────────────────┐      ┌───────────────────────────┐   │
│  │   Data Server         │      │      Trainer              │   │
│  │   (高性能数据服务)     │      │   (分布式训练)            │   │
│  └───────────────────────┘      └───────────────────────────┘   │
└─────────────────────────────────────────────────────────────────┘

2.2 数据系统

#### 2.2.1 数据格式

Qlib 使用自研的二进制格式存储金融数据,针对时序数据访问进行了深度优化:

~/.qlib/qlib_data/cn_data/
├── calendars/          # 交易日历
│   └── day.txt
├── instruments/        # 股票池定义
│   └── csi300.txt
├── features/           # 特征数据 (.bin 格式)
│   └── sh600000/
│       ├── close.day.bin
│       ├── open.day.bin
│       ├── high.day.bin
│       ├── low.day.bin
│       ├── volume.day.bin
│       └── factor.day.bin  # 复权因子
└── financial/          # 财务数据

#### 2.2.2 数据下载

# 下载 A 股数据 (1 天频率)
python scripts/get_data.py qlib_data \
    --target_dir ~/.qlib/qlib_data/cn_data \
    --region cn

# 下载美股数据
python scripts/get_data.py qlib_data \
    --target_dir ~/.qlib/qlib_data/us_data \
    --region us

#### 2.2.3 特征工程:Alpha158/Alpha360

Qlib 内置两大特征集:

特征集维度说明
Alpha158158 维经典技术因子,适合日频策略
Alpha360360 维扩展技术因子,更丰富的时序特征
from qlib.contrib.data.handler import Alpha158

data_handler_config = {
    "start_time": "2008-01-01",
    "end_time": "2020-08-01",
    "fit_start_time": "2008-01-01",
    "fit_end_time": "2014-12-31",
    "instruments": "csi300",
}

handler = Alpha158(**data_handler_config)
features = handler.fetch(col_set="feature")  # 获取特征
labels = handler.fetch(col_set="label")       # 获取标签

2.3 模型库

Qlib 内置 20+ 量化模型,覆盖传统机器学习和深度学习:

#### 2.3.1 梯度提升模型

模型框架说明
LightGBMLightGBM默认推荐,速度快
XGBoostXGBoost经典 GBDT
CatBoostCatBoost类别特征友好
DoubleEnsembleLightGBMICDM 2020,动态加权
#### 2.3.2 深度学习模型

模型类型论文
LSTMRNNNeural Computation 1997
GRURNN2014
ALSTMAttention LSTMIJCAI 2017
GATs图注意力2017
Transformer注意力NeurIPS 2017
TCN时序卷积2018
TFT时序融合Int. Journal of Forecasting 2019
TabNet表格网络AAAI 2019
HIST超图网络2021
TRA时序关系注意力KDD 2021
#### 2.3.3 模型训练示例

import qlib
from qlib.contrib.model.gbdt import LGBModel
from qlib.contrib.data.handler import Alpha158
from qlib.data.dataset import DatasetH
from qlib.workflow import R
from qlib.utils import init_instance_by_config, flatten_dict

# 初始化 Qlib
qlib.init(provider_uri='~/.qlib/qlib_data/cn_data', region='cn')

# 任务配置
task = {
    "model": {
        "class": "LGBModel",
        "module_path": "qlib.contrib.model.gbdt",
        "kwargs": {
            "loss": "mse",
            "learning_rate": 0.0421,
            "max_depth": 8,
            "num_leaves": 210,
            "colsample_bytree": 0.8879,
            "subsample": 0.8789,
            "lambda_l1": 205.6999,
            "lambda_l2": 580.9768,
        },
    },
    "dataset": {
        "class": "DatasetH",
        "module_path": "qlib.data.dataset",
        "kwargs": {
            "handler": {
                "class": "Alpha158",
                "module_path": "qlib.contrib.data.handler",
                "kwargs": {
                    "start_time": "2008-01-01",
                    "end_time": "2020-08-01",
                    "fit_start_time": "2008-01-01",
                    "fit_end_time": "2014-12-31",
                    "instruments": "csi300",
                },
            },
            "segments": {
                "train": ("2008-01-01", "2014-12-31"),
                "valid": ("2015-01-01", "2016-12-31"),
                "test": ("2017-01-01", "2020-08-01"),
            },
        },
    },
}

# 训练模型
model = init_instance_by_config(task["model"])
dataset = init_instance_by_config(task["dataset"])

with R.start(experiment_name="lightgbm_alpha158"):
    R.log_params(**flatten_dict(task))
    model.fit(dataset)
    
    # 预测
    pred = model.predict(dataset)
    print(pred.head())

2.4 回测系统

#### 2.4.1 策略配置

Qlib 内置 TopkDropoutStrategy 策略:

strategy:
    class: TopkDropoutStrategy
    module_path: qlib.contrib.strategy.strategy
    kwargs:
        topk: 50      # 持仓股票数
        n_drop: 5     # 每日换仓数
        signal: <PRED>  # 预测信号

算法逻辑: 1. 按预测分数排序所有股票 2. 统计当前持仓中排名超出 topk 的股票数 d 3. 卖出 d 只表现最差的持仓股票 4. 买入 d 只表现最好的非持仓股票 5. 换手率 ≈ 2 × n_drop / topk

#### 2.4.2 交易所配置

backtest:
    start_time: 2017-01-01
    end_time: 2020-08-01
    account: 100000000      # 初始资金 1 亿
    benchmark: SH000300     # 沪深300 作为基准
    exchange_kwargs:
        limit_threshold: 0.095    # 涨跌停阈值 9.5%
        deal_price: close         # 收盘价成交
        open_cost: 0.0005         # 买入佣金 0.05%
        close_cost: 0.0015        # 卖出佣金 0.15%
        min_cost: 5               # 最低佣金 5 元

#### 2.4.3 完整回测示例

from qlib.contrib.evaluate import backtest_daily, risk_analysis
from qlib.contrib.strategy import TopkDropoutStrategy

# 假设 pred_score 是模型预测分数
strategy_config = {
    "topk": 50,
    "n_drop": 5,
    "signal": pred_score,
}

strategy = TopkDropoutStrategy(**strategy_config)

# 执行回测
report_normal, positions_normal = backtest_daily(
    start_time="2017-01-01",
    end_time="2020-08-01",
    strategy=strategy,
)

# 风险分析
analysis = {}
analysis["excess_return_without_cost"] = risk_analysis(
    report_normal["return"] - report_normal["bench"]
)
analysis["excess_return_with_cost"] = risk_analysis(
    report_normal["return"] - report_normal["bench"] - report_normal["cost"]
)

# 输出结果
import pandas as pd
print(pd.concat(analysis))

输出示例

                              risk
mean                      0.000708
std                       0.005626
annualized_return         0.178316
information_ratio         1.996555
max_drawdown             -0.081806

2.5 一键运行:qrun

Qlib 提供命令行工具 qrun,一键执行完整工作流:

# 使用 YAML 配置文件运行
cd examples
qrun benchmarks/LightGBM/workflow_config_lightgbm_Alpha158.yaml

完整配置文件示例

# workflow_config.yaml
qlib_init:
    provider_uri: "~/.qlib/qlib_data/cn_data"
    region: cn

market: &market csi300
benchmark: &benchmark SH000300

data_handler_config: &data_handler_config
    start_time: 2008-01-01
    end_time: 2020-08-01
    fit_start_time: 2008-01-01
    fit_end_time: 2014-12-31
    instruments: *market

port_analysis_config: &port_analysis_config
    strategy:
        class: TopkDropoutStrategy
        module_path: qlib.contrib.strategy.strategy
        kwargs:
            topk: 50
            n_drop: 5
            signal: <PRED>
    backtest:
        start_time: 2017-01-01
        end_time: 2020-08-01
        account: 100000000
        benchmark: *benchmark
        exchange_kwargs:
            limit_threshold: 0.095
            deal_price: close
            open_cost: 0.0005
            close_cost: 0.0015
            min_cost: 5

task:
    model:
        class: LGBModel
        module_path: qlib.contrib.model.gbdt
        kwargs:
            loss: mse
            colsample_bytree: 0.8879
            learning_rate: 0.0421
            subsample: 0.8789
            lambda_l1: 205.6999
            lambda_l2: 580.9768
            max_depth: 8
            num_leaves: 210
            num_threads: 20
    dataset:
        class: DatasetH
        module_path: qlib.data.dataset
        kwargs:
            handler:
                class: Alpha158
                module_path: qlib.contrib.data.handler
                kwargs: *data_handler_config
            segments:
                train: [2008-01-01, 2014-12-31]
                valid: [2015-01-01, 2016-12-31]
                test: [2017-01-01, 2020-08-01]
    record:
        - class: SignalRecord
          module_path: qlib.workflow.record_temp
        - class: PortAnaRecord
          module_path: qlib.workflow.record_temp
          kwargs:
              config: *port_analysis_config

---

第三章:RD-Agent 深度解析

3.1 核心理念:R&D 循环

RD-Agent 将机器学习工程 (MLE) 过程形式化为 研究 (Research) - 开发 (Development) 双循环:

┌─────────────────────────────────────────────────────────────────┐
│                      R&D 循环                                    │
│                                                                  │
│   ┌─────────────────┐              ┌─────────────────┐          │
│   │    RESEARCH     │              │  DEVELOPMENT    │          │
│   │    (研究阶段)    │──────────────▶│   (开发阶段)   │          │
│   │                 │              │                 │          │
│   │ • 假设生成      │              │ • 代码实现      │          │
│   │ • 想法提案      │              │ • 实验执行      │          │
│   │ • 知识提取      │              │ • 反馈分析      │          │
│   └─────────────────┘              └─────────────────┘          │
│           ▲                                │                    │
│           │                                │                    │
│           └────────────────────────────────┘                    │
│                       迭代优化                                   │
└─────────────────────────────────────────────────────────────────┘

3.2 五大功能单元

RD-Agent(Q) 将量化研究分解为五个协同工作的功能单元:

┌─────────────────────────────────────────────────────────────────┐
│                    RD-Agent(Q) 系统架构                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌───────────────┐                                              │
│  │ 规格单元 (S)   │  S = (B, D, F, M)                           │
│  │ Specification │  • B: 背景假设与先验知识                      │
│  └───────┬───────┘  • D: 市场数据接口                           │
│          │           • F: 期望输出格式                           │
│          │           • M: 外部执行环境 (Qlib)                    │
│          ▼                                                       │
│  ┌───────────────┐                                              │
│  │ 综合单元      │  • 知识森林构建                              │
│  │ Synthesis     │  • 假设生成 h^(t+1) = G(H_t^a, F_t^a)       │
│  └───────┬───────┘  • 维护 SOTA 集合                            │
│          │                                                       │
│          ▼                                                       │
│  ┌───────────────┐                                              │
│  │ 实现单元      │  Co-STEER (协同调度与任务执行引擎)            │
│  │ Implementation│  • 思维链推理                                │
│  └───────┬───────┘  • DAG 任务调度                              │
│          │           • 知识库 K 记录 (任务, 代码, 反馈)          │
│          ▼                                                       │
│  ┌───────────────┐                                              │
│  │ 验证单元      │  • Qlib 回测集成                             │
│  │ Validation    │  • 去重 (IC_max 阈值 0.99)                   │
│  └───────┬───────┘  • 性能评估                                  │
│          │                                                       │
│          ▼                                                       │
│  ┌───────────────┐                                              │
│  │ 分析单元      │  • 8 维性能向量评估                          │
│  │ Analysis      │  • 上下文汤普森采样                          │
│  └───────────────┘  • 因子/模型方向选择                         │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

3.3 Co-STEER:代码生成引擎

Co-STEER (Collaborative Scheduling and Task Execution Engine) 是 RD-Agent 的核心代码生成引擎:

┌─────────────────────────────────────────────────────────────────┐
│                    Co-STEER 工作流程                             │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  输入: 假设 H                                                    │
│      │                                                           │
│      ▼                                                           │
│  ┌──────────────────────────────────────────┐                   │
│  │ 1. 任务分解 (DAG 构建)                    │                   │
│  │    输入 → 复杂度评估 → 拓扑排序 π_s       │                   │
│  └──────────────────────────────────────────┘                   │
│      │                                                           │
│      ▼                                                           │
│  ┌──────────────────────────────────────────┐                   │
│  │ 2. 代码生成 (思维链推理)                  │                   │
│  │    任务 → 检索相似实现 → 生成代码         │                   │
│  └──────────────────────────────────────────┘                   │
│      │                                                           │
│      ▼                                                           │
│  ┌──────────────────────────────────────────┐                   │
│  │ 3. 执行与验证                             │                   │
│  │    Docker/Conda 环境 → 运行 → 获取结果    │                   │
│  └──────────────────────────────────────────┘                   │
│      │                                                           │
│      ▼                                                           │
│  ┌──────────────────────────────────────────┐                   │
│  │ 4. 反馈与知识积累                         │                   │
│  │    成功: 存入知识库 K                     │                   │
│  │    失败: 调整复杂度 α_j → 重试            │                   │
│  └──────────────────────────────────────────┘                   │
│                                                                  │
│  输出: 可运行代码 + 性能指标                                     │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

关键特性

  • 88.9% 执行成功率 (vs 73.3% few-shot baseline)
  • 自适应复杂度评分:优先执行简单任务
  • 终身知识积累:成功经验持续存入知识库

3.4 因子-模型联合优化

RD-Agent(Q) 的核心创新是 因子-模型联合优化,通过上下文 Bandit 调度器在因子优化和模型优化之间动态切换:

#### 3.4.1 优化策略

┌─────────────────────────────────────────────────────────────────┐
│              因子-模型联合优化 (交替优化)                         │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│   时间步 t                                                       │
│      │                                                           │
│      ▼                                                           │
│  ┌─────────────────────────────────────────┐                    │
│  │ 状态向量 x_t ∈ R^8                      │                    │
│  │ [IC, ICIR, RankIC, RankICIR,           │                    │
│  │  ARR, IR, -MDD, SR]                    │                    │
│  └─────────────────────────────────────────┘                    │
│      │                                                           │
│      ▼                                                           │
│  ┌─────────────────────────────────────────┐                    │
│  │ 上下文 Thompson 采样                    │                    │
│  │                                         │                    │
│  │ For each action a ∈ {factor, model}:   │                    │
│  │   θ̃^(a) ~ N(μ^(a), (P^(a))^(-1))       │                    │
│  │   r̂^(a) = θ̃^(a)^T x_t                 │                    │
│  │                                         │                    │
│  │ a_t = argmax_a r̂^(a)                  │                    │
│  └─────────────────────────────────────────┘                    │
│      │                                                           │
│      ├─── a_t = factor ───▶ 执行因子演化                        │
│      │                                                           │
│      └─── a_t = model ────▶ 执行模型演化                        │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

#### 3.4.2 三种演化模式

模式命令说明
R&D-Factorrdagent fin_factor固定模型,优化因子集
R&D-Modelrdagent fin_model固定因子,优化模型
R&D-Agent(Q)rdagent fin_quant因子-模型联合演化
#### 3.4.3 实验性能对比

CSI 300 数据集 (2008-2020):

配置ICICIRRank ICARRIRMDD
R&D-Factor0.04970.3930.054614.61%1.69-9.10%
R&D-Model0.04690.3690.054610.09%1.45-6.94%
R&D-Agent(Q)0.05320.4280.055614.21%1.74-7.40%
与传统因子库对比

方法ICARR因子数量
Alpha 1010.04175.51%101
Alpha 1580.04348.97%158
Alpha 3600.04067.73%360
R&D-Factor0.049714.61%~35
关键发现
  • 2x 年化收益 提升对比传统因子库
  • 70% 更少因子 (仅用 Alpha 158/360 的 ~22%)
  • 成本低于 $10 (12 小时完整实验)

3.5 Bandit 调度器消融实验

调度策略ICARR有效循环数
Random0.04458.97%19
LLM-based0.047610.09%20
Bandit (推荐)0.053214.21%24
---

第四章:环境搭建与快速入门

4.1 Qlib 安装

# 方式 1: pip 安装
pip install pyqlib

# 方式 2: 源码安装
pip install numpy cython
git clone https://github.com/microsoft/qlib.git
cd qlib
pip install -e .

# 方式 3: Docker
docker pull pyqlib/qlib_image_stable:stable

4.2 RD-Agent 安装

# 创建环境
conda create -n rdagent python=3.10
conda activate rdagent

# 安装 RD-Agent
pip install rdagent

# 开发者安装 (最新版)
git clone https://github.com/microsoft/RD-Agent.git
cd RD-Agent
make dev

4.3 LLM 后端配置

创建 .env 文件:

# OpenAI 配置
CHAT_MODEL=gpt-4o
EMBEDDING_MODEL=text-embedding-3-small
OPENAI_API_BASE=https://api.openai.com/v1
OPENAI_API_KEY=sk-your-key

# 或 DeepSeek 配置 (更经济)
CHAT_MODEL=deepseek/deepseek-chat
DEEPSEEK_API_KEY=sk-your-key
EMBEDDING_MODEL=litellm_proxy/BAAI/bge-m3
LITELLM_PROXY_API_BASE=https://api.siliconflow.cn/v1

LLM 要求

  • ChatCompletion 能力
  • JSON mode 支持
  • Embedding query 支持

4.4 Docker 配置 (RD-Agent 执行环境)

# 确保 Docker 可用 (无需 sudo)
docker run hello-world

# 如果需要非 root 访问
sudo usermod -aG docker $USER
# 重新登录生效

4.5 数据准备

# 下载 Qlib 数据
python scripts/get_data.py qlib_data \
    --target_dir ~/.qlib/qlib_data/cn_data \
    --region cn

# 验证数据
python -c "import qlib; qlib.init(provider_uri='~/.qlib/qlib_data/cn_data'); print('OK')"

---

第五章:实战案例

5.1 案例 1:Qlib 基础工作流

目标:使用 LightGBM + Alpha158 在 CSI 300 上训练模型并回测

# 01_qlib_basic_workflow.py
import qlib
from qlib.utils import init_instance_by_config
from qlib.workflow import R
from qlib.workflow.record_temp import SignalRecord, PortAnaRecord

# 1. 初始化 Qlib
qlib.init(provider_uri="~/.qlib/qlib_data/cn_data", region="cn")

# 2. 配置
market = "csi300"
benchmark = "SH000300"

# 3. 任务配置
task = {
    "model": {
        "class": "LGBModel",
        "module_path": "qlib.contrib.model.gbdt",
        "kwargs": {
            "loss": "mse",
            "learning_rate": 0.05,
            "max_depth": 8,
            "num_leaves": 200,
            "num_threads": 10,
        },
    },
    "dataset": {
        "class": "DatasetH",
        "module_path": "qlib.data.dataset",
        "kwargs": {
            "handler": {
                "class": "Alpha158",
                "module_path": "qlib.contrib.data.handler",
                "kwargs": {
                    "start_time": "2008-01-01",
                    "end_time": "2020-08-01",
                    "fit_start_time": "2008-01-01",
                    "fit_end_time": "2014-12-31",
                    "instruments": market,
                },
            },
            "segments": {
                "train": ("2008-01-01", "2014-12-31"),
                "valid": ("2015-01-01", "2016-12-31"),
                "test": ("2017-01-01", "2020-08-01"),
            },
        },
    },
}

# 4. 初始化
model = init_instance_by_config(task["model"])
dataset = init_instance_by_config(task["dataset"])

# 5. 训练与记录
with R.start(experiment_name="qlib_lightgbm_demo"):
    # 训练
    model.fit(dataset)
    
    # 预测
    pred = model.predict(dataset, segment="test")
    
    # 保存模型
    R.save_objects(model=model)
    
    # 记录预测
    sr = SignalRecord(model, dataset, R.get_recorder())
    sr.generate()
    
    print(f"预测完成,共 {len(pred)} 条记录")
    print(pred.head())

运行

python 01_qlib_basic_workflow.py

5.2 案例 2:完整回测流程

# 02_full_backtest.py
import qlib
from qlib.contrib.evaluate import backtest_daily, risk_analysis
from qlib.contrib.strategy import TopkDropoutStrategy

qlib.init(provider_uri="~/.qlib/qlib_data/cn_data", region="cn")

# 假设已有预测分数 pred_score
# pred_score: pd.DataFrame, index=(datetime, instrument), columns=['score']

# 策略配置
strategy = TopkDropoutStrategy(
    topk=50,
    n_drop=5,
    signal=pred_score,
)

# 回测
report, positions = backtest_daily(
    start_time="2017-01-01",
    end_time="2020-08-01",
    strategy=strategy,
    benchmark="SH000300",
)

# 分析
excess_return = report["return"] - report["bench"]
analysis_result = risk_analysis(excess_return)

print("=" * 50)
print("回测结果分析")
print("=" * 50)
print(f"年化收益率: {analysis_result['annualized_return']:.2%}")
print(f"信息比率:   {analysis_result['information_ratio']:.2f}")
print(f"最大回撤:   {analysis_result['max_drawdown']:.2%}")
print("=" * 50)

5.3 案例 3:RD-Agent 因子演化

# 启动因子演化 (约 6 小时)
rdagent fin_factor

# 查看日志目录
ls -la log/

预期输出

log/
├── __session__/
│   ├── 0/
│   │   ├── 0_direct_exp_gen    # 假设生成
│   │   ├── 1_coding            # 代码实现
│   │   ├── 2_running           # 回测执行
│   │   └── 3_feedback          # 反馈分析
│   ├── 1/
│   └── ...
└── rdagent.log

5.4 案例 4:RD-Agent 因子-模型联合演化

# 完整因子-模型联合演化 (约 12 小时)
rdagent fin_quant

# 使用 Web UI 监控
rdagent ui --port 19899 --log-dir log/ --data-science

访问 http://localhost:19899 查看实时演化进度。

5.5 案例 5:从研报提取因子

# 准备研报目录
mkdir -p reports
# 将 PDF/Word 研报放入 reports/ 目录

# 提取因子
rdagent fin_factor_report --report-folder=reports/

5.6 案例 6:自定义模型配置

# 03_custom_model.py
import qlib
from qlib.utils import init_instance_by_config

qlib.init(provider_uri="~/.qlib/qlib_data/cn_data", region="cn")

# 自定义 PyTorch 神经网络
custom_model_config = {
    "class": "MLP",
    "module_path": "qlib.contrib.model.pytorch_nn",
    "kwargs": {
        "d_feat": 6,          # 输入特征维度 (6 个价格/量字段)
        "hidden_size": 256,
        "num_layers": 3,
        "dropout": 0.1,
        "n_epochs": 100,
        "lr": 0.001,
        "batch_size": 4096,
        "early_stop": 10,
        "loss": "mse",
        "GPU": 0,
    },
}

model = init_instance_by_config(custom_model_config)
print("模型创建成功:", model)

---

第六章:高级配置与优化

6.1 RD-Agent 配置参数

#### 6.1.1 基础配置 (QuantBasePropSetting)

参数默认值说明
evolving_n10演化迭代次数
action_selection"bandit"调度策略: bandit/llm/random
train_start"2008-01-01"训练起始日期
train_end"2014-12-31"训练结束日期
valid_start"2015-01-01"验证起始日期
valid_end"2016-12-31"验证结束日期
test_start"2017-01-01"测试起始日期
#### 6.1.2 因子演化配置 (FactorCoSTEERSettings)

参数默认值说明
max_loop10最大实现循环次数
fail_task_trial_limit20失败任务重试上限
file_based_execution_timeout3600因子执行超时 (秒)
coder_use_cachefalse启用代码缓存
#### 6.1.3 模型演化配置 (ModelCoSTEERSettings)

参数默认值说明
env_type"docker"执行环境: docker/conda
max_loop10最大实现循环次数
running_timeout_period600模型执行超时 (秒)

6.2 环境变量配置

# 导出配置
export QLIB_QUANT_EVOLVING_N=20
export QLIB_QUANT_ACTION_SELECTION="bandit"
export FACTOR_CoSTEER_MAX_LOOP=15
export MODEL_CoSTEER_ENV_TYPE="conda"

# 运行
rdagent fin_quant

6.3 Qlib 性能优化

#### 6.3.1 数据缓存

# 启用数据缓存
qlib.init(
    provider_uri="~/.qlib/qlib_data/cn_data",
    region="cn",
    redis_cache={
        "host": "localhost",
        "port": 6379,
    }
)

#### 6.3.2 并行训练

# 多线程配置
model_config = {
    "class": "LGBModel",
    "kwargs": {
        "num_threads": 20,  # CPU 核心数
    }
}

#### 6.3.3 GPU 加速

# PyTorch 模型 GPU 配置
nn_config = {
    "class": "MLP",
    "kwargs": {
        "GPU": 0,  # GPU ID
        "batch_size": 8192,
    }
}

---

第七章:性能评估指标

7.1 因子评估指标

指标公式说明
ICcorr(pred, label)预测值与实际收益的相关系数
ICIRmean(IC) / std(IC)IC 的时序稳定性
Rank ICspearman(pred, label)秩相关系数,抗异常值
Rank ICIRmean(RankIC) / std(RankIC)Rank IC 稳定性

7.2 策略评估指标

指标公式说明
ARR(1+r)^252 - 1年化收益率
IRmean(excess) / std(excess) × √252信息比率
MDDmax(peak - trough) / peak最大回撤
CalmarARR /MDD卡玛比率
Sharpe(ARR - Rf) / σ夏普比率

7.3 回测输出解读

# 典型输出
                              risk
mean                      0.000708    # 日均超额收益
std                       0.005626    # 日超额收益波动
annualized_return         0.178316    # 年化收益率 17.83%
information_ratio         1.996555    # 信息比率 2.0
max_drawdown             -0.081806    # 最大回撤 8.18%

评估标准

  • IR > 1.5:优秀
  • IR > 2.0:非常优秀
  • MDD < 10%:风险可控
  • Calmar > 1.5:风险调整后收益良好
---

第八章:最佳实践与注意事项

8.1 最佳实践

#### 8.1.1 数据准备

1. 使用 Point-in-Time 数据:避免前视偏差 2. 定期更新数据:设置 crontab 自动更新 3. 验证数据质量:检查缺失值、异常值

# crontab 自动更新 (每日 18:00)
0 18 * * * python /path/to/update_qlib_data.py

#### 8.1.2 模型训练

1. 时间分割严格:训练集 < 验证集 < 测试集 2. 使用早停:避免过拟合 3. 交叉验证:滚动窗口验证

# 滚动验证配置
segments = {
    "train": ("2008-01-01", "2012-12-31"),
    "valid": ("2013-01-01", "2014-12-31"),
    "test": ("2015-01-01", "2016-12-31"),
}

#### 8.1.3 RD-Agent 使用

1. 优先使用 Bandit 调度器:性能最佳 2. 因子优化先行:因子优化迭代更快 3. 监控成本:LLM 调用约 $10/实验 4. 保存 Session:支持断点续传

8.2 常见问题

#### Q1: 数据下载失败

# 使用社区数据源
# https://github.com/chenditc/investment_data/releases
wget https://github.com/chenditc/investment_data/releases/download/...

#### Q2: Docker 权限问题

# 添加用户到 docker 组
sudo usermod -aG docker $USER
# 重新登录

#### Q3: GPU 内存不足

# 减小 batch_size
config = {
    "kwargs": {
        "batch_size": 1024,  # 从 4096 减小
    }
}

#### Q4: RD-Agent 执行超时

# 增加超时时间
export FACTOR_CoSTEER_FILE_BASED_EXECUTION_TIMEOUT=7200  # 2 小时
export MODEL_CoSTEER_RUNNING_TIMEOUT_PERIOD=1200  # 20 分钟

8.3 风险提示

1. 市场风险:历史表现不代表未来收益 2. 过拟合风险:注意样本外验证 3. 模型风险:黑天鹅事件可能导致模型失效 4. 技术风险:LLM 生成代码需人工审核

---

第九章:扩展与生态

9.1 Qlib 生态

组件说明
Qlib核心量化平台
Qlib-Contrib社区贡献模型
RD-AgentLLM 驱动自动化
Qlib-MLflow实验管理集成

9.2 相关论文

1. Qlib: Towards an AI-oriented Quantitative Investment Platform (arXiv:2009.11189) 2. R&D-Agent-Quant: Multi-Agent Factor-Model Co-Optimization (NeurIPS 2025, arXiv:2505.15155) 3. DoubleEnsemble: A New Ensemble Method (ICDM 2020) 4. TCTS: Time-Contrastive Pretraining (ICML 2021)

9.3 社区资源

  • GitHub: https://github.com/microsoft/qlib
  • 文档: https://qlib.readthedocs.io
  • RD-Agent: https://github.com/microsoft/RD-Agent
  • 数据源: https://github.com/chenditc/investment_data
---

第十章:总结与展望

10.1 核心要点

项目核心价值最佳场景
Qlib全流程量化平台传统 ML/DL 策略研发
RD-AgentLLM 驱动自动化因子挖掘、策略创新

10.2 技术栈总结

┌─────────────────────────────────────────────────────────────────┐
│                    量化交易技术栈                                │
├─────────────────────────────────────────────────────────────────┤
│                                                                  │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │                    应用层                                │    │
│  │  因子挖掘 │ 模型训练 │ 策略回测 │ 风险分析              │    │
│  └─────────────────────────────────────────────────────────┘    │
│                              │                                   │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │                    AI 层                                 │    │
│  │  RD-Agent (LLM) │ GBDT │ Deep Learning │ RL             │    │
│  └─────────────────────────────────────────────────────────┘    │
│                              │                                   │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │                    平台层                                │    │
│  │               Qlib (数据处理、回测引擎)                  │    │
│  └─────────────────────────────────────────────────────────┘    │
│                              │                                   │
│  ┌─────────────────────────────────────────────────────────┐    │
│  │                    数据层                                │    │
│  │        高性能存储 (.bin) │ Alpha158/360 特征            │    │
│  └─────────────────────────────────────────────────────────┘    │
│                                                                  │
└─────────────────────────────────────────────────────────────────┘

10.3 未来展望

1. RD-Agent 持续进化:支持更多 LLM 后端,优化成本 2. Qlib 新模型集成:Transformer 变体、图神经网络 3. 端到端学习:BPQP (BackPropagation through Quadratic Programming) 4. 实盘集成:券商 API 对接

---

附录:快速参考卡片

Qlib 常用命令

# 数据下载
python scripts/get_data.py qlib_data --target_dir ~/.qlib/qlib_data/cn_data --region cn

# 一键运行工作流
qrun workflow_config.yaml

# Jupyter 示例
jupyter notebook examples/workflow_by_code.ipynb

RD-Agent 常用命令

# 因子-模型联合演化
rdagent fin_quant

# 仅因子演化
rdagent fin_factor

# 仅模型演化
rdagent fin_model

# 研报因子提取
rdagent fin_factor_report --report-folder=reports/

# Web UI 监控
rdagent ui --port 19899 --log-dir log/

关键配置模板

# 最小工作流配置
qlib_init:
    provider_uri: "~/.qlib/qlib_data/cn_data"
    region: cn

task:
    model:
        class: LGBModel
        module_path: qlib.contrib.model.gbdt
    dataset:
        class: DatasetH
        module_path: qlib.data.dataset
        kwargs:
            handler:
                class: Alpha158
                module_path: qlib.contrib.data.handler
            segments:
                train: [2008-01-01, 2014-12-31]
                valid: [2015-01-01, 2016-12-31]
                test: [2017-01-01, 2020-08-01]

---

参考资料

  • Qlib GitHub: https://github.com/microsoft/qlib
  • RD-Agent GitHub: https://github.com/microsoft/RD-Agent
  • Qlib 论文: arXiv:2009.11189
  • RD-Agent-Quant 论文: arXiv:2505.15155 (NeurIPS 2025)
---

👍 1
💬 讨论回复 (0)
推荐

🌟 智谱 GLM-5 已上线

我正在智谱大模型开放平台 BigModel.cn 上打造 AI 应用,智谱新一代旗舰模型 GLM-5 已上线,在推理、代码、智能体综合能力达到开源模型 SOTA 水平。

🎁 领取 2000万 Tokens