一、因子挖掘与 OpenFE 框架介绍
1. 扩张阶段(Expansion)
2. 缩减阶段(Reduction)
二、OpenFE 高频因子挖掘实现方案
1. 高频因子拆解及构建
2. 日频因子的进一步低频化
3. 因子计算及检验
三、因子测试效果
1. 日频因子测试
2. 周频因子表现
3. 作为 LGBM 模型的特征输入
四、基于OpenFE框架构建挖掘因子的中证1000选股策略
1. OpenFE 高频因子LGBM策略表现
2. 结合日频特征LGBM模型后OpenFE高频因子LGBM策略表现
总结
风险提示
因子挖掘与 OpenFE 框架介绍
我们在前期报告中进行了部分高频因子构建研究,但部分在日频量价因子中可以使用的自动化挖掘模式,如遗传规划等,在高频领域实现有较大困难。在本篇报告中,我们借鉴OpenFE的框架,实现对高频因子的批量化挖掘。该框架介绍了一种在机器学习领域自动化生成特征的通用方法,将基本特征转换为信息量更大的特征,投喂各类模型后能获 得更好效果。该框架提出了先扩张(Expansion)再缩减(Reduction)的方案,并将缩减过程分为两步(连续二分法和特征重要性归因)。
在扩张阶段,框架会使用我们设计的所有算子进行特征遍历,一次性得到大量特征。在缩减阶段,首先使用连续二分法对样本数据随机采样,随着轮次增加,所用样本长度逐渐提升、特征数量逐渐减少。同时使用FeatureBoost避免每次都使用所有特征投喂 LGBM 进行特征有效性验证,两种方式结合大幅提升了特征筛选效率。
OpenFE 高频因子挖掘方案
经过统计、归纳发现,大部分高频因子均可表示成 Mask、基础特征和聚合算子的组合形式。我们梳理归纳了主流的 Mask 和聚合算子,使用高频数据的字段进行遍历生成备选特征。经过对比可以发现,大部分高频因子均可由此方式组 合得到。在计算阶段,我们将数据首先转换为tensor转移至GPU使用torch计算,运算速度得到大幅提升。在验证阶段,我们为了保证效率,使用IC作为评价指标进行逐步特征剔除。
OpenFE 高频因子测试结果与选股策略
从测试结果发现,由此方法所得因子整体均有较好的选股效果。因子的周度IC均值ABS平均为2.57%。而若将这些因子作为特征输入LGBM模型,整体表现能有进一步提升,IC均值6.42%,多头年化超额 7.87%。对比前期报告中LGBM使用 Alpha158 和 GJQuant 所得因子,合成后因子表现还能有所改善,IC 均值 8.76%,多头年化超额 19.34%,多头超 额回撤仅为 3.86%,多空年化收益率 67.08%,多空最大回撤 16.98%。
考虑扣费后,所构建的中证 1000 选股策略在 2022 年-2024 年 10 月长期的市场波动中,获得了 8.62%的年化超额收益 率,策略的信息比率 0.77,超额最大回撤 11.95%。说明使用上述方法所得高频因子在经过 LGBM 模型训练后,可以在 中证 1000 股票池中获得相对较稳定的超额收益。结合我们前期报告中所使用特征数据 Alpha158 和 GJQuant 所得模型 的合成因子构建策略,年化超额收益率为 13.68%,超额最大回撤仅为 4.38%,信息比率为 1.98。
风险提示
1、 以上结果通过历史数据统计、建模和测算完成,在政策、市场环境发生变化时模型存在时效的风险。
2、 策略通过一定的假设通过历史数据回测得到,当交易成本提高或其他条件改变时,可能导致策略收益下降甚至出 现亏损。
在量化选股领域中,因子挖掘与机器学习模型训练是两种主流的获取 alpha 方式。在前期报告中,我们进行了部分有一定逻辑的高频因子挖掘,同时也有一部分基于机器学习模型 的选股研究,然而在日频量价和财务基本面信息作为数据输入的情况下,模型的选股效果 已经达到了一个瓶颈,难以再有质的提升。A 股的高频数据由于更详细的展示了 A 股微观 结构与投资者交易行为,数据包含了除传统日频 K 线以外的更多字段,是近些年获取更多超额的主要来源。
目前,针对高频量价因子的挖掘,业界的主流做法是结合论文等文献中介绍的逻辑,结合行为金融学的相关理论进行因子构建、测试并最终筛选、合成。由于高频数据量相较日频大很多,整个过程比较耗时,难以像日频量价因子一样进行快速构建、测试。因此,部分在日频量价因子中可以使用的自动化挖掘模式,如遗传规划等,在高频领域实现有较大困难。
在本篇报告中,我们尝试借鉴 OpenFE 的框架,实现对高频因子的批量化挖掘。OpenFE(T Zhang et al,2022)介绍了一种在机器学习领域自动化生成特征的通用方法,将基本特征 转换为信息量更大的特征,投喂各类模型后能获得更好效果。 该框架提出了先扩张(Expansion)再缩减(Reduction)的方案,并将缩减过程分为两步(连续二分法和特征重要性归因)。
与传统遗传规划类方法类似,OpenFE 需要先根据业务情况,设计好若干算子用来对单个基本特征或多个特征进行各类运算。典型的有加、减、乘、除、开方、次幂等。并针对所有基础特征对所有算子进行遍历,得到了数量较多的备选特征。
举例而言,若原有基本特征N个,对于一元算子“平方根”,需要对每个基本特征遍历,得到N个备选特征。对于二元算子“乘”,则会产生C_n^2个备选特征。根据该算子是否对称,也有可能会产生C_n^2个备选特征。
此外,也可以根据实际需要,将上述过程中得到的备选特征再嵌套一层算子,得到数量更多的二阶特征或更高阶特征。
由于扩张阶段产生了大量的特征,直接全部运算会极其耗时,因此作者提出了连续二分法(Successive Halving)将所有数据首先分成2q个block,在每一轮次中,随机抽取2i数据,进行特征计算和特征有效性检验。
而在有效性检验阶段,作者提出了FeatureBoost方案。在传统特征检验时,为确保该特 征的评价不会受到特征之间交互的影响,一般会首先使用所有基础特征(BF)训练一个LGBM模型,得到一个Loss作为baseline。而在验证阶段时,将所有基础特征+某一个备 选特征投喂给LGBM模型重新训练,得到一个新的Loss,将两个Loss作差,检查其是否 得到提升。而OpenFE中,作者只将某一个备选特征投喂模型,使模型学习之前基础特征 所训练好的模型的残差,若学习后能使损失下降,则也可以说明该特征的重要性。
因此,结合了以上连续二分法和FeatureBoost后,因子的运算和检验耗时可以得到大幅度缩减。在每一轮次,将当前备选特征数量缩减至原本的一半后,下一轮次的样本数量扩充至原来的两倍,特征数量减半。
此过程进行若干轮次后,直至所有样本均已被用来计算或特征数量已经少于我们希望的最小特征数量,即可停止该缩减过程。最终,为了全面考虑备选特征和基础特征之间可能存在的交互影响,再将宿友所有基础特征和剩余备选特征一起放入一个LGBM模型重新训练,筛选重要性最高的特征作为最终结果。
总结而言,传统的遗传规划方法会先判断一阶特征的有效性,筛选更优秀的“基因”继续繁衍生成高阶特征。我们认为,在量化领域,一个看起来无效的一阶特征并不一定不能衍生出优秀的高阶特征,两者之间并没有必然联系,这种方案会导致潜在的优秀特征遗漏。
而OpenFE一次性就生成了所有潜在(一阶)特征,若需要生成高阶特征,则不对其父特征做有效性判断,尽可能地做到了全面检验。当然,由于生成阶段不做任何筛选,因子的复杂度(阶数)就不可能过高,最终的因子公式也不会过长,也在一定程度上避免了过长的因子公式带来的可解释度下降的问题。
接下来,我们将以上框架在量化高频因子挖掘领域进行尝试探索。整个过程分以下几步完成:
我们首先对目前市场上的主流高频因子构建方法进行归纳,发现绝大部分高频因子可以由 以下几个部分组成:Mask、基础特征和聚合算子。
所谓Mask,即我们对于高频数据按照一定规则进行截取,这是由于往往同样的特征在不 同的时间区间、不同的价格区间会有截然不同的表现,部分情况下效果甚至可能反向。常见的Mask 包括:高(低)价格区间、早(尾)盘、高(低)成交量区间等。
基础特征:即数据中原本包含的字段,如高频快照中的高开低收成交量、订单簿的委托价 委托量、逐步数据中的成交价成交量等,是我们进行因子计算的基础。
聚合算子:由于 A 股中我们不做高频交易,按照惯例均需要通过一定方式将其聚合至日频 得到一个日频因子。常见的聚合算子包括:求和、均值、标准差、高阶矩、Argmax、PctChange 等。
有以上结构,我们便可以穷举出几乎所有的高频后低频化因子。此处举例说明一二:
在我们前期报告中,曾构建过遗憾规避因子,其构建思路为:将当天逐笔成交数据中所有 高于收盘价的成交量取出,求出其对于当天整体成交量的占比,以此来衡量某只股票买入浮亏情况。
套入上述结构,Mask为“高于收盘价”,基础特征为“逐笔成交的成交量”,聚合算子为 “求和”,而分母部分则即可以通过设置一个Mask为空的结构求和得到,也可以直接用日 K 线数据得到。
在该篇报告中,我们还将因子进一步加工进行改进,通过小单和微盘的限制提升了因子表现:
则类似地,此处使用的 Mask 还有“低于笔均成交量”和“成交时间在下午2:30 以后”,我们将多个Mask结果取交集即可得到该因子。
此外,价格区间因子也可以通过以上结构计算得出,我们将一天中所有成交的成交价格排序,分别取出前 20%、中间 60%和后 20%的数据,作为Mask后再计算成交量的求和即可。
由于我们一般调仓频率为周度或月度,获得日频因子后依然需要通过一些方案进一步降频,使其包含更多历史信息,通常才会有更优的长周期预测表现。同时,原始的日频 K 线数据依然可以与高频降频后的日频因子进行结合,因此,我们额外设计了合适的算子进行处理。
此处的算子与传统的遗传规划用算子比较类似,可以分为一元、二元、截面、时序四大象限。此处展示部分算子:
时序算子中的额外参数回看天数d,我们设置为 5,10,20,60,从中进行遍历。并对明显不符合逻辑的特征与算子结合方案进行负面剔除,得到最终所有备选因子,不考虑多个Mask取交集的情况下,因子数量约在 8000 万左右。整体因子构建过程可由下图说明:
不过,值得说明的是,上述结构严格限制了因子的构建顺序:Mask→基础特征→聚合→进一步可与其他因子进行算子运算。若我们希望构建如下形式的订单簿不平衡类因子:
此类因子涉及多个基础特征的简单运算后再进行聚合降至日频,在部分情况下可能与先聚 合再进行简单运算得到因子的结果有明显差异。若在聚合之前就加入算子运算的步骤,会 进一步大幅度膨胀因子数量,在本篇报告中我们暂不考虑。
在遍历得到大量因子后,我们借鉴 OpenFE 的缩减思想,采用连续二分法,从少批量的样 本开始,每轮逐步扩充样本数量,逐步减少因子数量。值得一提的是,该框架本身并非为量化领域设计,对于样本的采样并未按照所属时刻进行统一,可能会导致所得到样本在时 间和股票两个维度上完全分散,在计算IC或时序类算子时会出现问题。
因此我们将采样方案修改,假设我们共有8年中证 1000 股票池所有高频数据作为整体 的样本。我们每次采样均只对时刻这一个维度进行采样,保证同一时刻的截面所有股票可以同时进入样本池。则每轮的样本长度可能变为:半年,1 年,2 年,4 年,… 。其逻辑在于,若一个因子在连续半年的时间都没有足够的有效性,我们就不再给其更多的时间长度 进行检验,只对排名靠前的因子进行时间长度扩充进一步检验。
此外,由于高频数据的数据量过大,即便是只运算半年的时间长度,依靠传统 pandas 库 方式运算大量因子依然不现实。我们将数据首先转换为 tensor 形式,转移至 GPU 后,使 用 torch 进行因子批量计算。且对样本长度进行判断,若数量过多超出 GPU 显存,则分 Batch 运算再拼接,保证运算速度不受影响。经过检验发现,计算速度相较于传统方案有 数百倍增长。不过,在因子检验阶段,如果我们坚持使用 LGBM 模型,进行 FeatureBoost 检验,则会涉及数据从 GPU 向 CPU 传输再训练模型的过程,又会严重降低整体运行速度。 而若站在有效单因子挖掘的角度来看,我们可以将因子的 IC 等指标计算在 GPU 中使用 torch 完成,则整体速度依然可以保持在较高水平。
当然,使用IC会损失潜在有用的非线性、可能单因子效果不好但投喂模型具有价值的因子,但由于笔者未能找到直接将GPU上的tensor作为LGBM模型输入的方案,大规模检验 的速度过慢。在本篇报告中,我们暂时使用IC检验的方案,针对一部分备选因子完成运 算后进行最终效果的测试。使用IC检验时,我们就不再严格对每轮因子进行减半筛选, 而是保留 T 统计量大于3的所有因子。
由于整个过程分两步,我们首先对所得日频因子进行检验。我们使用的高频数据自2016年开始,计算均截至2024年10月底。股票池为中证1000股票池,使用未来一天收益率 作为 Label 进行检验。通过上述方案生成备选因子,我们随机选择1万个因子进行检验测试,最终得到约 350 个因子满足 T>3 的条件。所得因子的部分指标取绝对值后统计均值情况如下:
可以发现,所得因子整体表现尚可,对每个因子的 IC均值取绝对值后再对所有因子求均值为1.13%,T统计量为6.63。不过,可能跟我们筛选因子所用IC指标有关,因子整体多头年化超额并不高,收益表现一般。我们选取部分绩优因子展示效果如下:
2. 周频因子表现
在日频因子的基础上,我们使用部分简单算子进行降频处理,使其包含更久的历史信息后 进行周度调仓测试。
可以发现,周频因子整体IC均值更高,因子的收益水平也有一定提升。部分绩优因子效 果展示如下:
整体而言,使用以上方法可以相对高效地批量获取高频因子,作为现有因子库的有效补充。
3. 作为LGBM模型的特征输入
不过,仅通过IC单一指标筛选有效因子一方面会造成部分非线性因子的浪费,另一方面,若我们希望将因子作为特征投喂进入类似LGBM类模型是否依然合适可能也是潜在的问题, 接下来我们尝试将上述过程中所得300余个因子作为特征输入进行训练。
由于涉及到模型训练,我们对数据集进行了区间划分,以2016-2019年作为训练集、2020-2021年作为验证集、2022年以来作为测试集,以下仅展示测试集效果。其他的特征和标 签预处理方式、损失函数等均可参考我们前期报告《Alpha掘金系列之十:机器学习全流程重构——细节对比与测试》结论。以下为模型预测所得因子在中证 1000 成分股上的表现:
因子在样本外整体表现优秀,使用OpenFE 所得因子 IC 均值为6.42%,多头年化超额7.87%,多头超额回撤5.96%,多空年化收益率38.45%,多空最大回撤16.72%。
此外,为进一步观察与日频量价特征、基本面特征叠加后的效果, 我们将前期报告中LGBM模型使用Alpha158和GJquant 数据集训练所得因子同步测试进行对比,并将 OpenFE 所得 因子等权合成观察因子表现变化,发现加入 OpenFE 因子后,整体表现能有进一步提升。
合成后因子IC均值 8.76%,多头年化超额19.34%,多头超额回撤仅为3.86%,多空年化收益率67.08%,多空最大回撤16.98%。
从因子净值曲线看,整体表现平稳,在2024 年10月份出现明显回撤,其余时间超额走势稳定。
四、基于 OpenFE 框架构建挖掘因子的中证 1000 选股策略
为了探究本文利用OpenFE挖掘得到的高频因子实际交易效果,我们将上述投喂至LGBM训练所得因子构建中证1000指数选股策略。回测期为 2022 年 1 月至2024年10月,以每周第一个交易日的开盘价买入进行周频调仓。
每次对前10%的股票等权买入,以中证 1000 指数为基准进行比较。同时为有效降低换手率过高给策略收益带来的负面影响,我们加入换手率缓冲的调整方式降低调仓成本。在双边千分之三的手续费率下,测试结果如下。
策略在 2022 年—2024 年10月长期的市场波动中,获得了8.62%的年化超额收益率,策略的信息比率0.77,超额最大回撤11.95%。说明使用上述方法所得高频因子在经过 LGBM 模 型训练后,可以在中证 1000 股票池中获得相对较稳定的超额收益。
2. 结合日频特征 LGBM 模型后OpenFE 高频因子 LGBM 策略表现
为进一步观察因子结合我们前期报告中所使用特征数据 Alpha158 和 GJQuant 所得模型的 效果,我们将上文中合成后因子 LGBM_OpenFE_Alpha158GJQuant 用于构建选股策略,该策 略同样考虑周度调仓。回测期为2022年1 月至 2024 年10月,以每周第一个交易日的 盘价买入进行周频调仓。
每次对前10%的股票等权买入,以中证 1000 指数为基准进行比较。同时为有效降低换手 率过高给策略收益带来的负面影响,我们加入换手率缓冲的调整方式降低调仓成本。在双边千分之三的手续费率下,测试结果如下。
可以看出,策略稳定性得到进一步提升,年化超额收益率为13.68%,超额最大回撤仅为4.38%,信息比率为1.98。
在本篇报告中,我们探索使用了OpenFE框架并对其进行一定改写,使其可以用于量化高频选股因子的挖掘。在一定程度上解决了过往高频因子挖掘效率较低、难以快速、高效迭代的弊端。该框架提出了先扩张(Expansion)再缩减(Reduction)的方案,并将缩减过程 分为两步(连续二分法和特征重要性归因)。
我们认为大部分高频因子均可表示成Mask、基础特征和聚合算子的组合形式,我们梳理归纳了主流的Mask和聚合算子,使用高频数据的字段进行遍历生成备选特征。经过对比 可以发现,大部分高频因子均可由此方式组合得到。在计算阶段,我们将数据首先转换为tensor转移至GPU使用torch计算,运算速度得到大幅提升。在验证阶段,我们为了保 证效率,使用IC作为评价指标进行逐步特征剔除。
从测试结果发现,由此方法所得因子整体均有较好的选股效果。因子的周度 IC 均值 ABS 平均为 2.57%。而若将这些因子作为特征输入 LGBM 模型,整体表现能有进一步提升,IC 均值 6.42%,多头年化超额 7.87%。对比前期报告中 LGBM 使用 Alpha158 和 GJQuant 所得 因子,合成后因子表现还能有所改善,IC 均值 8.76%,多头年化超额 19.34%,多头超额回 撤仅为 3.86%,多空年化收益率 67.08%,多空最大回撤 16.98%。
最终我们将该因子用于构建中证 1000 选股策略,年化超额收益率为 13.68%,超额最大回 撤仅为 4.38%,信息比率为 1.98。
1. 以上结果通过历史数据统计、建模和测算完成,在政策、市场环境发生变化时模型存在失效的风险。
2. 策略依据一定的假设通过历史数据回测得到,当交易成本提高或其他条件改变时,可能导致策略收益下降甚至出现亏损。
Alpha掘金系列
1.《Alpha掘金系列之十二:排序学习对GRU选股模型的增强》
2.《Alpha掘金系列之十一:基于BERT-TextCNN的中证1000舆情增强策略》
3.《Alpha掘金系列之十:细节决定成败:人工智能选股全流程重构
》
4.《Alpha掘金系列之九:基于多目标、多模型的机器学习指数增强策略》
5.《Alpha掘金系列之八:FinGPT对金融论坛数据情感的精准识别——沪深300另类舆情增强因子》
6.《
Alpha掘金系列之七:ChatGLM医药行业舆情精选策略——大模型微调指南》
7.《Alpha掘金系列之六:弹性与投资者耐心——基于高频订单簿的的斜率凸性因子》
8.《Alpha掘金系列之五:如何利用ChatGPT挖掘高频选股因子?》
9.《Alpha掘金系列之四:基于逐笔成交数据的遗憾规避因子》
10.《Alpha掘金系列之三:高频非线性选股因子的线性化与失效因子的动态纠正》
11.《Alpha掘金系列之二:基于高频快照数据的量价背离因子
》
12.《Alpha掘金系列:多维度卖方分析师预测能力评价——券商金股组合增强策略》
证券研究报告:《Alpha掘金系列之十五:基于openFE框架的机器学习Level2高频特征挖掘方法》
对外发布时间:2025年1月19日
报告发布机构:国金证券股份有限公司
证券分析师:高智威
SAC执业编号:S1130522110003
邮箱:gaozhiw@gjzq.com.cn