分布外泛化(Out-of-distribution Generalization, OOD Generalization)是指机器学习模 型在面对与训练数据分布不同的测试数据时,仍能保持良好性能的能力。
为什么 OOD Generalization 重要: (1)金融数据的非平稳性:大多数机器学习模型是在特定的数据分布上进行训练的,然而 在实际应用中,测试数据的分布往往与训练数据不同,这种情况下的数据变化称为分布偏移。市 场微观结构、宏观经济周期、政策变化等要素都会导致训练集与真实场景存在根本性分布偏移。 (2)过拟合风险加剧:如果模型仅仅依赖于训练数据中的模式,就可能会对训练数据过拟 合,无法适应新的、不同的数据分布。
OOD Generalization 的现有应对方法及局限: (1)数据增强:通过增强训练数据的多样性,提升模型对不同分布的适应能力。但难以建 模市场状态的结构性变化。 (2)领域适应:利用源领域和目标领域的数据,通过减少领域间差异来提升模型在目标领 域的表现。但需要预定义目标领域分布。 (3)元学习:通过少量新样本快速适应新分布,提升跨任务迁移能力,但对样本效率要求 较高,落地难度大。 (4)不变学习:旨在识别并学习那些在不同环境(如不同时期、市场状态或子群体)中保 持稳定、与外部变化无关的特征。该方法强调提取在多种环境下保持稳定的因果相关特征,避免 模型依赖那些虽相关但随环境变化的非稳态表征,从而增强模型的分布外泛化能力。 前期报告 《DFQ-Factorvae-pro:加入特征选择与环境变量模块的 FactorVAE 模型》中的 Factorvae-pro 模型就属于不变学习思路,在训练阶段加入日期环境变量,让模型学习与日期环境 无关的不变特征。然而,Factorvae-pro 模型存在以下局限:(1)依赖人工设定环境变量,主观 性强,影响模型适应性;(2)使用时间标签作为环境变量,忽略横截面上的结构性差异。 现在我们进一步拓展,希望外部环境变量也由模型自己动态寻找。环境变量也被称为数据的 潜在领域(domain)。这就是我们的新模型 Diversify。本模型参考论文《Out-of-distribution representation learning for time series classification》的思路,将原论文模型架构进行修改, 成功迁移到回归预测问题。
2.1 模型整体架构
模型创新性地引入“领域-标签”解耦框架,通过对抗训练机制同时完成领域识别与标签预测 任务,实现两者的显式解耦,从而提取出对外部扰动不敏感、跨领域稳定的预测特征,显著增强 模型的分布外泛化能力。 其训练流程包含三个核心模块: Step1:领域学习器(update_d):执行领域识别任务,训练网络准确预测样本所处的领域, 同时通过对抗机制抑制其对标签信息的学习; Step2:领域预测更新(set_label):基于当前模型状态,动态更新样本的潜在领域标签, 增强领域划分的合理性; Step3:标签学习器(update):执行标签预测任务,提升模型对标签的拟合能力,同时对 抗性地削弱其对领域特征的依赖。 模型在每个训练周期(epoch)中依次执行上述三步,并更新网络参数;随后在验证集上进 行性能评估,用于选择最优超参组合。最终,模型在测试集上进行样本外泛化能力的检验。
2.1.1 领域学习器(update_d)
update_d 模块负责执行领域识别任务,旨在提取能够表征潜在领域差异的特征,训练网络 准确判断样本的领域归属。同时引入对抗训练机制,抑制模型对标签信息的依赖,实现对领域特 征的专注建模,从而提升领域表示的准确性与鲁棒性。其中更新的部件和作用如下: (1)特征提取器(extractor):采用 GRU(门控循环单元)结构,从输入的股票历史特征 序列中提取时间依赖的潜在表示。GRU 具备良好的长序列建模能力,适用于金融时序数据的处理。 (2)领域瓶颈层(dbottleneck):通过全连接层进一步变换 extractor 输出的特征,以提 升对领域分类任务的适应性。由于 extractor 为模型共享层,存在一定的不稳定性,dbottleneck 的独立更新机制可辅助其更稳定地对接 update_d 的训练目标,从而提升整体训练效果与特征解 耦能力。 (3)领域分类器(dclassifier):用于预测样本的领域标签。该分类器接收由 extractor 和 dbottleneck 输出的特征,通过线性层输出领域标签预测值,并与实际领域标签计算交叉熵损失, 以优化模型的领域识别能力。该部分未引入梯度反转层,目的是提升领域分类准确性。 (4)标签对抗判别器(ddiscriminator):以对抗方式预测样本的标签,用于实现特征对 标签任务的“不可分”目标。ddiscriminator 和 dclassifier 一样,接收由 extractor 和 dbottleneck 输出的特征。但特征在进入ddiscriminator前,会首先经过一个梯度反转层,再通过线性层输出标 签预测,与真实的收益标签计算 mse 损失。在反向传播更新 update_d 模块网络参数的过程中, 梯度反转层会将回传的梯度符号反转,反转后的梯度会推动 extractor 和 dbottleneck 的参数向着 减少 ddiscriminator 预测准确性的方向进行更新。这种机制促使 extractor 和 dbottleneck 模型提取 的特征更关注领域区分性,而非标签相关性,从而更专注于捕捉对领域分类有用的信息。 update_d 模块的训练目标由两个对抗性的损失函数构成:(1)领域预测损失(交叉熵):优化 dclassifier,提升领域区分能力; (2)标签对抗损失(MSE):通过梯度反转抑制标签预测能力,降低模型对标签特征的依 赖。 通过这两个损失函数的对抗博弈,update_d 模块能够在强化领域识别能力的同时,削弱对 标签特征的依赖,为后续标签预测模块提供更纯净的领域信息。
2.1.2 领域预测更新(set_label)
set_dlabel 模块的作用是更新样本的领域标签。该过程不涉及模型参数的训练或更新,仅通 过推理与聚类优化进行标签重分配,主要包含以下两个步骤: (1)领域标签的推断:Diversify 算法作为一种自监督学习方法,其领域标签并非预先提供, 而是通过模型自身预测生成。具体而言,模型在 update_d 模块更新后,利用当前训练得到的特 征提取器(extractor)、领域瓶颈层(dbottleneck)以及领域分类器(dclassifier),对训练集中 所有样本进行前向推理,生成初始的领域预测结果。由于初始领域划分是随机的,若直接用于训 练,容易导致模型对初始标签的过拟合,难以刻画数据真实的潜在领域结构。为此,Diversify 引 入了一套基于特征分布与预测概率的聚类优化机制,对领域划分进行后处理。 (2)领域标签的调整:为了提高领域划分的准确性,set_label 使用聚类方法来调整领域标 签。具体操作包括:1)使用上一步得到初始领域预测概率与样本原始特征数据进行加权,生成 每个领域的特征向量(即领域中心);2)使用余弦相似度衡量样本特征与各领域中心的相似程 度,并将样本分配给最接近的领域,从而完成领域标签的更新。这一步骤使得网络预测结果能够 与实际特征相结合,使得领域标签的更新能够反映出特征空间中的实际相似性,确保领域标签能 够适应样本特征的实际分布,从而优化了领域分类的准确性和模型的泛化能力。
2.1.3 标签学习器(update)
update 模块负责执行标签预测任务,旨在提取与收益标签高度相关的关键特征,训练网络 准确预测样本的收益标签。同时引入对抗训练机制,抑制模型对领域信息的依赖,实现对收益标 签的专注建模,从而增强模型在跨领域环境下的泛化能力。该模块由以下四个组件构成: (1)特征提取器(extractor):采用与 update_d 模块共享的 GRU 网络,从股票历史特征 序列中提取时间依赖的潜在表示。共享 extractor 用于建立起 update_d 和 update 模块的联系,确 保标签预测与领域识别使用一致的特征空间,提高整体特征表示的通用性与一致性。 (2)标签瓶颈层(bottleneck):结构上与领域瓶颈层(dbottleneck)类似,但专用于标 签预测任务。该层通过全连接网络对 extractor 输出的潜在特征进行进一步变换,以优化其在标签 预测中的表达能力。 (3)标签分类器(classifier):用于预测样本的收益标签。该分类器接收由 extractor 和 bottleneck 提取的特征,通过线性层输出标签预测值,并与真实标签计算 MSE(均方误差)损失, 以优化模型的标签预测能力。该部分未引入梯度反转层,目标是提升标签预测准确性。 (4)领域对抗判别器(discriminator):以对抗方式预测样本的领域归属,用于实现特征 对领域任务的“不可分”目标,原理与 update_d 模块中的标签对抗判别器(ddiscriminator)类 似。判别器的输入特征(由 extractor 和 bottleneck 处理的特征)通过梯度反转层进行了修改,再 通过线性层输出领域预测,与当前领域标签计算交叉熵损失。在反向传播更新 update 模块网络参数的过程中,梯度反转层会将回传的梯度符号反转,反转后的梯度会推动 extractor 和 bottleneck 的参数向着减少 discriminator 预测准确性的方向更新。这种机制促使模型提取的特征尽量与领域 预测任务无关,从而更专注于捕捉对标签预测有用的信息。
update 模块的训练目标由两个对抗性的损失函数构成: (1)标签预测损失(MSE):优化 classifier,提升标签预测能力; (2)领域对抗损失(交叉熵):通过梯度反转抑制领域区分能力,降低模型对领域特征的 依赖。 通过这两个损失函数的对抗博弈,update 模块能够在提升标签预测精度的同时,有效抑制对 领域特征的依赖,从而增强模型在不同领域分布下的稳健性与泛化能力。 该设计与 update_d 模块形成对称结构:前者致力于准确预测标签并削弱领域信息,后者则 致力于准确预测领域并抑制标签信息。二者共同构建起“领域–标签”解耦的对抗训练体系。 最终,训练过程中 update 模块获得的 extractor、bottleneck 和 classifier 将用于测试阶段 (test_epoch),对样本外数据进行标签预测。
2.2 模型关键点
2.2.1 自监督动态领域划分机制
(1)领域的含义
在 Diversify 模型中,领域(domain)是一个关键但抽象的建模概念,本质上是对数据分布 的动态划分,用以识别影响预测任务的潜在环境因素。其内涵可从以下两个维度理解: 1)时间维度:如年份、月份、市场周期(牛市、熊市等)等,反映市场状态随时间演化的 结构变化; 2)截面维度:如行业类别(科技、金融、能源等)、市值规模(大盘股、中盘股、小盘股) 等,体现同一时间点内不同股票的结构差异。 DFQ-Factorvae-pro 模型采用人工设定的日期标签作为环境变量,而 Diversify 模型通过自监 督机制自动识别隐含的领域结构,具备更高的灵活性与泛化适应能力。
(2)有效领域的划分标准
一个有效的领域划分应满足以下三个标准: 1)领域内一致性高:同一领域内部的样本应具有相似的分布结构,使模型能够提取稳定的 领域特征表示; 2)领域间差异性显著:不同领域之间在特征空间中应呈现出明显的结构性边界,具备良好 的可分性,使模型能够有效地进行领域识别并形成稳定的领域分类结果。 3)领域识别与标签预测各司其职、相互独立:有效的领域划分应专注于识别输入数据中的 结构性扰动因素,如市场风格、行业状态等;而标签预测任务则应专注于提取决定收益标签的核 心特征。二者应在功能上保持明确分工、在特征上实现相互隔离。从而在标签预测任务中通过剥 离领域信息,排除外部扰动带来的伪相关影响,提升模型的分布外泛化能力。
(3)动态领域更新机制
Diversify 模型设计了一种自监督动态领域划分机制,通过标签预测任务与领域识别任务的对 抗解耦,引导模型自主识别潜在领域信息。模型围绕 update_d、set_dlabel 和 update 三个核心 模块构建交替优化机制,驱动领域划分从初始的随机状态逐步收敛为与数据结构相符、具有建模 意义的稳定划分结果: 1)update_d(领域识别):利用上一个 epoch 生成的领域标签,训练 extractor + dbottleneck + dclassifier + ddiscriminator,提取与领域分类相关但与标签预测无关的特征。 其中 更新的 extractor + dbottleneck + dclassifier 三个网络会在 set_label 中被使用,从而对后续领域更 新产生影响。 2)set_dlabel(领域更新):在 update_d 更新后,使用模型预测结果与特征分布执行无监 督聚类,重新划分领域标签,并将修正后的领域标签全量更新至数据集中。只有这一步骤会生成 新的领域标签,从而对后续领域更新产生影响。 3)update(标签预测):基于新领域标签,训练 extractor + bottleneck + classifier + discriminator,提取与标签预测相关但与领域无关的特征。其中更新的 extractor 会在下一轮的 update_d 中继续被使用,从而对后续领域更新产生影响。 具体来说,Diversify 模型在该循环机制基础上实现了上述有效领域划分的三个标准: 1)满足领域内一致性高: Diversify 模型通过 set_dlabel 模块在每轮训练后对样本进行基于特征相似度和领域预测概率 的聚类重分配。该机制动态调整领域标签,使得同一领域中的样本在特征空间中逐步向统一的聚 类中心收敛。此外,在 update_d 模块中,特征提取器也被训练为生成对同领域样本表达稳定的 领域表示,共同增强领域内的一致性与结构稳定性。 2)满足领域间差异性显著: Diversify 模型在 update_d 模块中训练领域分类器(dclassifier),使其能够准确区分样本的 领域归属。这一训练目标推动模型在特征空间中扩大不同领域之间的表达间距,从而形成清晰可 分的领域边界,提升领域识别任务的可判别性。 3)确保领域识别与标签预测相互独立: Diversify 模型通过 update_d 和 update 模块之间的对抗训练机制,构建出标签学习与领域识 别之间的“特征隔离”路径:update_d 强化领域信息并抑制标签依赖,而 update 强化标签信息 并剥离领域影响。这种结构性解耦促使模型在特征空间中将“环境扰动信号”与“预测目标信号” 有效分离,避免伪相关干扰标签预测,从而提升模型的分布外泛化能力。
(4)金融因子视角下的结构类比
从金融建模的角度,Diversify 中的“领域”可类比于 Beta 风格因子,即代表系统性市场结构 风险,而标签预测部分则类比于 Alpha 信号,代表在控制系统性风险因素(Beta)后,挖掘出的 个体层面的超额收益能力。通过将 Beta 与 Alpha 解耦建模,有助于模型在不断变化的市场环境 中保持稳定的表现。
2.2.2 三重对抗训练机制
Diversify 模型构建了一套三层次的对抗训练机制,涵盖模块间的任务博弈、模块内的多目 标平衡,以及基于梯度反转的结构对抗,共同形成一套动态高效的特征解耦框架:
(1)update_d 和 update 模块间的对抗更新
update_d 和 update 模块共享特征提取器(extractor),在训练过程中构成动态对抗结构: 1)update_d 模块的目标是提取能够区分不同领域,但与标签预测无关的特征。这时 extractor 层的参数朝着有利于领域分类,但不利于标签预测的方向更新,导致 extractor 应对在标 签预测上的性能下降。 2)update 模块更新时,extractor 已经在 update_d 模块中朝着不利于标签预测的方向被更新 过一次了。现在 update 模块需要在不利的条件下(即 extractor 被 update_d 影响),仍能准确地 预测标签。如果更新后的模块在这种情况下还能表现出色,那么模型在面对新领域或不同领域变 动时,其稳定性和准确性将大为增强。 通过 update_d 与 update 模块在共享特征提取器上的交替更新,Diversify 模型构建了一种任 务间的动态博弈关系:一方致力于增强领域可分性、抑制标签预测能力,另一方则反向操作,专 注于提升标签可分性、削弱领域特征依赖。两者形成“拉锯式”对抗,促使模型在特征空间中划 分出彼此独立的信息子空间:一类用于识别领域间的分布差异(环境因素),一类用于捕捉稳定 的标签预测信号,从而提升任务解耦能力与跨领域的预测稳定性,最终实现领域识别与标签预测 的协同最优。
(2)update_d 和 update 模块内的双损失对抗平衡
update_d 和 update 模块均为双损失函数,两个目标之间具有对抗性: 1)update_d 模块目标是实现标签不可分,但领域可分。这里存在一个权衡问题:为了使标 签不可分,模型需要学习不依赖于那些与特定标签密切相关的特征,但这可能与领域可分性的目 标形成矛盾,因为领域特征的明显区分往往伴随着标签信息的泄露。update_d 模块通过优化一个 双损失函数来处理这一矛盾,损失函数需要同时考虑领域的预测准确性和标签的不可区分性,两 个目标动态平衡。这种设置帮助模型能够更好地理解和抽象出领域特有的特征,而不是依赖于那 些可能与特定标签强相关的特征。 2)update 模块目标正好与 update_d 模块相反,旨在实现领域不可分,但标签可分。这里同 样存在一个权衡问题:领域如果不可分,可迁移性会上升,因为预测性能不受外部变量影响。但 可能会导致牺牲一定的标签预测性能,从而使得标签难分,跟第二项标签可分的目标矛盾。 update 模块通过优化一个双损失函数来处理这一矛盾,损失函数同时考虑标签的预测准确性和领 域的不可区分性,两个目标动态平衡。通过这种方式,模型被训练为在不同领域之间迁移时,尽 量保持对标签的敏感和准确预测。 通过引入双损失函数,Diversify 模型在 update_d 和 update 两个模块内部构建起了一种动态 博弈机制:一方面促使模型强化某一任务(如领域可分或标签可分)的目标,另一方面又主动抑 制另一任务带来的干扰(如标签泄露或领域依赖),从而在训练过程中形成多任务的平衡机制, 引导模型在矛盾中寻找最优。这种对抗性设计不仅强化了模型的特征解耦能力,也提升了其在任 务冲突条件下的鲁棒性,使其在结构变化或领域转移时仍能保持标签预测性能的稳定与泛化能力。
(3)update_d 和 update 模块内的梯度反转机制
Diversify 模型在 update_d 和 update 模块中均引入梯度反转机制,以对抗方式削弱标签或领 域的可分性,从而实现“不可分任务”(标签不可分、领域不可分)。下面以 update_d 模块为 例,对梯度反转层进行解释: 1)梯度反转层的使用位置:原始特征首先经过 extractor 和 dbottleneck 层处理。随后经过一 个梯度反转层,再进入ddiscriminator层,通过线性层输出标签预测,与真实的收益标签计算mse 损失。 2)梯度反转层的基本原理:前向传播时梯度反转层作为恒等映射,不改变输入数据;反向 传播时梯度反转层会将接收到的梯度乘以一个负常数,实现梯度反转。具体来说:当梯度从 ddiscriminator 反向传播回梯度反转层时,ddiscriminator 的梯度会被乘以一个负常数。这意味着 现在的梯度会推动 extractor 和 dbottleneck 的参数向着减少 ddiscriminator 准确性的方向更新。 3)梯度反转层的对抗训练机制:梯度反转层的本质是让特征提取器(extractor+dbottltneck) 和判别器(ddiscriminator)进行对抗博弈,最终达到动态平衡,实现标签不可分任务。具体来说, 判别器自身参数的更新仍使用原始梯度,判别器的目标是最小化标签预测损失,朝着准确进行标 签预测的方向进行优化。而特征提取器(extractor+dbottltneck)更新时接收的是 ddiscriminator 反转后的梯度,这个梯度会推动 extractor 和 dbottleneck 的参数朝着使判别器性能变差的方向优 化,也就是说特征提取器的目标是最大化标签预测损失。 梯度反转层本质上是对抗训练思路的一种结构化实现方式,用于高效实现“不可分”任务目 标,如抑制标签或领域信息的表达能力。与通过损失函数直接构建对抗目标不同,梯度反转在反 向传播过程中对梯度符号进行反转,从而促使特征提取器向误导判别器的方向进行优化,弱化其 在对应任务上的判别能力。该机制无需引入额外监督信号,具备结构简洁、收敛稳定、优化高效 等优势,能够有效支撑模型在多任务对抗训练中的特征去偏、解耦表示与迁移鲁棒性构建。 综上所述,Diversify 所构建的三重对抗机制在模块之间、模块内部与结构路径三个层面协 同发挥作用,有效实现了标签与领域的任务解耦、特征隔离与稳健建模,提升模型在多领域环境 中的预测稳定性与泛化能力。
2.2.3 Diversify 和 Factorvae-pro 模型的联系
在处理分布外泛化问题时,Diversify和 Factorvae-pro模型都采用了不变学习的策略,旨在 训练过程中剔除可能导致过拟合的外部干扰因素,专注于纯粹的标签预测。 以下是对这两个模型的联系和区别的优化分析: (1)共同点: 1)共同目标:两者都致力于在模型训练中剥离可能影响泛化能力的外部因素,如时间因素 或市场风格等,从而提高模型对新、未知数据的适应性和预测精度。 2)策略相似:两者都旨在实现风格中性化。以往在进行风格中性化时,通常采用线性回归 方法,以风格因子作为回归自变量,以标签收益率作为回归因变量,将训练的标签取为回归的残 差收益率,从而将风格因子的影响剥离。然而,这种处理方式很可能丢失有价值的信息。实际上, 行业、市值等风格因子在某些情况下对股票收益的预测具有解释力,直接对输入数据进行中性化 处理虽然能提升因子的稳健性,但往往会牺牲收益能力。如果能保持原始特征信息不变,在训练过程通过模型设计动态剥离无关信息,就有可能在提高因子稳健性的同时,提升模型的收益表现。 这是 Diversify 和 Factorvae-pro 模型的核心优势所在——通过不同方式实现更优的“风格中性 化”。 (2)差异: 1)环境变量定义不同:Factorvae-pro 使用时间标签(如年份、月份)来代表环境因素,假 设这些时间标签能够充分反映市场的整体环境。然而,实际市场环境受多种复杂因素影响,时间 标签可能无法完全捕捉所有环境变化。相比之下,Diversify 提供了更灵活的解决方案,模型并不 依赖于预设的时间标签,而是通过自监督学习动态地从数据中提取潜在的环境因素。这种方法使 模型能够自动适应市场环境的变化,而不受固定规则的限制。 2)训练策略不同:Factorvae-pro 采用协同训练策略,在有无环境变量两种场景下进行标签 预测学习,从而提取出不受环境变量影响的不变特征。而 Diversify 则采用对抗训练策略,在不明 确预设环境标签的前提下,自动学习特征中与标签预测无关的“领域信息”并加以剥离,从而学 习出稳定、不依赖外部环境变化的核心特征,增强模型的分布外泛化能力。
2.3 模型细节对比
2.3.1 Diversify 模型 VS gru 基础模型
我们比较了 Diversify 模型和 GRU 基础模型的因子效果,结果显示:Diversify 模型相比 GRU 基础模型在多个方面展现了优势:1)在整体表现上,Diversify 模型的 rankIC 达到 14.73%, 多头超频年化收益达到 32.33%,对比基础模型有明显的提升。2)在分年表现上,Diversify 模型 的所有绩效指标在 5 年间几乎全面优于 GRU 基础模型,尤其在 2024 年,Diversify 的多头年化收 益达到 42.28%,大幅优于基础模型。

