2024年量化策略研究:DFQ机器学习行业轮动模型
- 来源:东方证券
- 发布时间:2024/11/19
- 浏览次数:826
- 举报
量化策略研究:DFQ机器学习行业轮动模型.pdf
量化策略研究:DFQ机器学习行业轮动模型。以基本面为主的行业轮动策略表现不佳:DFQ工业类行业轮动体系基于38个证监会二级行业构建,转化为中信一级行业后会损失较多信息。2020年以来top5行业组合年化超额仅为3.33%。行业动量轮动策略近两年表现不佳:DFQ行业动量轮动策略2020年以来top5行业组合年化超额仅为3.68%,2023和2024年均未获正超额。用机器学习选股因子合成行业因子将机器学习模型训练出的选股因子,按个股市值加权,合成为行业因子,进行行业轮动。vae、xgb模型的多头端top5行业组合整体表现较好,2020年以来top5行业组合年化超额收益可达10%以上。但由于模型的选...
一、 行业轮动的必要性
我们统计了 29 个中信一级行业在 2020-2024 年度的分年收益。可以看到:(1)不同年份的 强势行业迥异,各行业在不同时期都呈现出了阶段性的投资机会。(2)各年度不同行业涨幅差 异巨大,最强和最弱行业年度涨幅平均相差 66.89%。2024 年截止 9 月底中证全指涨幅仅为 7.24%,而强势的银行业涨幅达到 35.01%。可见,行业轮动蕴含的收益较为可观。

DFQ 工业类行业轮动策略的中观行业数据维度中,使用到了国家统计局公布的工业企业财务 数据。该数据月度发布,相较于上市公司季报,时效性更高,生成的行业因子效果明显优于上市 公司财报因子,属于行业层面的特有因子。但也存在两个弊端:(1)统计局公布的工业企业行 业分类与上市公司通常使用的行业分类方式有一定差异,无法直接匹配到常用的中信行业,因而 该策略是基于 38 个证监会二级行业进行的。(2)统计局公布的工业企业数据只包含工业类企业, 不包括第一产业(农林牧渔)和第三产业(服务业),行业覆盖不全。 下面我们通过个股加权的方法,将 38 个证监会二级行业因子得分转化成 29 个中信一级行业 因子得分。首先提取每个中信一级行业的成分股,而后将每个成分股的证监会二级行业因子值, 进行市值加权,从而得到中信一级行业因子值。共 24 个中信一级行业可以获得有效得分。绩效测 试前将因子值进行截面标准化,缺失值用 0 填充。
二、 用机器学习选股因子合成行业因子
在之前的报告《DFQ-TRA:多交易模式学习因子挖掘系统》、《DFQ-HIST:添加图信息的 选股因子挖掘系统》、《DFQ-FactorVAE:融合变分自编码器和概率动态因子模型的 alpha 预测 方案》、《DFQ-XGB:基于树模型的 alpha 预测方案》中,我们设计了一系列机器学习模型来预 测股票收益。训练时,我们对于预测标签和输入特征都没有进行行业中性化操作,因而各模型都 会学到行业轮动的收益。
基于此,我们可以将这些机器学习模型训练出的选股因子合成为行业因子,进行行业轮动。 具体做法是:首先将选股因子匹配到每日的中证全指股票池,而后进行横截面数据预处理,依次 做 Boxplot 异常值处理、zscore 标准化、用 0 填充缺失值。最后按个股市值进行加权得到行业因 子。
总体来看,使用选股因子合成得到行业因子是一个可行的方案。但由于模型的选行业能力只 是选股的副产品,行业轮动因子是否有效很大程度上取决于运气,使用起来不够稳健。 如果直接以行业为标的,数据量相对较少,机器学习模型训练不够稳健,容易过拟合或统计 量不稳定。遗传规划可能是一个解决方案。
三、 DFQ 遗传规划行业因子挖掘系统介绍
在之前的报告《DFQ 遗传规划价量因子挖掘系统》中,我们开发出了一套高效的 DFQ 遗传 规划因子挖掘系统。此次,我们将DFQ遗传规划因子挖掘系统,迁移到行业上,挖掘行业因子。
3.1 算法介绍
DFQ 遗传规划因子挖掘系统,加入自定义的特征和算子,指定适应度指标,从一个随机公式 种群出发,可以通过多代进化得到更优的子代公式。挖掘过程可以重复多轮,从而可以得到多个 适应度高、低相关、有显式表达式的选股因子。模型以 gplearn 为基础进行改进,使用 SymbolicTransformer 模块实现因子挖掘过程。 由于在进化过程中缺乏明确的目标引导,常规的遗传规划算法进化效率低下。如何能提升进 化效率,在有限的算力,有限的时间内,进化出更多、更好、更短、更低相关的因子,是算法的 核心痛点,也是 DFQ 模型的核心改进点。我们提出了 7 点改进:
(1)提升初始种群质量
改进理由:初始种群的质量直接影响算法的收敛速度和最终结果的有效性。初始依靠随机生 成的公式中有大量无效因子,从无效因子出发更加难以进化出有效的因子。 改进做法:扩大搜索范围,挑选表现较好的初始种群作为“精英种群”,用于后续进化过程。
(2)提升每代种群质量
改进理由:每代的种群质量提升是遗传算法成功的关键。常规遗传规划算法的变异机制缺乏 方向性,可能导致子代的退化,无法保证种群质量逐代提升。 改进做法:1)增加父子竞争机制,子不如父,优先保留父代。2)对未获得进化机会,但表 现优秀的父代进行额外保留。
(3)提升每代产生的有效公式数量
改进理由:在父子竞争的模式下,同一父代可能会被重复保留,强势基因不断扩散,每一代 会产生许多重复公式。这种进化过程中的趋同现象减少了种群的多样性,降低了挖掘效率。 改进做法:减少父代被重复选中的概率,避免多次保留重复父代等,以保持种群的多样性。
(4)避免公式膨胀
改进理由:过长的因子不仅难以解释逻辑,过拟合的风险也更大。gplearn 中的默认参数 init_depth 只能控制初始种群的深度,无法对变异进化后的子代进行长度限制。高代数进化随之带 来的就是公式膨胀问题:1. 几种变异都可能会让公式变长;2.大种群下长度和适应度有一定的正 相关,大概率对公式堆叠长度会小幅提升因子表现,从而使得长公式更容易被保留。 改进做法:1)对变异算法进行修改,降低明显拉长公式的变异过程出现的概率;2)在适应 度中加入适当的长度惩罚,降低冗长公式的保留概率,避免只变长不变好的无意义进化。
(5)动态调整每代进化参数
改进理由:固定的进化参数可能不适应所有阶段的进化需求,影响算法的灵活性和效率。 改进做法:根据前一代的进化结果动态调整进化参数,以提高进化效率。
(6)降低挖掘因子的相关性
改进理由:通常会进行多轮挖掘,不同轮次可能进化出相似的子代。保留大量高相关性的因 子,造成了算力浪费,限制了新因子的发现。 改进做法:在算法中加入对于相关性的考量:1)内部相关性惩罚:在适应度中对相关性进 行惩罚。如果当前因子和已有因子的相关性超标,直接将该因子的适应度归 0;2)外部相关性筛 选:每轮结果后将已有轮次的所有挖掘结果进行合并,按照适应度和相关性对因子库进行精简, 以保持因子库的独特性和有效性。
(7)避免无效运算
改进理由:遗传规划算法在公式生成时随机性强,特征和算子间会随机组合,形成各种意想 不到的形式。即使输入的特征没有缺失值,运算之后也可能出现缺失值。如果不对算子进行优化, 可能会花了很长时间来挖掘,结果一轮挖出后的因子大部分都缺失。 改进做法:对算子、适应度的算法进行优化,考虑到各种不合理输入的情况,保证对缺失值 的兼容性,避免无效运算。同时对算子和适应度算法进行加速,提升挖掘效率。

