今年参加了某证券公司的股票预测的赛事,故将项目过程中涉及到的有关知识整理于此。本文包含赛题中使用的量化指标,损失函数以及基础模型结构,内容均为公开的通用技术知识,不涉及比赛数据、具体工程和完整方案。本人并非专业金融从业者,故本文仅以数学与机器学习的视角,对其中涉及的概念作简要介绍。
1. 基础概念与评估指标
截面数据
截面数据 (Cross-Sectional Data)是在某一特定时间点,全市场所有股票组合而成的数据切片。截面预测关注的是股票之间的相对强弱而非单只股票的时间序列绝对值。通常对同一截面内的股票特征或收益率向量进行 Z-Score 标准化,使其均值为 0、标准差为 1,以消除不同交易日量级波动对模型训练的影响。
与之对应的是时间序列数据(Time-Series Data),时间序列数据关注单只股票在一段时间内连续观察得到的数据。
信息系数
数学上的相关系数用来判断两个变量的相关性。信息系数(Information Coefficient, IC)本质上是一种相关系数,衡量模型预测值 与真实值 相关性的指标。其中 Pearson IC(皮尔逊相关系数)计算预测向量与真实收益向量之间的线性相关系数,也就是最广为人知的概率统计课上学习的相关系数:
而 RankIC (Spearman Rank IC, 斯皮尔曼秩相关系数) 则先将预测值和真实值分别在截面内转化为排名(Rank),再对排名计算 Pearson 相关系数。信息系数的值在区间 中,数值越大代表预测能力越强。
2. 有关损失函数
相关性损失函数
Pearson IC Loss
直接将截面 Pearson 相关系数的负数作为损失函数:
截面线性相关度将直接决定模型的梯度下降方向。缺点是由于 Pearson 直接计算真实的预测值,其绝对大小缺乏约束,可能导致模型输出的数值出现极端的膨胀或坍缩。
Cosine Loss
计算预测向量与真实向量夹角的余弦值,即余弦相似度,其相反数即是 Cosine Loss:
它的计算形式比标准 IC 更加轻量且数值稳定。当输入的截面预测向量 与真实向量 提前已经完成了 Z-Score 标准化,余弦相似度与 Pearson 相关系数在数学上完全等价,也就是:
Spearman / Soft-Rank IC Loss
传统的 argsort 排序函数属于不可导的阶梯状非连续函数,因此无法通过反向传播计算梯度。Soft-Rank 利用可微函数 (如 Sigmoid)对排序过程做平滑近似。给定预测值 ,其连续软排名(Soft-Rank)可表示为:
其中 , 为控制平滑程度的温度(Temperature)。得到平滑排名矩阵后,进一步计算其 Pearson 相关系数,得到连续可导的 Soft-RankIC Loss 函数。
排序类损失的范式
在算法层面,排序任务一般分为三类方法:PointWise,PairWise 和 ListWise。通常根据具体任务的特点选用某一类方法,针对性的构建损失函数。
Pointwise
Pointwise 不关注股票之间的高低优劣,它单独预测每一只股票的特征值,也就是最常见的机器学习回归算法。比如使用 MSE Loss 函数的回归算法,它逐个样本地计算损失:
Pairwise
Pairwise 将截面问题化为两两配对比较,一般将预测标签 定义为股票的收益率。对任意股票对 (i, j),若真实收益率 ,则模型应输出打分 。最经典的 Pairwise 算法是 RankNet,它利用 Sigmoid 函数将预测分差映射为概率 :
目标为最大化正确排序对的对数似然,对应二分类交叉熵损失:
这种方法仅依赖收益率的相对大小关系,消除了收益率绝对数值带来的噪音。
Listwise
Listwise 将单日截面的所有股票看作一个完整的序列进行建模,让预测的列表正确排序的概率尽可能大。其中 ListMLE 基于统计学的 Plackett-Luce 模型,假设按照真实排序 逐步选出股票的总体概率等于每一步选择条件的概率乘积:
3. 两种基础模型结构
GRU
GRU(Gated Recurrent Unit,门控循环单元)是一种基于 RNN 改进的神经网络架构,主要用来处理序列数据。它比 LSTM 更为简单,但实际上出现的时间更晚。普通的 RNN 会把之前的信息通过隐藏状态 传到下一时刻,也就是 。但当序列很长时,早期信息容易在反向传播过程中逐渐消失,也就是所谓的梯度消失。
GRU 的核心思想是,让网络自己决定保留多少旧信息,以及加入多少新信息。这主要由两个门实现:更新门(Update Gate)决定之前的信息保留的程度:
而重置门(Reset Gate)决定要不要参考过去的信息:
其中, 是当前时刻的输入, 是上一时刻的隐藏状态, 和 是可学习的权重矩阵, 是 Sigmoid 激活函数,将输出限制在 之间。
得到两个门控值后,GRU 首先计算候选隐藏状态:
\[ \tilde{h}_t=\tanh(W_hx_t+U_h(r_t\odot h_{t-1})) \]
其中,\(\odot\) 表示逐元素乘法,\(\tanh\) 将输出限制在 之间。当 \(r_t\) 接近 0 时,模型会忽略大部分历史信息,主要根据当前输入生成新的候选状态;当 \(r_t\) 接近 1 时,则会充分参考上一时刻的隐藏状态。
最后,GRU 利用更新门,将旧的隐藏状态与候选隐藏状态进行加权组合:
\[ h_t=(1-z_t)\odot h_{t-1}+z_t\odot\tilde{h}_t \]
当 \(z_t\) 接近 0 时,\(h_t\) 主要保留旧的隐藏状态;当 \(z_t\) 接近 1 时,\(h_t\) 主要采用新生成的候选隐藏状态。
LightGBM
LightGBM(Light Gradient Boosting Machine,轻量级梯度提升机)是一种基于梯度提升决策树(Gradient Boosting Decision Tree,GBDT)的机器学习算法,由微软团队于 2017 年提出,主要用于处理表格数据中的分类、回归和排序任务。
与神经网络通过计算损失函数关于模型参数 \(\theta\) 的梯度并更新参数不同,LightGBM 计算损失函数关于预测值 \(\hat y\) 的梯度,并利用梯度信息构建新的决策树,以逐步降低损失函数。这种在函数空间(Function Space)中沿负梯度方向迭代优化的思想称为梯度提升(Gradient Boosting)。
假设当前模型已经训练了 \(m-1\) 棵树,并用 \(f_k(x)\) 表示第 \(k\) 棵决策树的输出,学习率记为 \(\eta\),其预测结果为:
\[ F_{m-1}(x)=\sum_{k=1}^{m-1}\eta f_k(x) \]
则损失函数关于预测值的一阶梯度为:
\[ g_i=\nabla_{\hat y_i}L(y_i,\hat y_i) \]
该梯度反映了预测值发生变化时,损失函数的变化方向。当 \(g_i>0\) 时,减小预测值可以降低损失;当 \(g_i<0\) 时,增大预测值可以降低损失。因此,负梯度 \(-g_i\) 就是当前预测值应该调整的方向。
与只利用一阶梯度的简单梯度提升方法不同,LightGBM 还利用损失函数的二阶导数 ,通过二阶泰勒展开近似描述预测值变化后损失函数的变化:
\[ L(y_i,\hat y_i+\Delta_i) \approx L(y_i,\hat y_i) +g_i\Delta_i +\frac12h_i\Delta_i^2 \]
其中 \(\Delta_i\) 表示对当前预测值的修正量。一阶梯度决定损失下降的方向,而二阶导数帮助确定修正幅度。LightGBM 利用这些信息构建新的决策树,并确定各个叶节点的输出值。具体来说,假设某个叶节点包含样本集合 \(I\),同一叶节点中的样本共享输出值 \(w\),因此可以将该节点的近似损失函数写为:
\[ \mathcal L_I(w)=\sum_{i\in I}\left(g_iw+\frac12h_iw^2\right)+\frac12\lambda w^2 \]
该损失函数为样本集合中样本点的损失函数,去掉不影响优化的常数项 \(L(y_i,\hat y_i)\),并加入 L2 正则化项得到的。令 \( G=\sum\limits_{i\in I}g_i, H=\sum\limits_{i\in I}h_i \),对损失函数求导并令其为零:
\[ \nabla_w\mathcal L_I(w)=G+(H+\lambda)w=0 \]
得到最优叶节点输出为:
\[ w^*=-\frac{G}{H+\lambda} \]
确定叶节点输出后,LightGBM 还需要决定如何划分样本。对于一个候选分裂,分别计算左右子节点的梯度和二阶导数之和,并通过分裂增益(Split Gain)衡量损失的下降程度:
\[ \mathrm{Gain}=\frac12\left( \frac{G_L^2}{H_L+\lambda} +\frac{G_R^2}{H_R+\lambda} -\frac{G^2}{H+\lambda} \right) \]
其中,下标 \(L,R\) 分别表示左右子节点,\(G,H\) 表示父节点对应的统计量。LightGBM 选择增益最大的有效分裂,重复这一过程,直到满足停止条件,从而构建出新的决策树。
训练完成后,将新决策树加入当前模型:
\[ F_m(x)=F_{m-1}(x)+\eta f_m(x) \]
通过不断重复梯度计算、决策树构建和模型更新,LightGBM 逐步降低损失函数。
总结
不想总结了咕咕咕,鸽了将近三个星期终于勉强写完了。截至目前比赛初赛结果尚未公布,希望能够入门决赛。

Comments NOTHING