2.3.2 独立瓶颈层 VS 共享瓶颈层
在 Diversify 模型中,update_d 和 update 模块分别采用了不同的瓶颈层(分别为 dbottleneck 和 bottleneck),旨在针对不同的任务优化特征学习,从而增强模型的泛化能力。 update_d 模块致力于提高领域的预测准确性,因此其瓶颈层 dbottleneck 主要负责提取与领 域紧密相关的特征,以增强对领域的判别力。相反,update 模块专注于提升任务标签的预测准确 性,其 bottleneck 层则专注于捕捉对标签预测至关重要的特质性特征,以提升模型跨领域的应用能力。两个模块的优化任务实际是互相矛盾对抗的,采用独立的瓶颈层可以避免两个任务之间的 特征提取冲突,允许每个模块针对其特定目标进行优化,从而减少训练中的干扰并提高稳定性。 实验结果表明,采用独立瓶颈层的 Diversify 模型表现优于共享瓶颈层或不使用瓶颈层。这 进一步证明了通过分别独立优化每个模块的瓶颈层,可以更有效地学习具有区分性和高泛化能力 的特征,从而显著提升模型的性能和鲁棒性。
2.3.3 双路径训练 VS 单路径训练
双路径模式通过独立处理领域信息和标签信息,分别优化领域判别和标签预测能力,有效减 少了任务间的干扰。而单路径模型在学习标签预测时,必须同时兼顾领域的训练,这可能引发学 习过程中的冲突,导致模型需要在两者之间做出妥协,从而影响学习的效果。 实验结果表明,Diversify 最优模型(双路径训练,即领域学习和标签学习各自独立路径) 在关键性能指标如 IC(12.41% VS S12.12%)、rankIC(14.73% VS 14.01%)以及多头超额年 化收益(32.33% VS 27.19%)上均优于单路径模型(即领域学习和标签学习合并训练)。 与此相反,之前的 factorvae pro 模型在单路径训练模式下展现出更好的效果,原因在于其采 用的是协同训练的思路。在 factorvae pro 中,vae 和 envvae 两个模块虽然独立,但它们的训练 目的相似,都旨在提取相似的不变特征和先验因子,因此合并训练能够更好地发挥协同效应。然 而 Diversify 模型采取了对抗训练策略,update_d 和 update 模块的目标完全相反,两个模块执行 相矛盾的任务,这使得分开进行双路径训练更为合适,以专注于优化各自的任务,避免目标冲突。
2.3.4 领域的可视化展示
1)训练过程中领域标签分布的变化
我们统计了 Diversify 模型从训练的第一个 epoch 到训练达到早停时的 best_model(第 15 个 epoch)之间,由 set_dlabel 模块输出的领域标签(每个 epoch 全量更新至训练集,对训练产生 实际影响的领域预测结果)分布的变化。可以看到:随着训练的不断进行,领域 = 1 的比例逐渐 上升,从约 51.24% 增加到 58.09%,上升趋势总体平稳的,后期增速略有加快。这表明模型在训 练过程中学到了一些关于领域分布的信息,对领域 1 的偏向性增加。
2)update_d 和 update 模块间的对抗更新机制在领域分类变化中如何体现
在 Diversify 的模块设计中,update_d 和 update 模块目标相反,但共用同一个特征提取器 (extractor),在训练过程中构成了一个对抗关系,最终达到了一种动态平衡状态,创建出一个 既能精确识别领域又能准确预测标签,但二者又相互独立的强大模型。
3.1 数据说明
样本空间:中证全指同期成分股。 数据区间:(1)训练集2014.01.01—2018.11.30;(2)验证集2019.01.01—2019.11.30; (3)测试集 2020.01.01—2024.12.31。数据集中额外的分割间隙是有意引入的,以避免特征和 标签的泄露。训练集用于迭代训练模型,通过反向传播算法计算损失函数关于模型参数的梯度, 然后按照梯度方向更新模型参数。验证集用于在模型训练过程中评估模型的性能,便于选择最优 的模型和参数。测试集用于观察模型样本外的表现,在模型开发完成后评估模型的泛化性能。 数据处理方法:(1)解释变量X:截面异常值处理,标准化,填充缺失值。训练集、验证集、 测试集相同处理;(2)预测标签Y:截面异常值处理,标准化,填充缺失值。训练集、验证集相 同处理。 模型输入特征:量价特征,包括原始日线行情、基于分钟线提取的日频特征、基于 level2 数 据提取的日频特征等共 60 个。 模型预测标签:个股未来 20 日收益率。