《DFQ 遗传规划价量因子挖掘系统》研报,利用 DFQ 遗传规划因子挖掘系统,进行了选股 因子挖掘。在进行选股因子挖掘时,进行一轮 15 代完整挖掘用时 5-24 小时不等,一轮完成后可 产生 20-50 个适应度(行业市值中性化 rankic)超过 5%,且互相间相关系数不超过 50%的单因 子。采用 2012.1.1-2016.12.31 年 5 年数据作为训练集,共挖掘得到 152 个达标因子。由于算力 限制,当时并未进行滚动挖掘。下面我们展示合成因子在 17 年之后的绩效表现。可以看到:(1) 样本外 2017-2023 年模型表现较为稳定,并未观察到明显的衰减,RANKIC 都在 11%以上。(2) 2024 年模型表现不佳,RANKIC 下滑到 6%,多头并未获得正超额。但 2024 年的模型表现与风 格暴露相关,并不完全代表因子失效。
3.2 模型参数
1. 行业标的
留其他 29 个行业。分组采用[5, 6, 7, 6, 5]的方案,多空两端均为 5 个行业,超额计算基准为 29 个行业的等权组合。
2. 调仓频率
考虑到之前基本面和动量的行业轮动策略都是按月频调仓测试的,并且之前的机器学习选股 策略也是月频。为了方便对比,此次我们依然挖掘月频因子,考察因子预测未来 20 个交易日的 行业指数收益时的表现。样本外回测时,统一按月末交易日调仓。
3. 训练区间
考虑到行业场景下样本量少,训练集不能设置太短。另外高质量的 L2 数据从 2013 年下旬才 能够获取。为保证训练集上的数据覆盖度,我们采用 2010.1.1-2019.11.30 共十年的日度数据作 为训练集,从 2019.12.31 开始作为样本外测试集。需要注意的是训练集和测试集之间需要至少间 隔 20 个交易日,避免引入未来信息。 下图展示了以 2010.1.1-2019.11.30 为训练集,挖掘出的共计 50 个符合适应度要求的单因子, 在样本外的表现。可以看到,样本外出现明显衰减。50 个单因子在样本外第一年 top5 行业组合 超额收益达到 5%,第二年开始就不再有明显超额。因而我们采用滚动挖掘的方式,每隔一年重 新挖掘一遍因子。训练集采用滑动窗口的方式,长度固定 10 年,每次向后挪一年。
4. 行业特征
之前的报告《DFQ 遗传规划价量因子挖掘系统》中,我们共设计了 47 个特征。本次我们对 特征库进行了扩充,当前共计使用 145个特征。包括行业指数特征 29个,个股加权特征 116个。 个股加权特征包括日度量价特征 4 个、日内分钟量价特征 89 个、日内 l2 量价特征 13 个、基本面 特征 10 个。特征选择的标准是数据更新频率高,在日度时序上有变化。涉及的最高价、最低价、 开盘价、收盘价、成交量均进行后复权,避免使用前复权数据引入未来信息。对部分特征进行了 适当量纲调整。不对特征进行相关性筛选。
5. 行业特征预处理
对于行业指数特征和个股加权特征,我们采用不同的预处理方法: (1)行业指数特征:截面上进行稳健 Zscore 标准化,以 0 填充缺失值的操作。考虑到横截 面上只有 29 个样本点,异常值识别可能不准确,因而我们使用中位数和中位数绝对偏差(MAD) 来替代常规 Zscore 标准化使用的均值和标准差,降低异常值对标准化结果的影响。 (2)个股加权特征:首先将个股特征匹配到每日的中证全指股票池,而后在横截面上对个 股特征进行 boxplot 去异常值,zscore 标准化,以 0 填充缺失值等操作。再将个股特征进行市值 加权得到行业特征。最后在截面上对行业特征进行稳健 Zscore 标准化,以 0 填充缺失值的操作。
6. 行业算子
之前的报告《DFQ 遗传规划价量因子挖掘系统》中,我们共设计了 81 个算子。本次我们对 算子库进行了扩充,当前共计使用 140 个算子。包括 gplearn 自带算子 14 个,自定义算子 126 个。算子设计需要充分考虑缺失值兼容性及运算效率。自定义算子包括: (1)元素运算 12 个:以激活函数、逻辑运算符为主; (2)截面运算 41 个:根据算子运算所需的特征个数,进一步分为四个小类:一元截面 13 个、二元截面 12 个、三元截面 7 个、四元截面 9 个; (3)时序运算 74 个:根据算子运算所需的特征个数和窗口个数,进一步分为六个小类:一 元时序 46 个、一元时序 2 常数 1 个、二元时序 20 个、二元时序 2 常数 4 个、二元时序 3 常数 1 个、三元时序 2 个; 此次我们额外增加了截面和时序的切割算子。切割算子体现了分域的建模的思想,在选股中 效果较好。 时序算子的计算窗口期设置为 6个选项:1,5,10,20,40,60。我们只希望常数出现在时 序算子的指定位置上,不允许常数和特征进行截面运算,因而并不在默认参数 const_range 中设 置常数,而是在底层代码中修改添加。
7. 行业适应度
使用 20 个路径下多头(top5)行业组合的月均超额收益的最小值作为适应度,阈值为 0.5%。 (1)多头表现:由于横截面上只有 29 个样本点,ic 等相关系数指标可能不稳健,并且相对 来讲我们也更加关注多头组的表现,因而此次使用多头月均超额收益作为适应度。 (2)缺失率:由于横截面上只有 29 个样本点,有较多缺失值的话容易导致因子无法分组, 绩效度量有偏差,因而我们降低对于缺失率的容忍度,如果 2015 年以来有任何一天缺失率达 50% 以上,适应度置为 0。2015 年以前如果当天缺失率达 50%以上,则剔除该日。(3)路径:为避免路径依赖的影响,计算 20 个不同调仓路径下的 top5 多头月均超额收益, 取最小值作为适应度。 (4)相关性:在适应度中加入相关性惩罚,计算当前因子和已挖因子(之前轮次保留下来 的有效因子)的 spearman 相关系数。若相关系数绝对值中位数大于 0.9,则将适应度置为 0,避 免挖掘与多数已有因子都严重高相关的因子。同时考虑到横截面上只有 29 个样本点,相关系数指 标可能不稳健,因而适应度中不再额外惩罚相关性; (5)rankic:在适应度中加入对于 rankic 的考察,保证因子单调性。若该因子 rankic 绝对值 小于 0.03,直接将适应度置为 0。 (6)加速:使用 Numba 对多头组计算进行加速。Numba 最适合加速大量的数值计算,尤 其是那些可以利用向量化操作的场景。
四、 DFQ 遗传规划行业因子挖掘系统效果分析
4.1 模型运行效率
遗传规划算法挖掘过程中,可能生成大量重复因子,尤其是随机生成初始种群的时候。每次 生成因子后,都需要计算该因子的适应度,这就可能产生大量重复计算。因而,此次我们对模型 进行了改进:将每次的单因子表达式和适应度进行缓存。在计算适应度之前,首先从保存的本地 缓存数据中查找,如果因子之前已存在,适应度数据直接调用即可,无需重复计算。 改进后运算效率大幅提升,原来进行一轮 15 代完整挖掘需要 20min 左右,修改后仅需 5min, 并且挖的越多缓存越丰富,对效率的提升越明显。需要注意的是,模型运行用时与随机公式的复 杂度、随机算子的计算效率、cpu 性能有关,每轮的用时不会完全一致。本次测试所用机器为 Intel Xeon Gold 6242R CPU3.10GHZ,256G 内存的服务器,挖掘时并行 36 核。
下面我们展示某轮挖掘的运行信息:(1)第 0 代初始种群的平均适应度达到 0.25%,最优公 式适应度达到0.49%,说明对初始种群质量的提升有效;(2)随着代数增多,种群平均适应度和 最优适应度都在逐渐提高,进化在逐代变优,说明对种群质量的提升有效;(3)每代保留的适 应度超过 0.5%的公式个数也在不断增多,到第 15 代,我们已经可以获得 100+个适应度超过 0.5% 的个体。表格展示的数字都是去重后的,不存在同代重复个体的影响。说明我们对每代产生有效 公式数量的提升有效;(4)最优公式长度控制在 10 以内,说明我们对公式膨胀问题的处理有效; (5)15 代进化总用时 6min,第 0 代用时最长达到 4.61min,后面 15 代平均用时 5s。这一轮完 成后,经过外部相关性筛选,共保留 6个适应度超过 0.5%,且互相关系数不超过 50%的单因子。
4.2 单因子表现
由于算力限制,在撰写这部分时我们每年分别挖掘出了 50 个左右训练集适应度超过 0.5%, 且互相间相关系数不超过 50%的单因子。首先我们展示每年挖掘出的单因子,在测试集一年里的 月均多头超额收益表现。 可以看到,不同年份单因子表现不尽相同,但都会面对单因子样本外效果衰减的情况,并且 单因子表现分化较明显,极差较大: (1)整体来看,2020-2024 年用到的 277 个单因子中,样本外月均多头超额收益中位数为 0.15%,60%的单因子样本外月均多头超额收益为正,30%的单因子样本外月均多头超额收益超 过 0.5%。表现最好的单因子月均多头超额收益达到 2.73%,表现最差的单因子月均多头超额收益 达到-2.42%。 (2)2020、2024 年单因子样本外表现较好,平均月均多头超额收益达到 0.5%左右,近 50% 的单因子样本外月均多头超额收益超过 0.5%。 (3)2021、2022、2023 年单因子失效情况严重,平均月均多头超额收益在 0 附近,仅有 20%左右的单因子样本外月均多头超额收益超过 0.5%。
我们统计了每一年所用的单因子中,各个运算符(特征、算子、常数)出现的次数。 (1)每年单因子中,平均会用到 150 个运算符。我们设置的运算符空间总数为 291,仍存在 一些无效运算符。可以根据挖掘结果对运算符空间进行精简。 (2)常数的出现频率都很高,并且 60 日出现频率更高。说明在行业因子构造中,偏中长期 的时序信息更加有效。 (3)算子中,ts_ewm(过去 d 天的指数平滑加权均值,反映该行业短期内的变化趋势)、 ts_rank_amean ( 过 去 d 天 截 面 排 名 的 算 数 平 均 , 反 映 该 行 业 特 征 的 相 对 强 弱 ) 、 ts_negmax_sum(过去 d 天的最大值取反之后再求过去 d 天的和,通过“反转最大值”来关注行 业的潜在问题或风险,反映了行业可能的负面趋势)、ts_negmin_sum(过去 d 天的最小值取反 之后再求过去 d 天的和,通过“反转最小值”来关注行业中的潜在机会,反映了行业可能的正面 趋势),这 4 个算子每年的出现频率都很靠前。说明这些是构造行业因子比较重要的运算结构。 (4)特征中,l2c14(早盘大单买入占比,5%阈值)在每年的出现频率都很靠前。说明刻画 资金流的高频特征对于构造行业因子较为重要。2023、2024 年 WFR(加权的分析师预期调整) 特征的出现频率也比较靠前。说明分析师因子近几年的重要性在提升。
下面我们每年选取样本外效果较好的 2 个单因子,进行详细展示。 (1)2020 年 F15:该因子用到了 1 个特征:l2c14(早盘大单买入占比)。用到了 8 个算子, 其中涉及 1 个时序切割算子:ts_negmax_sum(过去 d 天的最大值取反之后,再求过去 d 天的 和)。该因子聚焦于行业因子中极端表现和潜在趋势,同时消除短期波动的干扰,捕捉行业中的 潜在风险和机会。
2020 年 F41:该因子用到了 1 个特征:l2c14(早盘大单买入占比)。用到了 4 个算子,其 中涉及 1 个时序切割算子:ts_cut_mean_smallersum(过去 d 日中,将小于均值的部分切割出来 求和)。该因子通过逐步去噪、平滑、去偏差,构建一个可以突出行业风险信号和机会信号的因 子,特别关注行业的低迷和波动,并通过平滑和去中位数来提取长期趋势和极端表现。
(2)2021 年 F32:该因子用到了 4 个特征:l2c11(早盘大单涨跌幅)、ratio_volumeH3 (3 段成交量占比,开盘后第 3 个半小时成交量占全天成交量之比)、lntwapret (twap 对数收益 率)、l2c4(早盘委托买卖单大小比)。用到了 6 个算子,其中涉及 1 个时序切割算子: ts_negmax_sum(过去 d 天的最大值取反之后,再求过去 d 天的和)。该因子通过对多个特征的 排名、时间序列处理、加权平均等操作,综合衡量行业的市场情绪、潜在流动性风险、价格走势 和供需关系等方面的因素。
2021 年 F27:该因子用到了 2 个特征:PEG (PE_FY1/FY2 隐含的利润增量率)、WFR (加权的分析师预期调整)。用到了 5 个算子,其中涉及 3 个时序切割算子:ts_negmax_sum (过去 d 天的最大值取反之后,再求过去 d 天的和)、ts_cut_mean_neggreater_sum(过去 d 日 中,将大于均值的部分切割出来,取反后,再求全序列的和)、ts_fxumr_75(取过去 d 日作为窗 口,将 x 减去窗口内的 75%分位数,而后再乘 y,最后计算窗口内均值)。该因子对分析师预期 调整进行分域加权,强调了行业或股票中偏离均值的极端情况,关注行业的潜在风险。
(3)2022 年 F70:该因子用到了 2 个特征:l2c20(早盘大单涨跌幅)、l2c9 (早盘大单资 金净流入/(全天资金流入+全天资金流出))。用到了 3 个算子,其中涉及 2 个时序切割算子: ts_cut_mean_negsmaller_sum(过去 d日中,将小于均值的部分切割出来,取反后,再求全序列 的和)、ts_fxzscore_75(取过去 d 日作为窗口,将 x 根据窗口内的 75%分位数进行 zscore 标准 化,而后再乘 y,最后计算窗口内均值)。该因子结合早盘大单交易和资金流动强度,强调市场 的早盘阶段的情绪和资金的活跃度。通过反转异常值,捕捉相对于历史表现的异常变化,并通过 加权均值平滑化处理,确保近期的市场表现对因子的影响最大。

