神经网络算法下的风格轮动策略
由bqtnziby创建,最终由bqtnziby 被浏览 45 用户
我们之前已经介绍过几个风格轮动的策略了,本质上依据的就是股票市场长期存在的“强市炒成长、弱市求稳健”的轮动策略。
1.神经网络算法
1.1算法核心原理
神经网络是一种模仿人脑神经元连接结构的机器学习模型,擅长处理多维度、非线性的复杂数据关系。其核心优势在于通过多层网络结构自动学习数据中的隐藏规律,无需人工预设特征映射关系,能更精准捕捉市场风格背后的复杂驱动逻辑。
1.2神经网络架构设计
我们采用的是全连接神经网络,具体的结构如下:
- 输入层:接收 6 个核心市场特征(市场广度指标 breadth_ma20、短期动量 avg_mom5、长期动量 avg_mom20、平均波动率 avg_vol20、主力资金占比 main_rate_avg、日均收益率 avg_return_1d),构成 6 维输入向量。
- 隐藏层:包含两层全连接层(Dense 层),第一层设置 128 个神经元,第二层设置 64 个神经元,均采用 ReLU 激活函数,有效增强模型的非线性拟合能力;两层隐藏层后分别加入 dropout 层( dropout 率 10%),通过随机失活部分神经元避免模型过拟合,提升泛化能力。
- 输出层:1 个神经元,采用线性激活函数,输出市场未来短期(5 日)平均收益率预测值,作为风格判断的核心依据。
隐藏层详解
隐藏层是整个算法中的核心部分,神经网络算法对非线性关系的捕捉就在这一层进行。
- ReLU(Rectified Linear Unit)开关:事实上就是一个ReLU函数
假设神经网络上的一个神经元接收到了两个市场特征:市场广度(x_1)和短期动量(x_2),则该神经元计算过程为:
然后经过ReLU函数激活:
如果二者加权相加的结果为正数,则输出结果就为其本身(强化这个信号),如果为负数,则输出“0”(压制这个信号,相当于关闭这个神经元输出的信号)。这种 “要么激活、要么关闭” 的机制,让神经元的输出不再是 “输入的线性叠加”,而是引入了折线式的非线性变化—— 画在图上,ReLU 的图像是 “从 0 开始的折线”,而非直线,这就实现了 “非线性加工”。
- dropout层:这是神经网络算法中很有意思的一个设计。可以想象人的顺势思维,事实上就是神经偷懒了,按照以前思考过的过程直接给出输出。而设置dropout层会让10%的神经元“轮休”,防止神经元死记硬背历史数据(会增大过拟合风险),提高泛化能力。
1.3神经网络算法输出作用
通过神经网络对历史市场数据进行训练,学习特征与未来收益率的映射关系,进而每日输出市场风格预测信号。当预测值大于 0 时,判定为强市风格;当预测值小于等于 0 时,判定为弱市风格,为后续股票池切换提供量化依据。
2.策略执行流程
2.1数据准备与预处理
(1)训练数据准备(2024.01.01-2024.12.31)
- 数据范围:全市场非 ST、上市满 260 天的股票,提取日线级别基础数据与资金流数据。
- 特征工程:构建 6 个核心特征(breadth_ma20、avg_mom5 等),确保数据无缺失值。
- 标签定义:以股票未来 5 日平均收益率(target_future_avg_return_5d)作为模型训练标签,实现 “特征 - 未来收益” 的映射学习。
(2)实盘数据准备(2025.01.01-2025.11.20)
- 特征数据:与训练阶段保持一致的 6 个核心特征,确保数据口径统一。
- 股票评分数据:计算每只股票的小盘分数(smallcap_score)与低波动分数(lowvol_score),为后续选股提供依据。
2.2神经网络模型训练与预测
(1)模型训练参数
- 损失函数:使用均方误差(MSE),最小化预测值与真实收益率的偏差。
- 训练配置:批次大小(batch_size)256,训练轮次(epochs)10,保证模型充分学习且不发生过拟合。
- 正则化:通过 dropout 层(rate=0.1)与合理的网络规模,抑制模型过拟合。
(2)市场风格预测
将实盘阶段的特征数据输入训练好的神经网络,输出每日市场未来 5 日平均收益率预测值。通过每日预测值的均值计算,生成市场风格信号(regime_on):预测值大于 0 则为强市(regime_on=1),否则为弱市(regime_on=0)。
2.3股票池切换与选股
- 强市阶段(regime_on=1):选用小盘分数(smallcap_score)作为选股依据,优先选择小盘特征显著的标的。
- 弱市阶段(regime_on=0):选用低波动分数(lowvol_score)作为选股依据,优先选择波动率低的标的。
- 选股数量:每日从对应股票池中筛选评分最高的前 10只股票,构成当日持仓组合。
2.4交易执行
- 调仓周期:每 5 个交易日调仓一次,平衡收益捕捉与交易成本。
- 仓位管理:单只股票目标权重约 19.8%(总仓位 99%),等权分配,分散风险。
- 交易成本:买入成本 0.03%,卖出成本 0.13%(最低 5 元),贴合实际市场交易规则。
- 基准指数:以沪深 300 指数作为业绩对比基准,衡量策略超额收益。
3.回测结果
模型学习时间为2024年1月1日-2024年12月31日,回测时间为2025年1月1日-2025年11月20日
4.注意及改进方向
(1)神经网络算法擅长捕捉非线性关系,这是优势,但同时也造成其比随机森林更容易受到噪声的干扰,不宜选过长的训练时间(包含过多的政策因素等噪声)。
(2)后续配合随机森林算法和ARIMA模型进行更精准、更抗噪声的预测模型。
(3)对神经网络算法的迭代次数进行考察:增加“早停”设置,设计自动寻找最优的迭代次数的过程,防止欠拟合和过拟合。
(4)提交模拟交易的话把代码中固定随机状态的RANDOM_SEED逻辑去掉。
策略代码:https://bigquant.pro/square/ai/75152532-c743-f5ca-568b-0ae9e2799d8e