3.2 模型超参
我们对部分超参进行了敏感性测试:
(1)领域个数(latent_domain_num)
在不同 latent_domain_num 设置下的模型表现分析中,domain_num = 2 的模型展现了最 佳的收益与风险平衡,具备较高的夏普比率、日度超额收益以及较小的最大回撤。随着 latent_domain_num 的增大,分类任务增加,模型的复杂度和计算量也随之增大,可能使得模型 过度拟合训练数据,捕捉到不必要的噪声而非实际的规律。其次,更多的分类目标意味着 update_d 模型需要在每个领域类别间进行更细致的区分,使得 tradeoff 更加倾向于关注领域的分 类而不是标签的预测,从而影响 update模型中的预测精度。因此,较低的 latent_domain_num设置(如 domain_num = 2)在处理较少类别时能够更有效地进行学习,避免了过拟合和过于复杂 的决策边界,从而提供更稳定的性能。
(2)batch 选取方法(batchsize)
batch_size 的设置直接影响模型的学习方式和特征提取的稳定性。batch_size=-1 的设置意 味着模型每次随机抽取一天的所有股票数据进行训练,这使得模型能够更充分地利用同一天的市 场特征,在领域学习(update_d)阶段,模型更容易识别出截面维度的风格状态,并在标签学习 (update)阶段,提取到更稳定的跨领域特征。相对而言,batch_size=4000 的设置导致数据被 随机打乱,每批次包含多个日期的数据,模型需要学习同时在截面和时序维度提取领域信息,难 度增加,领域划分过程易受到噪声影响,导致模型效果下降。
(3)遍历训练 VS 抽样训练(max_steps_per_epoch)
我们对比了每个 epoch 训练整个训练集(最优模型做法)与仅训练 100 个 batch 这两种方 式。全量训练策略确保每个 epoch 遍历整个数据集,使模型能够学习更完整的市场特征,同时这 也与后续 set_dlabel 遍历整个训练集、重新计算领域标签的方法相匹配,从而保证领域划分的稳 定性,最终增强标签预测的准确性。因此,最优模型在 IC、rankIC 和多头日度超额年化收益等核 心指标上均明显优于每个 epoch 训练 100 个 batch。抽取 100 个 batch 的训练方法虽然由于每个 epoch 仅训练部分样本,模型的泛化性可能会较强一些,但在 Diversify 中可能会导致 extractor 和 domain 学习相关模块获取到的的市场信息较为片面,最终导致领域划分不够稳定,长期绩效表现 受到影响。因此,采用与 set_dlabel 逻辑一致的全量训练方式,能够更好地保证模型对市场信息 的完整学习,提高预测的稳定性和交易信号的质量。
3.3 随机种子影响
我们测试了 5 个不同随机种子下,Diversify模型的绩效表现和相关性。可以看到,随机种子 模型结果有一定影响:(1)不同种子下,多种子模型打分等权合成后,模型效果略有提升;(2) 不同路径下得到的模型因子值相关系数在 85%左右,多头超额收益相关性在 80%左右。
我们单独测试了添加瓶颈层(bottleneck)的 gru模型以及未添加瓶颈层(bottleneck)的 gru 模型,比较二者在不同随机种子下得到的因子值相关性情况,以验证随机性是否主要为 bottleneck 的影响。可以看到:去除 bottleneck 的 baseline 模型因子相关性大大提升了,达到了 90%左右,而添加 bottlenck 的 gru baseline 模型的因子相关性与 Diversify 的类似。这说明随机种 子的影响与 Diversify 训练方式相关性并不大,更多的是跟 bottleneck 的设置有关。
瓶颈层模块导致不同随机种子之间因子值相关性较低的主要原因在于其随机初始化权重以及 dropout 的随机失活机制。首先,Linear 层的权重采用均值为 0、标准差为 0.005 的正态分布随 机初始化,不同种子会导致不同的初始化结果,影响因子计算。其次,dropout机制会随机丢弃一 部分神经元,在训练过程中引入随机性,从而进一步放大不同随机种子对因子结果的影响。这样 的随机性有可能会提升模型泛化能力,使得样本外表现更好,但也会带来一定的路径依赖问题, 导致同一模型在不同随机种子下测得的因子值相关性相对较低,需要权衡。
4.1 训练情况
由于 DFQ-Diversify模型每次训练遍历整个训练集的所有 batch,且模型的训练涉及到 update 和 update_d 两个模块的对抗训练,以及 set_dlabel 的全训练集领域更新三个环节,导致模型单个 epoch训练时间较长。但训练轮次较少,在第15个epoch左右达到早停,总体训练用时5h左右。 训练期间,显存占用维持在 10GB 以下,适用于中证全指成分股数据。 我们监测了训练过程中,每个 epoch 的损失值变化和 IC 变化。可以看到:(1)由于每次训 练遍历整个训练集所有的 batch,第一个 epoch 的损失值就可以下降到较低的水平,由于 loss 的 组成部分较多,在初始的前几个 epoch 会有 loss 项出现波动的情况,但在稳定后总体保持缓慢下 降的趋势;(2)总体每个 epoch 上训练集、验证集、测试集中 IC 都呈上升趋势,模型未出现明 显过拟合。
4.2 因子整体绩效表现
本节展示 DFQ-Diversify 模型得到的因子得分(Diversify),在中证全指、沪深 300、中证 500、中证 1000 四个股票池中的表现,并与前期报告《基于机构持仓的因子情景分析》中的基于 机构持仓分域的线性多因子模型 dfq、《DFQ 遗传规划价量因子挖掘系统》中的遗传规划合成因 子 gp、《DFQ 强化学习因子组合挖掘系统》中的强化学习合成因子 rl、《DFQ-TRA:多交易模 式学习因子挖掘系统》中的 tra 因子、《DFQ-HIST:添加图信息的选股因子挖掘系统》中的 hist 因子、《DFQ-XGB:基于树模型的 alpha 预测方案》中的 xgb 因子、《DFQ-FactorVAE:融合 变分自编码器和概率动态因子模型的 alpha 预测方案》中的 vae 因子、《DFQ-Factorvae-pro: 加入特征选择与环境变量模块的 FactorVAE 模型》vae-pro 因子,进行对比。 测试区间为 2020.1.1-2025.03.24。绩效指标计算细节如下:(1)IC 和 RANKIC 采用因子得 分和 20 日收益率标签计算得到,日度平均,ICIR 和 RANKICIR 未年化。(2)多头指标计算时, 沪深 300、中证 500 股票池中分组数为 5,中证 1000 股票池中分组数为 10,中证全指股票池中 分组数为 20。(3)多头组合月频调仓,绩效依次展示:日度超额年化收益率、日超额收益夏普 比、日度超额收益最大回撤、月度胜率、月均单边换手。此处的多头计算不考虑交易成本,但汇 报了月均单边换手率,费后收益可以根据费前收益和换手率近似估算。
结果显示:在各个股票池中,DFQ-Diversify 模型表现都较好,相比其他模型,在沪深 300、 中证 500 这种大盘股中相对优势更明显。 (1)在中证全指股票池中,DFQ-Diversify模型整体表现较好,分组单调性较好。测试集上 IC 达到 12.22%,ICIR 达到 1.22,RANKIC 达到 14.58%,RANKICIR 达到 1.28。20 分组多头超 额年化收益达到 32.52%,多头日超额收益夏普比 3.09,多头日度超额收益最大回撤 7.55%,多 头月度胜率 78%,月均单边换手 74%。
(2)在沪深 300股票池中,DFQ-Diversify模型所得因子多头表现领先,分组单调性较好。 测试集上 IC 达到 8.08%,ICIR 达到 0.46,RANKIC 达到 9.77%,RANKICIR 达到 0.52。5 分组 多头超额年化收益达到 12.85%,多头日超额收益夏普比 1.31,多头日度超额收益最大回撤 14.96%,多头月度胜率 70%,月均单边换手 54%。