2022年 F53: 该因子用到了 4个特征:cum_return_top_10(前 10%累计最大涨幅)、WFR (加权的预期调整)、induslnhlret(行业指数的收盘价对数收益率)、Amihud(收盘价对数收益 率绝对值/成交额)。用到了 5 个算子, 其中涉及 1 个截面切割算子:cut_mean_negsmaller(x 小于截面均值的部分*-1)。该因子通过对多个维度的特征进行排名,并结合时序窗口最大值,来 选择在不同维度上表现优异的行业。同时通过反转负面表现的部分,强调潜在的风险因素,并通 过加权平均和平滑操作减少短期波动的干扰。
(4)2023 年 F40:该因子用到了 1 个特征:l2c4(早盘委托买卖单大小比)。用到了 7 个 算子,其中涉及 1 个时序切割算子:ts_negmax_sum(过去 d 天的最大值取反之后,再求过去 d 天的和)。该因子对早盘委托买卖单大小比进行排名,关注市场上买卖力量的相对强弱。结合加 权、非线性处理和极端值反转,捕捉市场中的潜在波动、极端表现或风险。
2023 年 F65:该因子用到了 1 个特征:l2c14(早盘大单买入占比)。用到了 5 个算子,其 中涉及 4 个时序算子。该因子的逻辑是通过对早盘大单买入占比进行时序加权平滑、截面排序等 处理,衡量市场情绪的稳定性或不确定性。
(5)2024 年 F10:该因子用到了两个特征:induslnopenret(行业指数的开盘价对数收益 率),corr_volume_amplitude(成交量和振幅相关性)。用到了四个算子,其中涉及两个时序切 割算子:ts_negmax_sum2(过去 d 天 y 的最大值位置对应的 x 的值取反,再求过去 d 日 x 序列 的和)、ts_negmin_sum(过去 d 天的最小值取反之后,再求过去 d 天的和)。该因子通过分析 行业开盘时的收益表现、成交量和振幅的相关性,来揭示行业的负面趋势或潜在风险。
2024年 F4:该因子用到了两个特征:l2c14(早盘大单买入占比)、indus_loserrnum(行业 内涨跌幅处于当天后 120 的股票个数)。用到了四个算子,其中涉及 1 个时序切割算子: ts_cut_max(过去 d 天 y 的最大值位置对应的 x 的值)。该因子将早盘大单买入占比与行业的弱 势股票数量结合,旨在捕捉即使在行业弱势的背景下,资金流入的可能性,从而帮助识别出行业 中潜在的投资机会。
4.3 合成因子表现
通过遗传规划方法挖掘出的单因子,样本外容易出现效果衰减,直接使用单因子并不恰当。 更合理的方式是,在每年的单因子挖掘出以后,进行因子加权,来获得合成因子。加权前,我们 对单因子进行了横截面 Boxplot 去异常值、zscore 标准化、以 0 填充缺失值三步处理。 我们对比了等权、单次弹性网络回归加权、单次 xgb 加权、动态 xgb 加权四种方式,具体做 法如下: (1)等权:首先根据单因子在训练集上的 rankic 确定因子方向,如果 rankic 为负,则将因 子值取反,再进行等权。 (2)单次弹性网络回归加权:弹性网络回归(Elastic Net Regression)是一种结合了岭回 归(Ridge Regression)和 lasso 回归(Lasso Regression)的线性回归模型。能够比较好的处理 因子间的共线性问题,避免因子间的冗余和过拟合,是线性回归模型中表现较突出的做法。采用 遗传规划算法挖掘时使用的训练集作为弹性网络回归的训练集,训练一次,样本外使用一年。由 于线性回归运算较快,参数可以通过样本内 cv 的方式网格搜索得到。我们设置 alpha_range = [0.0001, 0.0003, 0.0005, 0.0007, 0.001, 0.003,0.005,0.007,0.01] , l1_ratio_range = np.linspace(0.1, 1, 10)。 (3)单次 xgb 加权:XGBoost 属于梯度提升决策树模型,通过组合多个决策树模型,逐步 减小残差误差,属于非线性模型。采用遗传规划算法挖掘时使用的训练集作为 xgb 的训练集,训 练一次,样本外使用一年。考虑到树模型调参相对耗时,参数按经验设置,max_depth=5, learning_rate=0.01,其它参数均使用默认选项。 (4)动态 xgb 加权:每月重新训练 xgb,训练集取过去半年,样本外只使用一个月。训练集 和测试集间隔 20 个交易日,避免引入未来信息。参数设置与单次 xgb 加权保持一致。
从结果来看,加权方法的选择对于实现超额收益至关重要: (1)等权方法无超额:2020 年以来 top5 行业组合年化超额为-0.02%,除 2020 年表现亮眼 以外,其他年份均表现一般。等权方法忽略了因子之间表现的差异,由于近半数单因子在样本外 都存在失效风险,直接等权并不恰当。 (2)单次弹性网络回归和 xgb 方法超额较低:2020 年以来 top5 行业组合年化超额在 2%左 右,不同年份表现差异较大。弹性网络回归加权和 xgb 加权相比等权均稍有改进,能够通过学习 历史数据中的模式来优化单因子权重分配。然而由于只进行了单次训练,未能充分适应样本外市 场环境的变化,表现依然不稳定。 (3)动态 xgb 加权明显占优:在动态 xgb 加权方法下,2020 年以来 top5 行业组合年化超 额 11.10%,超额收益最大回撤 10.28%,月度胜率 61.40%,超额收益夏普比 1.16,月均换手 65%。不同年份 top5 行业组合均能获得正超额收益,除 2022 年外,其他年份超额收益均在 10% 以上。动态 XGB 加权的效果显著优于前两种方法,原因在于它能根据近期市场情况重新优化模型, 动态地调整因子权重以匹配当前市场环境。 虽然通过遗传规划算法挖掘出的单因子,近半数在样本外都存在失效风险,但挖出的单因子 数量多且相关性低,通过合理的加权,完全可以取得优异的表现。

