一、概述
学习层位于数据层之上,它的职责为:

二、两大学习范式
A. 监督学习 (Supervised Learning)
特点:离线训练 → 生成排序信号 → 用于交易
python
# 步骤1:定义特征和标签
features = ["$close", "Mean($close, 5)", "$$roewa_q"] # 来自 Layer 2
label = "未来5日收益率" # 用户定义
# 步骤2:准备数据集
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": "csi500" # 股票池
}
# 步骤3:构建数据集(3段分离)
dataset = DatasetH(
handler=Alpha158(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") # 模型测试
}
)
# 步骤4:训练模型
model = LGBModel(
loss="mse",
num_leaves=210,
learning_rate=0.0421
)
model.fit(dataset)
# 步骤5:预测信号
pred_score = model.predict(dataset, segment="test")
B. 强化学习 (Reinforcement Learning)
特点:在线学习 → Agent 交互式决策 → 持续改进
python
# 通过与 Execution Env (Layer 0 的环境) 交互学习
class PortfolioAgent:
"""投资组合管理 agent"""
def learn(self, states, actions, rewards):
# 优化策略:最大化累积奖励
pass
class OrderExecutionAgent:
"""订单执行 agent"""
def learn(self, order_state, execution_path, commission):
# 优化执行策略:最小化滑点成本
pass
# 支持嵌套执行:
# - Level 1: 投资组合 agent 决定买卖什么、多少
# - Level 2: 订单执行 agent 决定如何执行这个订单
三、完整工作流程

四、YAML 配置示例
powershell
task:
model:
class: LGBModel # 模型类型
module_path: qlib.contrib.model.gbdt
kwargs:
loss: mse # 损失函数
num_leaves: 210 # 叶子数
learning_rate: 0.2 # 学习率
max_depth: 8 # 树深度
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_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 Zoo)

下一章详细讲一下每个模型