(3)在中证 500股票池中,DFQ-Diversify模型所得因子多头表现领先,分组单调性较好。 测试集上 IC 达到 7.93%,ICIR 达到 0.51,RANKIC 达到 10.35%,RANKICIR 达到 0.68。5 分组 多头超额年化收益达到 14.52%,多头日超额收益夏普比 1.85,多头日度超额收益最大回撤 8.73%,多头月度胜率 75%,月均单边换手 56%。
(4)在中证 1000 股票池中,DFQ-Diversify 模型所得因子整体表现较好,分组单调性较好。 测试集上 IC 达到 11.21%,ICIR 达到 1,RANKIC 达到 12.60%,RANKICIR 达到 1.09。10 分组 多头超额年化收益达到 21.48%,多头日超额收益夏普比 2.73,多头日度超额收益最大回撤 6.01%,多头月度胜率 73%,月均单边换手 70%。
总体来看,在沪深 300 和中证 500 等大盘股中,Diversify 模型的多头表现优势较为明显, 在中证全指和中证 1000 等小盘股中,Diversify 模型的表现并不突出。可能的原因在于:大盘股 的特征通常较为稳定,Diversify 模型通过去除与标签预测无关的干扰因素(如市场风格等),专 注于提取能够长期有效的因子,提升了多头策略的表现。而小盘股的价格波动较大,且容易受到 短期市场情绪、公司新闻等因素的影响。虽然 Diversify 模型可以剔除无关信息,但在波动较大的 环境中,模型难以捕捉到有效的长期信号,导致预测不稳定。
4.3 因子分年绩效表现
在各个股票池中,DFQ-Diversify 模型得到的因子得分 2024 年的表现均十分优异。 (1)在中证全指股票池中,DFQ-Diversify模型 2024 年 IC 达到 11.70%,ICIR 达到 1.01, 20 分组多头年化超额 42.32%,最大回撤 7.55%。
(2)在沪深 300 中,DFQ-Diversify 模型 2024 年 IC 达到 6.81%,ICIR 达到 0.30,5 分组 多头年化超额 10.29%,最大回撤 14.96%。
(3)在中证 500 中 DFQ-Diversify 模型 2024 年 IC 达到 6.60%,ICIR 达到 0.37,5 分组多 头年化超额 10.94%,最大回撤 6.34%。
(4)在中证 1000 股票池中,DFQ-Diversify模型 2024 年 IC 达到 8.82%,ICIR 达到 0.66, 20 分组多头年化超额 22.78%,最大回撤 6.01%。
4.4 因子多头组风险因子暴露
我们从因子暴露角度,对中证全指股票池内,各模型多头组进行分析。业绩基准是样本空间 (中证全指)等权组合。计算组合持仓和基准在各个风险因子上的暴露,相减得到相对暴露即可。 我们使用的风险模型是《东方 A 股因子风险模型(DFQ-2020)》报告中研发的风险模型,风险 因子包括十大类风格类风险因子,29 个中信一级行业因子和市场因子。

