精华帖子

策略分享—基于StockRanker模型和排序学习的选股策略

由bq0m8rec创建,最终由bq0m8rec 被浏览 21 用户

0. 策略名词解释

(1)StockRanker模型 (LightGBM Ranker模型)

StockRanker 在bigquant平台支持排序、回归、二分类、log loss四种算法。而在排序算法中: 使用 LightGBM 提供的排序模型(LightGBM Ranker)来实现排序任务。

github链接: https://github.com/microsoft/LightGBM

  • 该模型通过将排序问题转化为多个 样本对之间的比较任务进行训练


$$ 每一对样本 (i, j) 中,如果 yi​>yj​,模型应学习让 \hat{y}_i > \hat{y}_j $$

这种方法不关注预测值的准确性,而关注“ 谁排在谁前面 ”

参数名 含义与解释
number_of_leaves 每棵树的最大叶子数,控制模型复杂度,越大越容易过拟合。
min_docs_per_leaf 每个叶子节点的最小样本数,防止模型过拟合。
number_of_trees 总共训练的树的数量,树越多模型越复杂。
learning_rate 控制每棵树对模型的贡献,影响收敛速度与稳定性。
max_bins 特征最大分箱数,影响特征离散化的精度与训练效率。
feature_fraction 每次训练迭代中使用的特征比例,用于防止过拟合。
data_row_fraction / bagging fraction 每次训练迭代中使用的数据样本比例,用于增强模型泛化能力。

\

(2)排序学习(Learning to Rank)

排序学习是一类机器学习任务,目标是让模型对一组对象(如网页、股票、商品)按相关性或价值进行排序。

给定一组查询 q,及其对应的候选项集合{x1​,x2​,...,xn​},每个项 xi​ 有一个对应的特征向量xi​,以及(可能)一个相关性标签yi​。排序学习的目标是学习一个函数 f(x),使得经过模型评分后的对象排序尽可能接近真实的相关性排序。

排序策略 优化单位 LightGBM 支持
Pointwise 每个样本 否(不适合排序)
Pairwise 样本对 (i, j) (LambdaRank),StockRanker模型使用的是这一种排序算法
Listwise 整个列表 (rank_xendcg)

\

1  StockRanker模型实现

1.1   数据准备(Data Preperation)

1.1.1 时间范围(选定标的行业)

https://www.gov.cn/zhengce/zhengceku/202312/content_6923270.htm?utm_source=chatgpt.com

1.1.2 因子分析(行业定制化因子模型搭建,具体见“基于成长因子的电子行业多因子选股策略‘)

\

1.2   预测函数(Prediction Function)

在 LightGBM 中,无论是分类、回归还是排序,预测函数本质上是 一组加法模型,即:

在排序中,这个打分值并没有“具体数值意义”,但越大的值会在排序中被排得越靠前。

\

1.3 损失函数(Loss function)

排序学习的损失函数不是关于单个样本的,而是关于 样本对(pairwise) 或 整个列表(listwise) 的:

LambdaRank(Pairwise)的理论损失函数:

实际的优化内容:梯度(lambda)

实际训练时的 λ,就是这个理论损失函数对预测分数的偏导数(梯度)-----在 LightGBM 的排序学习(尤其是 LambdaRank)中,lambda 指的是目标函数对叶子输出(leaf output)的一阶偏导数的负数,也就是:

\

1.4 正则化 (Regularization)

与回归/分类一样,LightGBM 的排序模型也加入了 树模型复杂度的正则化,防止过拟合。

  • 叶子输出 L2 正则化:控制每个叶子的预测值 wj 不要过大(类似岭回归)\n


1.5 目标函数(Objective function)

Total loss(目标函数)= Loss Function(损失函数) + Rugularization(正则项)

注意:这里的lambda不是loss function的一阶偏导数的lambda, 只是正则项的正则化系数

LightGBM 要优化的最终目标函数为:

\

1.6 优化过程(Boosting Optimization)

LightGBM 采用的优化方式是:

梯度提升决策树(GBDT)框架,对目标函数做 二阶泰勒展开,逐轮拟合负梯度(伪残差)

步骤如下:

(1)   初始化模型

(2)   每一轮迭代

l  对于每个样本,计算一阶导数(负梯度)和二阶导数:

LambdaRank 会根据样本对构造这些梯度(包含ΔNDCG)

l  拟合一棵决策树 Tm​(x),将样本分配到叶子节点

l  计算每个叶子的输出值(通过极小化加权平方误差 + 正则项)

l  更新模型:

(3)  继续迭代直至停止条件满足(如迭代次数、早停)

1.7 训练过程(Training Process)

\

1.8 模型检验(Evaluation)

LightGBM 排序模型常用的评估指标不是 MSE,而是 排序质量指标,例如:

  • 计算公式:

\

  • 图直观展示:

    NDCGk=1表示排序完美

    NDCGk​ 越接近 1,排序效果越好

\

2 历史数据回测

\

3 交易成本和滑点

\

4  总结

优势:StockRanker模型排序算法

可优化方向:多策略组合,参数优化等

标签

选股策略
{link}