此外,我们展示了动态 xgb 加权方法下,每个月的特征重要性情况。可以看到,每个月不同 特征的重要性都在变化。
行业因子样本外容易失效,频繁挖掘消耗算力。采用长周期挖掘,短周期动态加权的方法, 可以显著提升合成因子表现,是一个可行的方案。
4.4 持仓情况
我们统计了 DFQ 遗传规划行业轮动模型,每月的多头 top5 行业组合持仓情况。可以看到: (1)top5 行业组合曾在全部 29 个中信一级行业上发出过配置信号。 (2)样本外共 57 个调仓日,电力设备及新能源、家电、煤炭、轻工制造、基础化工、银行 行业上入选 top5 的次数最多,超过 15 次。 (3)15 个行业配置胜率超 50%。纺织服装、医药、家电、石油化工行业的胜率达 75%以上。
从今年 top5 行业组合的配置来看,煤炭行业出现 6 次,家电、银行出现 5 次,计算机出现 4 次。
4.5 绩效归因
接下来我们从因子暴露角度,对 DFQ 遗传规划行业轮动模型的 top5 行业组合进行绩效归因。 绩效归因的具体做法是:(1)计算每个行业的风险因子暴露:首先将个股的风险因子暴露匹配 到每日的中证全指股票池,而后在横截面上 zscore 标准化,以 0 填充缺失值等操作。最后将个股 风险因子暴露进行市值加权得到行业风险因子暴露,并再进行横截面上 zscore 标准化;(2)根 据持仓权重,计算组合和基准在各个风险因子上的暴露,相减得到相对暴露。 我们使用的风险模型是《东方 A 股因子风险模型(DFQ-2020)》报告中研发的风险模型,下图 展示了该模型的风格因子列表,具体模型细节可以参考报告。
DFQ 遗传规划行业轮动模型的 top5 行业组合,相对于等权基准,在 Trend 动量维度有明显 的正向暴露,说明偏向于配置高动量的行业。在其他维度的相对暴露绝对值都不超过 10%。
五、 DFQ 机器学习行业轮动模型效果分析
5.1 模型相关性
我们计算了通过遗传规划得到的行业因子,和通过机器学习选股因子合成得到的行业因子间 的 spearman 相关性。相关性计算前将所有单因子进行了横截面 Boxplot 去异常值、zscore 标准 化、以 0 填充缺失值三步处理。 可以看到,通过遗传规划方法得到的行业因子,和其他个股因子加权得到的行业因子,相关 性非常低,因子值 spearman 相关性在 0%附近。这说明,直接以行业为标的挖掘行业因子,和 通过个股因子加权得到行业因子,属于两种完全不同的技术路线,所得结果差异性较大,可以结 合使用。
5.2 合成因子表现
从之前的测试结果来看,个股因子加权得到的行业因子中,vae 和 xgb 模型的多头端 top5 行 业组合整体表现较好,2020年以来top5行业组合年化超额收益可达10%以上。因而我们将vae、 xgb、gp 三个行业因子等权合成,构建 DFQ 机器学习行业轮动模型。 从回测结果来看,DFQ 机器学习行业轮动模型表现十分突出,能实现 1+1>2 的效果: (1)仅将 vae 和 xgb 两因子等权合成,效果不如单因子。二者相关性较高,叠加无优势。 加入低相关的 gp 因子后,合成因子效果大幅提升。 (2)DFQ 机器学习行业轮动模型单调性较好。2020 年以来,IC 为 14.28%,RANKIC 为 15.21%,ICIR 为 0.49,RANKICIR 为 0.53。 (3)DFQ 机器学习行业轮动模型多头表现优异:2020 年以来,top5 行业组合年化超额收 益达到 18.42%,超额收益最大回撤 7.76%,月度胜率 66.67%,超额收益夏普比 1.77,月均换手 51%。 (4)DFQ 机器学习行业轮动模型的多头端每年均能获得正超额收益:2021、2022 年模型 top5 行业组合的年化超额收益接近 30%,2024 年截止 9.30,超额收益达到 18.11%。
5.3 持仓情况
我们统计了 DFQ 机器学习行业轮动模型,每月的多头 top5 行业组合持仓情况。可以看到: (1)top5 行业组合曾在 28 个中信一级行业上发出过配置信号,仅国防军工行业未曾入选 top5。 (2)样本外共 57 个调仓日,煤炭、银行、钢铁行业入选 top5 的次数最多,超过 30 次。 (3)21 个行业配置胜率超 50%。有色金属、机械、医药、农林牧渔行业的配置胜率达到 100%,家电、纺织服装行业的配置胜率也达到 80%。
5.4 绩效归因
DFQ 机器学习行业轮动模型的 top5 行业组合,相对于等权基准: (1)在 Size 市值、Value 估值、SOE 国企持股比例维度有明显的正向暴露,说明偏向于配 置大市值、低估值、国企持股比例高的行业; (2)在 Beta、波动率、流动性估值维度有明显的负向暴露,说明偏向于配置低 Beta、低波、 低流动性的行业。 (3)在其他维度的相对暴露绝对值都不超过 10%。

