基于GFlowNet的低相关性量价因子挖掘策略
搜索文档
Alpha掘金系列之二十二:基于GFlowNet的低相关性量价因子挖掘策略
国金证券· 2026-04-10 19:00
量化模型与构建方式 1. **模型名称:GFlowNet (Generative Flow Networks, 生成流网络)** [1][12][22] * **模型构建思路:** 将因子表达式的生成过程建模为有向无环图(DAG)中的“水流”过程,训练目标是让网络中的流量分布满足守恒定律,最终实现生成某个因子表达式的概率与其对应的奖励(Reward)成正比,即 $P(x) \propto R(x)$ [13][22][27] * **模型具体构建过程:** * **状态与动作:** 状态(State)代表生成过程中的中间表达式,动作(Action)代表添加一个算子、窗口或特征等操作[22][25] * **训练目标:** 采用 Trajectory Balance (TB) 损失函数进行训练,该目标要求整条生成轨迹的前向概率、总流量估计与最终奖励之间保持平衡[31] * **TB损失函数公式:** $${\mathcal{L}}_{T B}=\left(\log{\frac{Z\prod_{t=1}^{n}P_{F}(s_{t}|s_{t-1})}{R(x)\prod_{t=1}^{n}P_{B}(s_{t-1}|s_{t})}}\right)^{2}$$ [31] 其中,$Z$ 是可学习的标量参数,代表总流量;$P_F$ 是前向策略(需要学习的神经网络),代表在状态 $s_{t-1}$ 下选择动作前往状态 $s_t$ 的概率;$P_B$ 是后向策略;$R(x)$ 是终止状态(即完整因子表达式)的奖励[31] * **训练流程:** 用当前前向策略 $P_F$ 采样一条生成轨迹;计算该轨迹对应因子表达式的奖励 $R(x)$;计算 TB 损失并反向传播更新 $P_F$ 和 $Z$ 的参数;重复此过程[34] * **模型评价:** 相比传统方法,GFlowNet 以生成多样化、低相关性的优秀因子集合为核心目标,通过结构化学习实现有策略的高效探索,能有效避免模式崩溃,生成因子相关性低[1][13][17][45] 2. **模型名称:基于Transformer Actor-Critic结构的PPO强化学习(RL)模型** [2][39] * **模型构建思路:** 将因子构建过程建模为序贯决策问题,智能体根据当前状态采取动作(如选择算子、特征),环境根据回测结果给出奖励,通过PPO算法优化策略以最大化长期预期奖励[12][39] * **模型具体构建过程:** * **网络架构:** 采用基于Transformer的Actor-Critic结构。Actor(策略网络)是一个多层感知机(MLP),输出选择各个动作的概率分布;Critic(价值网络)是一个平行的MLP,输出一个标量值,用于评估当前已构建公式的潜在收益[39] * **核心算法:** 使用PPO(Proximal Policy Optimization)算法。价值损失(Value Loss)使用均方误差(MSE)衡量Critic预测的状态价值 $V(s)$ 与实际回报的差距;策略优化部分引入熵奖励(Entropy Bonus) $-\sum_a \pi_a \log \pi_a$ 鼓励早期探索[39][40][45] * **模型评价:** 训练初期收敛速度较快,但容易发生模式崩溃(Mode Collapse),导致生成的因子高度同质化,相关性急剧上升至接近1,失去多样性[2][17][43] 量化因子与构建方式 1. **因子构建框架:GFlowNet因子挖掘系统** [2][32] * **构建思路:** 设计一个允许程序自动组合数学算子、时间窗口和基础特征,以系统化生成和筛选有效因子的框架[1][32] * **具体构建过程:** * **状态表示:** 由两部分构成:一是对由operator/window/feature构成的表达式历史序列进行Transformer编码;二是3个手工状态特征:当前深度、已用算子比例、已用节点比例[32] * **动作空间:** 定义为包含三类操作的扁平离散空间:1) operator(算子),共51个,涵盖一元、时序一元、二元、时序二元及截面算子;2) window(窗口),给时序算子选择窗口,共5个可选值;3) feature(叶子特征),数量根据具体设计变化[32][35] * **表达式组织:** 以ExprNode树结构组织生成的表达式,并应用交换律排序、双重neg折叠等简化方法,使等价表达式归一为同一字符串,降低缓存重复[33] * **语法约束:** 每一步仅允许执行“语法合法+不超复杂度上限”的动作。初始步强制选择算子(op);若当前节点等待窗口,则只能选择window;其他情况下可选择feature,且在不超限时可继续选择op[32] 2. **基础特征集(日频)** [2][36] * **特征名称:原始OHLCV特征** [2][36] * **构建思路:** 直接使用后复权的开盘价(Open)、最高价(High)、最低价(Low)、收盘价(Close)、成交量(Volume)数据作为基础特征输入[2][36] * **特征名称:无量纲相对特征** [2][36] * **构建思路:** 对原始OHLCV数据进行处理,生成一系列无量纲的相对变化或比率特征,以降低价格和成交量水平以及拆分复权带来的尺度差异干扰[2][36] * **具体构建过程(部分举例):** * `ret_gap = open / pre_close - 1` (隔夜跳空幅度)[37] * `ret_cc1 = close / pre_close - 1` (日收益)[37] * `ret_co = close / open - 1` (日内涨跌)[37] * `ret_hl = high / low - 1` (日内振幅比率)[37] * `ret_range = (high - low) / pre_close` (归一化振幅)[37] * `ret_vol_chg1 = volume / delay(volume,1) - 1` (成交量日变化率)[37] 3. **基础特征集(分钟频)** [4][68] * **特征名称:基于分钟量价数据构造的日频特征** [4][68] * **构建思路:** 首先从日内分钟数据中计算约40个刻画价格动量、波动、价位关系、成交量分布等信息的指标,然后将这些日内指标降维聚合为日频特征,再输入到日频挖掘框架中进行因子搜索[4][65][68] * **具体构建过程(部分举例):** * `amihud_intraday`:日内Amihud非流动性(收益/成交额)[69] * `close_position = (close - low)/(high - low)`:收盘价在当日高低区间的位置[69] * `intraday_trend`:日内趋势斜率(回归slope)[69] * `realized_vol`:日内实现波动率[69] * `ret_first30`:开盘后30分钟收益[69] * `ret_last15`:收盘前15分钟收益[69] * `vwap_close_dev`:收盘价相对VWAP偏离[69] 4. **奖励函数设计** [2][37] * **构建思路:** 为避免生成的因子过度暴露于小市值风格,对因子进行市值中性化处理后再计算其预测能力作为奖励[37] * **具体构建过程:** 奖励(Reward)设定为因子经过市值中性化后的绝对值信息系数(abs(IC))[2][37] 5. **复合因子:等权合成因子** [4][76] * **构建思路:** 将GFlowNet挖掘出的多个单因子,按照各自的因子方向(正负号)进行等权加权合成,形成一个综合因子[4][76] * **具体构建过程:** 报告中将基于不同基础特征集(原始OHLCV、相对特征、分钟频特征)挖掘出的因子分别进行等权合成[76][77] 6. **复合模型:GRU+Mamba+GFlowNet集成模型** [5][90] * **构建思路:** 在已有的基于GRU和Mamba2模型的深度学习选股框架中,额外加入GFlownet挖掘出的150个因子作为特征输入,以提升模型表现[5][90] 模型的回测效果 1. **GFlowNet模型**(对比RL) * **Batch内因子相关性中位数:** 低于 0.04 [2][43] 2. **PPO强化学习(RL)模型**(对比GFlowNet) * **Batch内因子相关性中位数:** 上升至 1 [2][43] 因子的回测效果 (测试区间:2018-2025年,全A市场,10日调仓)[38] 1. **基于原始OHLCV挖掘的单因子** [3][47] * **IC均值中位数:** 4.54% [3][47] * **IC均值最大值:** 8.56% [3][47] * **多头超额收益中位数:** 3.47% [3][47] * **截面相关性均值:** 15.73% [54] * **时序相关性均值:** 19.24% [54] * **表达式平均长度(复杂度):** 7.22 [59] 2. **基于相对特征挖掘的单因子** [3][61] * **IC均值中位数:** 6.17% [3][61] * **IC均值最大值:** 9.40% [3][61] * **多头超额收益中位数:** 4.75% [61][62] * **ICIR中位数:** 0.58 [62] * **多空收益中位数:** 33.90% [62] * **多空夏普比率中位数:** 2.42 [62] 3. **基于分钟频构造特征挖掘的单因子** [4][70] * **IC均值中位数:** 5.83% [4][70] * **IC均值最大值:** 9.46% [4][70] * **多头超额收益中位数:** 7.43% [4][70] * **ICIR中位数:** 0.57 [71] * **多头夏普比率中位数:** 0.74 [71] * **多空收益中位数:** 36.34% [71] * **多空夏普比率中位数:** 2.77 [71] 4. **等权合成因子** [76][77] * **基于原始OHLCV特征合成:** * **RankIC:** 10.83% [77] * **ICIR:** 0.81 [77] * **多头年化超额收益率:** 17.35% [77] * **多头信息比率:** 2.05 [77] * **多空年化收益率:** 88.67% [77] * **多空夏普比率:** 5.16 [77] * **基于相对特征合成:** * **RankIC:** 11.64% [77] * **ICIR:** 0.82 [77] * **多头年化超额收益率:** 10.22% [77] * **多头信息比率:** 1.15 [77] * **多空年化收益率:** 84.51% [77] * **多空夏普比率:** 3.91 [77] * **基于分钟频特征合成:** * **RankIC:** 12.25% [77] * **ICIR:** 0.85 [77] * **多头年化超额收益率:** 16.08% [77] * **多头信息比率:** 1.85 [77] * **多空年化收益率:** 109.12% [77] * **多空夏普比率:** 5.84 [77] 5. **GRU+Mamba+GFlowNet集成模型** [90][94] * **RankIC:** 13.67% [94] * **ICIR:** 1.27 [94] * **多头年化超额收益率:** 32.88% [94] * **多头信息比率:** 3.87 [94] * **多头超额最大回撤:** 7.83% [94] * **多空年化收益率:** 166.31% [94] * **多空夏普比率:** 10.21 [94]