DFQ-Diversify 模型得到的因子得分对应的多头组偏向小市值、低波、低信息确定性、强反 转、低成长。与其他模型相比,在 beta、估值、流动性上的暴露几乎为 0。
4.5 中性化因子表现
在中证全指股票池中,DFQ-Diversify 模型的中性化因子,相比原始因子各项指标均有所下 降,但变化不大。原始因子 ic 达到 12.22%,中性化后仍有 11.41%。原始因子 20 分组多头年化 超额收益达到 32.52%,中性化降低到 27.21%,但仍在所有模型中保持较高的水平。
5.1 指数增强组合构建说明
(1)回测期:2020.01.01-2025.3.31,组合月频调仓,假设根据每月末个股得分在次日以 vwap 价格进行交易。 (2)组合约束:风险因子库(参见《东方 A 股因子风险模型(DFQ-2020)》)中所有的风 格因子相对暴露不超过 50%,所有行业因子相对暴露不超过 2%。沪深 300 增强跟踪误差约束不 超过 4%,中证 500 和 1000 增强跟踪误差约束不超过 5%。个股权重设置上限约束,绝对权重上 限设置为 1.5 倍基准权重+2%。限制指数成分股权重占比不低于 80%。 (3)考虑交易成本:假设买卖手续费双边千三,停牌涨停不能买入、停牌跌停不能卖出。
5.2 沪深 300 指数增强组合
DFQ-Diversify 模型得到的因子得分在沪深 300 指增组合中表现十分突出: (1)整体表现:2020 年以来年化信息比达到 1.89,年化对冲收益 11.27%,年化跟踪误差 5.76%,超额收益最大回撤 6.72%,单边年换手 7.7 倍。 (2)分年表现:2020-2023 每年取得 10%以上的正超额,2024 年超额收益为 8.79%,2025 年前三个月超额收益为 3.88%。 DFQ-Diversify 模型下的沪深 300 指增组合:(1)相对基准沪深 300 指数,在市值、信息 确定性、成长维度具有明显的负向暴露,但在 BETA、流动性、波动率、估值等维度都没有明显 暴露。(2)20-25 年的指增超额收益中有 66%来自特质收益,风格因子贡献 22%,行业因子贡 献 12%。
5.3 中证 500 指数增强组合
DFQ-Diversify 模型得到的因子得分在中证 500 指增组合中表现十分突出: (1)整体表现:2020 年以来年化信息比达到 1.67,年化对冲收益 12.19%,年化跟踪误差 7.05%,超额收益最大回撤 9.07%,单边年换手 9.27 倍。 (2)分年表现:2021-2023 每年取得 15%以上的正超额,2024 年超额收益为 6.69%,2025 年前三个月超额收益为 1.76%。
DFQ-Diversify 模型下的中证 500 指增组合:(1)相对基准中证 500 指数,在市值、波动 率、信息确定性、非线性市值、动量、成长维度具有明显的负向暴露,在估值维度有明显的正向 暴露。(2)20-25 年的指增超额收益中有 54%来自特质收益,风格因子贡献,行业因子贡献 39%。
本研究提出了 DFQ-Diversify 模型,针对金融时序预测中的分布外泛化问题,创新性地引入 自监督机制与对抗训练思想。通过模块间的对抗训练、双路径训练策略和动态领域划分机制,成 功实现了标签预测与领域干扰的解耦,提升了模型在不同市场环境下的泛化能力。 与前期的 Factorvae-pro 模型相比,DFQ-Diversify 通过自监督动态领域划分,克服了人工设 定环境变量的局限性,能够在无须人为干预的情况下自动识别并更新领域结构。这一改进显著增 强了模型的灵活性和对分布偏移的适应能力。 实验结果表明,DFQ-Diversify 在中证全指、沪深 300 和中证 500 等多个股票池中表现出色, 尤其在大盘股的预测上展现了优异的多头组合超额收益。回测结果验证了模型在实际应用中的强 大性能与稳定性,特别是在复杂市场条件下,展现了良好的鲁棒性。 此外,通过指数增强策略,DFQ-Diversify 进一步验证了其在真实交易环境中的应用潜力,组 合风险可控、风格暴露受控,证明了该模型具备较强的实际落地能力。 综上所述,DFQ-Diversify 模型不仅在理论上对分布外泛化问题提出了创新的解决方案,还在 实证测试中展现了卓越的预测能力和广泛的应用前景,具有在多种市场环境下推广应用的潜力。
(本文仅供参考,不代表我们的任何投资建议。如需使用相关信息,请参阅报告原文。)