六、 行业轮动模型在指数增强组合中的应用
6.1 指数增强组合构建
下面我们尝试在指数增强组合中引入行业轮动策略,通过高配优势行业、低配或规避弱势行 业,在原有组合基础上进一步提升业绩表现。 (1)回测期:2020.01.01-2024.10.31,组合月频调仓,假设根据每月末个股得分在次日以 vwap 价格进行交易。 (2)组合约束:风险因子库(参见《东方 A 股因子风险模型(DFQ-2020)》)中所有的风 格因子相对暴露不超过 50%。沪深 300 增强跟踪误差约束不超过 4%,中证 500 和 1000 增强跟 踪误差约束不超过 5%。个股权重设置上限约束,绝对权重上限设置为 1.5 倍基准权重+2%。限制 指数成分股权重占比不低于 80%。 (3)考虑交易成本:假设买卖手续费双边千三,停牌涨停不能买入、停牌跌停不能卖出。 (4)行业轮动模型的引入方法:根据最新可获得的行业轮动模型配置结果,调整行业暴露 敞口。对于 top5 行业,约束必须超配,设置行业暴露敞口为[0,0,2];对于 bottom5 行业,约束必 须低配,设置行业暴露敞口为[-0.2,0];对于其余行业,设置行业暴露敞口不变,仍为[-0.2,0,2]。 (5)alpha 模型:采用前期报告《DFQ-XGB:基于树模型的 alpha 预测方案》提出的 DFQXGB 模型打分作为输入的预期收益率。
6.2 指数增强组合表现
从组合结果来看,叠加行业轮动模型来调整行业暴露敞口,可以实现组合收益和稳定性的提 升。对于沪深300指数增强组合提升尤其显著。采用DFQ遗传规划行业轮动模型整体效果更好, 可能是由于个股的机器学习因子和 DFQ 机器学习行业因子有信息重叠。
(1)DFQ-XGB 模型沪深 300 指数增强组合
采用 DFQ 遗传规划行业轮动模型来调整行业暴露敞口,在实现收益大幅提升的同时,组合稳 定性也有所提高。相比于基础组合,年化超额收益可以提高 2%,信息比也从 1.85 提升到 2.16, 超额收益最大回撤从 6.53%降低到 6.12%,跟踪误差基本不变。从分年收益来看,过去 5 年中, 每年都可以跑赢基础组合,今年截止 10.31 号,超额收益达到 7.14%。
(2)DFQ-XGB 模型中证 500 指数增强组合
采用 DFQ 遗传规划行业轮动模型来调整行业暴露敞口,相比于基础组合,未能实现收益提升。 采用 DFQ 机器学习行业轮动模型来调整行业暴露敞口,相比于基础组合,年化超额收益提高 0.3%,信息比从 2.15 提升到 2.20。今年截止 10.31 号,超额收益达到 12.83%。
(3)DFQ-XGB 模型中证 1000 指数增强组合
采用 DFQ 遗传规划行业轮动模型来调整行业暴露敞口,相比于基础组合,年化超额收益可以 提高 0.55%,信息比也从 3.05 提升到 3.09。今年截止 10.31 号,超额收益达到 8.51%。
七、 总结
在之前的研究中,我们从行业基本面和行业动量角度入手,从逻辑出发寻找行业因子,构建 了两类月频行业轮动策略。2020 年以来策略表现均不佳:(1)以基本面为主的 DFQ工业类行业 轮动模型,基于 38 个证监会二级行业构建,转化为中信一级行业后会损失较多信息。2020 年以 来 top5 行业组合年化超额仅为 3.33%,超额收益最大回撤 19.39%。(2)DFQ 行业动量轮动策 略,2020 年以来 top5 行业组合年化超额仅为 3.68%,2023 和 2024 年均未获正超额。 在之前的研究中,我们设计了一系列机器学习模型来预测股票收益。训练时对于预测标签和 输入特征都没有做行业中性化,因而各模型都会学到行业轮动的收益。基于此,我们可以将这些 机器学习模型训练出的选股因子合成为行业因子,进行行业轮动。vae、xgb 模型的多头端 top5 行业组合整体表现较好,2020 年以来 top5 行业组合年化超额收益达 10%以上。但由于模型的选 行业能力只是选股的副产品,行业轮动因子是否有效很大程度上取决于运气,使用起来不够稳健。 前期我们开发出了一套高效的 DFQ 遗传规划因子挖掘系统。加入自定义的特征和算子,指 定适应度指标,从一个随机公式种群出发,可以通过多代进化得到更优的子代公式。由于在进化 过程中缺乏明确的目标引导,常规的遗传规划算法进化效率低下。如何能提升进化效率,在有限 的算力,有限的时间内,进化出更多、更好、更短、更低相关的因子,是算法的核心痛点,也是 DFQ 模型的核心改进点。DFQ 模型主要有 7 点改进:提升初始种群质量,提升每代种群质量,提 升每代产生的有效公式数量,避免公式膨胀,动态调整每代进化参数,降低挖掘因子的相关性, 避免无效运算。
我们将 DFQ 遗传规划因子挖掘系统,迁移到行业上,来挖掘行业因子。采用中信一级行业 作为轮动标的。挖掘月频因子。采用滚动挖掘方式,每隔一年重新挖掘。训练集采用滑动窗口的 方式,长度固定 10 年,每次向后挪一年。共设计 145 个特征,140 个算子。使用 20 个路径下多 头(top5)行业组合的月均超额收益的最小值作为适应度。进行一轮 15 代完整挖掘用时 5 分钟左 右。一轮完成后可产生 5 个左右适应度超过 0.5%,且互相间相关系数不超过 50%的单因子。 DFQ 遗传规划行业因子挖掘系统,2020-2024 年用到的 277 个单因子中,60%的单因子样本 外月均多头超额收益为正,30%的单因子样本外月均多头超额收益超过 0.5%。加权方法的选择 对于实现超额收益至关重要。在动态 xgb 加权方法下,2020 年以来 top5 行业组合年化超额 11.10%,超额收益最大回撤 10.28%,月度胜率 61.40%,超额收益夏普比 1.16。 通过遗传规划方法得到的行业因子,和其他四个由选股因子合成得到的行业因子,相关性非 常低,因子值 spearman 相关性在 0%附近。将 vae、xgb、gp 三个因子值等权合成,构建 DFQ 机器学习行业轮动模型。模型表现十分突出,能实现 1+1>2 的效果。 2020 年以来,top5 行业组 合年化超额达到 18.42%,超额收益最大回撤 7.76%,月度胜率 66.67%,超额收益夏普比 1.77。 叠加行业轮动模型来调整行业暴露敞口,可以实现组合收益和稳定性的提升。对于沪深 300 指数增强组合提升尤其显著。相比于基础组合,年化超额收益可以提高 2%,信息比从 1.85 提升 到 2.16,超额收益最大回撤从 6.53%降低到 6.12%。
(本文仅供参考,不代表我们的任何投资建议。如需使用相关信息,请参阅报告原文。)
- 申万金工因子观察第5期:OpenClaw能否实现零代码基础构建量化策略?.pdf
- 量化基金2025年回顾及2026年展望:公私募量化策略剖析、优选及配置思路.pdf
- 宏观深度报告:如何以量化策略增厚信用债收益?——多资产系列报告(三).pdf
- 主动量化策略周报:股强基弱,优基增强组合近期超额持续攀升.pdf
- 2026年量化策略:关注通胀改善上行趋势.pdf
- 机器学习选股系列研究之二:基于Dask计算图的遗传规划高频因子挖掘框架.pdf
- 克莱尔:一种用于韧性估计的因果机器学习方法(英译中).pdf
- 量化专题报告:“机器学习”选股模型系列研究(一),量价指纹模型的构建与应用初探.pdf
- 机器学习系列之一:mHC对Barra机器学习因子的改进.pdf
- 机器学习应用系列:强化学习驱动下的解耦时序对比选股模型.pdf
- 科技制造行业产业月报(26年2月):灵巧之手,如何成形?——解析人形机器人灵巧手产业链.pdf
- 基于可微RankIC损失函数的深度学习选股策略——机器学习选股系列研究之一.pdf
- 摩根士丹利-全球科技行业:人形机器人技术——把握未来.pdf
- 电子皮肤行业深度报告:实现机器柔性触觉,感知世界触手可及.pdf
- 大鹏工业研究报告:工业精密清洗装备小巨人企业,加速布局机器视觉检测产品.pdf
- 相关文档
- 相关文章
- 全部热门
- 本年热门
- 本季热门
- 1 量化基金2023年回顾及2024年展望:公私募量化策略剖析、优选及配置.pdf
- 2 量化策略专题:行业选择逻辑与行业配置策略.pdf
- 3 J.P. 摩根-全球量化策略-大数据与人工智能战略.pdf
- 4 量化策略专题研究:量化视角下的风格、行业运行逻辑及配置展望.pdf
- 5 量化策略专题研究:行业主题工具与行业配置策略
- 6 J.P. 摩根-全球量化策略-从商品期货的动态定位中获利.pdf
- 7 量化策略深度:债券基金因子模型.pdf
- 8 量化策略研究:细“颗粒度”下北向资金的配置能力.pdf
- 9 量化策略研究:DFQ机器学习行业轮动模型.pdf
- 10 量化策略配置系列(一):CTA策略的阿喀琉斯之踵.pdf
- 1 宏观深度报告:如何以量化策略增厚信用债收益?——多资产系列报告(三).pdf
- 2 跨境投资洞察系列报告:港股择时宏观框架与量化策略.pdf
- 3 2025年10月基金投顾投端跟踪报告:投顾组合调减主动权益仓位,周期和量化策略受青睐.pdf
- 4 2026年量化策略:关注通胀改善上行趋势.pdf
- 5 量化基金2025年回顾及2026年展望:公私募量化策略剖析、优选及配置思路.pdf
- 6 主动量化策略周报:股强基弱,优基增强组合近期超额持续攀升.pdf
- 7 申万金工因子观察第5期:OpenClaw能否实现零代码基础构建量化策略?.pdf
- 8 2025年人工智能与机器学习在医疗科技领域的崛起研究报告(英文版).pdf
- 9 人工智能和机器学习系列专题研究:基于动量Transformer模型的日内和隔夜交易策略.pdf
- 10 基于可微RankIC损失函数的深度学习选股策略——机器学习选股系列研究之一.pdf
- 1 宏观深度报告:如何以量化策略增厚信用债收益?——多资产系列报告(三).pdf
- 2 2026年量化策略:关注通胀改善上行趋势.pdf
- 3 量化基金2025年回顾及2026年展望:公私募量化策略剖析、优选及配置思路.pdf
- 4 主动量化策略周报:股强基弱,优基增强组合近期超额持续攀升.pdf
- 5 申万金工因子观察第5期:OpenClaw能否实现零代码基础构建量化策略?.pdf
- 6 机器学习系列之一:mHC对Barra机器学习因子的改进.pdf
- 7 量化专题报告:“机器学习”选股模型系列研究(一),量价指纹模型的构建与应用初探.pdf
- 8 机器学习应用系列:强化学习驱动下的解耦时序对比选股模型.pdf
- 9 克莱尔:一种用于韧性估计的因果机器学习方法(英译中).pdf
- 10 机器学习选股系列研究之二:基于Dask计算图的遗传规划高频因子挖掘框架.pdf
- 全部热门
- 本年热门
- 本季热门
- 1 2026年申万金工因子观察第5期:OpenClaw能否实现零代码基础构建量化策略?
- 2 2026年量化基金2025年回顾及2026年展望:公私募量化策略剖析、优选及配置思路
- 3 2026年宏观深度报告:如何以量化策略增厚信用债收益?——多资产系列报告(三)
- 4 2025年第51周主动量化策略周报:股强基弱,优基增强组合近期超额持续攀升
- 5 2026年量化策略:关注通胀改善上行趋势
- 6 2025年10月基金投顾投端跟踪报告:投顾组合调减主动权益仓位,周期和量化策略受青睐
- 7 2025年跨境投资洞察系列报告:港股择时宏观框架与量化策略
- 8 2025年资产配置及量化策略展望:财政政策与经济周期的对抗与统一
- 9 2025年度量化策略:企稳向上,关注成长风格
- 10 2024年量化策略研究:DFQ机器学习行业轮动模型
- 1 2026年申万金工因子观察第5期:OpenClaw能否实现零代码基础构建量化策略?
- 2 2026年量化基金2025年回顾及2026年展望:公私募量化策略剖析、优选及配置思路
- 3 2026年宏观深度报告:如何以量化策略增厚信用债收益?——多资产系列报告(三)
- 4 2025年第51周主动量化策略周报:股强基弱,优基增强组合近期超额持续攀升
- 5 2026年量化策略:关注通胀改善上行趋势
- 6 2025年10月基金投顾投端跟踪报告:投顾组合调减主动权益仓位,周期和量化策略受青睐
- 7 2025年跨境投资洞察系列报告:港股择时宏观框架与量化策略
- 8 2026年机器学习选股系列研究之二:基于Dask计算图的遗传规划高频因子挖掘框架
- 9 2026年基于风格因子的非线性分域训练研究—机器学习系列九
- 10 2026年量化专题报告:“机器学习”选股模型系列研究(一),量价指纹模型的构建与应用初探
- 1 2026年申万金工因子观察第5期:OpenClaw能否实现零代码基础构建量化策略?
- 2 2026年量化基金2025年回顾及2026年展望:公私募量化策略剖析、优选及配置思路
- 3 2026年宏观深度报告:如何以量化策略增厚信用债收益?——多资产系列报告(三)
- 4 2025年第51周主动量化策略周报:股强基弱,优基增强组合近期超额持续攀升
- 5 2026年量化策略:关注通胀改善上行趋势
- 6 2026年机器学习选股系列研究之二:基于Dask计算图的遗传规划高频因子挖掘框架
- 7 2026年基于风格因子的非线性分域训练研究—机器学习系列九
- 8 2026年量化专题报告:“机器学习”选股模型系列研究(一),量价指纹模型的构建与应用初探
- 9 2026年机器学习系列之一:mHC对Barra机器学习因子的改进
- 10 2025年机器学习应用系列:强化学习驱动下的解耦时序对比选股模型
- 最新文档
- 最新精读
- 1 2026年中国医药行业:全球减重药物市场,千亿蓝海与创新迭代
- 2 2026年银行自营投资手册(三):流动性监管指标对银行投资行为的影响(上)
- 3 2026年香港房地产行业跟踪报告:如何看待本轮香港楼市复苏的本质?
- 4 2026年投资银行业与经纪业行业:复盘投融资平衡周期,如何看待本轮“慢牛”的持续性?
- 5 2026年电子设备、仪器和元件行业“智存新纪元”系列之一:CXL,互联筑池化,破局内存墙
- 6 2026年银行业上市银行Q1及全年业绩展望:业绩弹性释放,关注负债成本优化和中收潜力
- 7 2026年区域经济系列专题研究报告:“都”与“城”相融、疏解与协同并举——现代化首都都市圈空间协同规划详解
- 8 2026年历史6轮油价上行周期对当下交易的启示
- 9 2026年国防军工行业:商业航天革命先驱Starlink深度解析
- 10 2026年创新引领,AI赋能:把握科技产业升级下的投资机会
