【浙商金工】机器学习与因子(二): Transformer特征工程算法测评
(以下内容从浙商证券《【浙商金工】机器学习与因子(二): Transformer特征工程算法测评》研报附件原文摘录)
点击上方“Allin君行” ,关注我们 摘要 Transformer作为ChatGPT的底层模型,展示出了其在自然语言任务中的强大性能。股票投资场景和自然语言任务有内在相似之处,金融时间序列可以被看作文字序列,且Transformer在处理长期记忆和变长序列任务中有优势。因此,本文尝试在股票投资场景测试Transformer算法的特征工程能力。 基于Transformer构建特征工程模型 本文以带时间步长的多维因子作为输入数据,以股票的次月回报作为标签,逐步测试了各个超参数对Transformer模型的影响,并最终确定了月频调仓场景下应用于股票特征工程的模型架构。 Transformer算法能有效对特征加总 经训练的Transformer模型在样本外能有效对股票特征进行加总并筛选股票。经过中证1000、中证500、沪深300和全市场股票池的检验,模型能有效筛选出股票组合,从而对基准指数或空头组合形成稳定超额。经测试,基于Transformer的特征工程模型IC为0.047,IR为0.69。 Transformer对比其它算法无明显优势 在相同的场景设定下,本文对比了Transformer和《机器学习与因子(一):特征工程算法测评》中测试的其它十种机器学习模型,Transformer并未体现出明显优势。可能的原因是月频样本的数量难以满足大参数模型训练要求。 风险提示 模型测算风险:超参数设定对模型结果有较大影响;收益指标等指标均限于一定测试时间和测试样本得到,收益指标不代表未来。 模型失效风险:机器学习模型基于历史数据进行测算,不能直接代表未来,仅供参考。 01 Transformer算法 Transformer算法通过ChatGPT展示出了其在自然语言任务中的强大性能。股票投资场景和自然语言任务有内在相似的地方,比如金融时序任务可以被看作Seq2Seq任务,而Transformer正是该领域的主力算法。因此,本文尝试在股票投资场景探索Transformer算法的使用。 1.1. 算法简介 Transformer算法是自然语言处理(NLP)任务所流行使用的深度学习模型。它在机器翻译,文本生成等任务中取得了显著的突破,并逐渐成为NLP领域的重要模型。为人熟知的ChatGPT, BERT等模型的底层算法就是Transformer。 在此之前,循环神经网络(RNN)和卷积神经网络(CNN)是常用于NLP任务的模型。然而,RNN存在难以并行计算和处理长距离依赖的问题,而CNN则对输入序列的长度有限制。这些问题限制了它们在处理长文本序列时的效果。 Transformer算法通过引入自注意力机制(self-attention)来解决这些问题。自注意力机制允许模型在处理每个位置时,能够同时考虑到输入序列中的其他位置,从而捕捉到更长距离的依赖关系。此外,Transformer还使用了多头注意力机制(multi-head attention),通过并行计算多个注意力头来提高模型的表达能力。 Transformer的核心思想是将输入序列映射为多维空间中的表示,然后通过多层的自注意力和前馈神经网络进行信息的传递和变换。最终,通过解码器将表示映射回目标序列,实现翻译或其他NLP任务。 考虑到Transformer在自然语言处理领域的巨大成功,其在金融领域的应用潜力值得研究探索。由于其在序列到序列任务的良好表现,在投资领域,其可以应用于时序任务,例如股票价格的估计和市场趋势的估计。通过将历史价格或特征序列作为输入,模型可以学习到股票价格的模式和趋势,并估计未来的价格走势。 1.2. Transformer工作流程 Transformer算法可以完成从序列输入到序列输出的任务。其工作流程如图1所示。首先,输入序列被获取,并且位置编码被添加到输入序列中。然后,输入序列被送入Transformer模型进行计算,以获得输出结果。 Transformer模型内部由两个主要的模块组成,分别是编码器(Encoders)和解码器(Decoders)。这两个模块可以同时使用,也可以单独使用其中一个模块,具体取决于任务的需求。ChatGPT和BERT模型分别是Decoder Only和Encoder Only模型。 Transformer内部编码器,解码器结构如图2所示。 在Transformer模型中,Encoders- Decoders堆叠是指将多个编码器(Encoders)和解码器(Decoders)层堆叠在一起的结构。这种堆叠的结构允许模型在处理序列输入到序列输出任务时进行更深层次的特征提取和表示。如图3所示。 Encoder编码器内部由自注意力机制(Self-Attention)和前馈神经网络(Feed-Forward Neural Network)组成。Decoder解码器的内部结构和Encoder内部结构一致。自注意力机制是Encoder编码器的核心组件,后文会详细介绍。 前馈神经网络由两个全连接层和一个激活函数组成,可以将输入序列的表示进行映射和变换,以捕捉更丰富的特征和语义信息。Encoder编码器内部结构如图4所示。 自注意力机制(Self-Attention)是Transformer模型中的关键组件之一,它在编码器和解码器中都得到了广泛应用。自注意力机制的主要作用是对输入序列中不同位置之间的依赖关系进行建模,以生成上下文相关的表示。自注意力机制的工作流程如图5所示。 首先,将输入序列(例如,编码器的输入或解码器的输入)通过线性变换映射到三个不同的表示空间:查询(Query)、键(Key)和值(Value),即上图中的Q, K, V三个矩阵。这些线性变换可以通过矩阵乘法和偏置项来实现。计算方法如图7所示。 然后,计算Q与K的相似度得到注意力权重A。相似度可以使用点积注意力、缩放点积注意力或其他方法来计算。然后,将注意力权重进行归一化,以确保它们的总和为1。 最后,使用注意力权重A对V进行加权求和,得到上下文表示O。注意力权重越高,表示该位置对其他位置的重要性越大,因此在计算上下文表示时,会更多地考虑具有较高注意力权重的值。 实际上,在自注意力机制中,需要机器学习的参数就是W_Q, W_K和W_V三个矩阵。实践中,注意力机制模块可在计算出O矩阵后,对O矩阵进行线性变化,因此会多一个W_O矩阵需要学习。 图8比较完整地展示了Transformer算法的流程及内部架构。 02 Transformer特征工程 本文使用Transformer算法,对个股因子和个股次月预期收益率之间的关系进行回归,并测试算法在该任务中的性能。由于Transformer的一大优势是能处理Seq2Seq任务,因此输入数据为T×N的面板数据,其中T为时间步长,N为特征维度。数据频率为月频。 为客观比较特征工程算法之间的性能,本文使用与《机器学习与因子(一):特征工程算法测评》同样的因子池和样本内、外划分方法,并将文章中测试过的模型作为比较基准。 2.1. 数据采集与处理 数据来源:本文使用Wind数据库。数据库提供相对高质量、专业和全面的金融、经济及交易数据。 数据类别:本文获得的样本数据包括三类,分别是A股上市公司的财务报表数据、交易数据以及部分宏观经济数据。这三类数据为后续特征工程提供基础数据。 时段选择:本文采用的样本数据时间跨度为2007年1月至2023年6月,总计198个月。选取较长的时间序列有助于考察因子的长期稳定性,同时结束日期也较近,可以观察到较新的市场状况,具有一定的时效性。 数据清洗:对所获得的数据进行了缺失值检测,删除了有缺失值的样本;将数据转换到适合模型输入的格式,如浮点数和整数;对数据范围差异大的特征进行Z-score标准化,统一量纲。 2.2. 输入因子构建 本文用于输入模型的因子与《机器学习与因子(一):特征工程算法测评》中使用的因子保持一致。因子池及因子定义如表1所示。 2.3. 模型训练 2.3.1 训练数据 训练用的输入数据为T×25,T为时间步长,25为特征维度。具体特征为2.2节中所示的因子。训练使用的标签为t+1月的股票月度绝对收益率。本文假设市场β信息已包含在特征值中,因此使用绝对收益率而非超额收益率作为标签。 2.3.2 样本划分 本研究使用2007年1月至2023年6月的数据。其中,2007年1月至2018年12月的数据作为训练集;2019年1月至2023年6月作为测试集。 2.3.3 超参数选取 由于Transformer的超参数选择可能会对模型性能产生较大影响,本文测试了多种超参数组合。由于本文不涉及序列到序列的任务,从训练的经济性和模型的鲁棒性角度考虑,使用Encoder-Only的Transformer架构。超参数组合如表2所示。 为了测试位置编码信息对模型性能的影响,本文选取三角式位置编码方法进行了实验。在三角式位置编码中,位置t对应的位置向量在偶数和奇数位的值分别为: 图9展示了位置编码信息。横坐标表示元素在序列中的位置t,纵坐标表示位置对应的编码值。 2.3.4 拟合优度 本文使用MSE损失来衡量模型在样本内的回归性能,通过比较预测值和实际值之间的差异来评估模型的准确性。而在样本外,本文使用模型生成的股票多头组合的年化收益率作为衡量模型特征工程性能的标准。股票多头组合为全市场股票Transformer打分最高的10%股票等权构成。 图10展示了有无位置编码信息的模型在样本内训练过程中的损失函数。横坐标表示Epoch数量,纵坐标表示MSE损失数值。可以观察到,添加了位置编码信息的模型在样本内的损失下降幅度更大,说明模型的拟合性能得到了提升。 接下来,图11展示了模型在样本外(2019年1月至2023年6月)生成的股票多头组合的年化收益率。从图中可以得到的信息是,具有位置编码信息的股票多头组合的年化收益率高于没有位置编码的组合。 综上,位置编码信息的引入对于提升模型的回归性能和特征工程性能都是有效的。位置编码能够帮助模型更好地理解输入序列中的位置信息,从而提高模型的表达能力和预测准确性。 本文也测试了输入数据的时间步长对模型性能的影响。图12展示了不同时间步长的模型在样本内的损失函数值。横坐标表示Epoch数量,纵坐标表示MSE损失数值。根据图中的信息,我们可以观察到随着时间步长由3步增加至6部,模型在样本内的拟合性能显著提升。 接下来,图13展示了具有不同时间步长的模型在样本外生成的股票多头组合的年化收益率。我们可以看到,在时间步长为3时,模型在样本外表现出最佳的性能。然而,当时间步长为6时,出现了过拟合的现象。 综上所述,时间步长的增加能提升模型样本内性能。然而,时间步长并非越长越好,需要根据具体的任务进行权衡和调整。 本文也测试了不同Encoder层数对模型回归性能的影响。图14为不同Encoder层数的模型对应的样本内损失函数。根据图中信息可知,当Encoder层数增加时,模型在样本内的拟合能力得到提高。然而,在Encoder层数到达6层时,再增加Encoder层数,模型拟合能力的提升微乎其微。 图15展示了不同Encoder层数的模型在样本外生成的股票多头组合的年化收益率。根据图中信息可知,随着Encoder层数的增加,模型输出的组合的收益呈现下降趋势。这可能是因为过多的Encoder层数导致了模型的过拟合,使得模型在未见过的数据上的泛化能力下降。 综上所述,Encoder层数的增加能提升模型样本内性能。但随着Encoder的增多,模型在样本外出现了过拟合现象。 为了解决模型容易出现过拟合的问题,本文尝试了一系列方法。包括降低特征维度,添加Dropout等方法。对模型做出上述改变后,过拟合现象得到了缓解,但是模型输出组合的收益相比改变之前,出现了较大幅度的下降,如图16、图17所示。因此,最终模型架构中不使用降维和Dropout等方法。 综上,确定最终模型结构如图18所示。输入数据时间步长为3,特征维度为25,经过自注意力层,残差连接&归一化层,前馈层到最后的线性层,输出次月收益率的预测值。 需要学习的参数为4*(25*25)+4*25+2*25+(25*100+100*25+100+25)+(25*1+1) = 7801个。 图19展示了不同股票特征之间的注意力权重。根据图中信息可以看出,与成交量相关的特征(zerotrade, ill)和与估值相关的特征(bm)与其他特征之间存在较多的高注意力权重(对应图中黑色色块)。这表明这些特征之间可能存在一定的内在联系。 具有较高权重的特征在模型预测中起到更重要的作用。模型在进行预测时,会较多关注或依赖这些成交量相关的特征。这个结论与《机器学习与因子(一):特征工程算法测评》中的结论较一致。 03 实证检验 本文针对中证1000股票池、中证500股票池、沪深300股票池和全市场股票池分别实证检验了Transformer特征工程算法的有效性。 3.1. 中证1000股票池 使用2007年至2018年的数据训练Transformer模型,在2019年后使用该模型对中证1000指数成分股进行月度打分。根据打分结果,将中证1000指数成分股分为5个组。然后,等权买入打分最高的一组股票,形成中证1000指数的多头组合。 图20展示了中证1000指数多头组合净值表现与超额收益。根据图中信息可知,该组合相对基准能产生稳定的超额收益。这表明,在中证1000股票池内,Transformer算法选股的有效性较好。 图21展示了中证1000股票池经Transformer打分分组后的各组收益率、超额收益和信息比率信息。根据图中信息可知,Transformer打分分组具有较好的单调性,随着Transformer打分的提高,组合年化收益、年化超额收益和信息比率也随之提高。 3.2. 中证500股票池 使用与3.1节中同样的方法构造中证500多头组合。 图22展示了中证500指数多头组合净值表现与超额收益。根据图中信息可知,该组合在2021年后相对基准能产生稳定的超额收益。这表明,在中证500股票池,Transformer算法选股的有效性总体较好,但是相比中证1000股票池有所下降。 图23展示了中证500股票池经Transformer打分分组后的各组收益率、超额收益和信息比率信息。根据图中信息可知,Transformer打分分组具有较好的单调性,随着Transformer打分的提高,组合年化收益、年化超额收益和信息比率也随之提高。 3.3. 沪深300股票池 使用与3.1节中同样的方法构造沪深300多头组合。 图24展示了沪深300指数多头组合净值表现与超额收益。根据图中信息可知,该组合总体上能对基准产生超额收益,但是超额收益的波动比较明显,稳定性一般。这表明,在沪深300股票池,Transformer算法选股总体有效,但是相比中证1000股票池和中证500股票池有所下降。 图25展示了沪深300股票池经Transformer打分分组后的各组收益率、超额收益和信息比率信息。根据图中信息可知,Transformer打分分组单调性一般。随着Transformer打分的提高,组合年化收益、年化超额收益和信息比率总体上也随之提高,但是波动性较大。 3.4. 全市场股票池 使用2007年至2018年的数据训练Transformer模型,在2019年后使用该模型对全市场股票进行月度打分。根据打分结果,将所有股票分为10组。然后,等权买入打分最高的一组股票,形成全市场多头组合,等权买入打分最低的一组股票,形成空头组合。 图26展示了全市场多头组合与空头组合的净值表现与超额收益。根据图中信息可知,多头组合对空头组合能产生稳定的超额收益。这表明,全市场股票池场景下,Transformer算法选股有效性良好。 图27展示了全市场多头组合与万得全A的净值表现与超额收益。根据图中信息可知,多头组合除了20年Q4至21年Q1外,对万得全A能产生稳定的超额收益。 图28展示了全市场股票池经Transformer分组后的各股票组合年化收益率。根据图中信息可知,Transformer分组单调性良好。随着Transformer打分的提高,组合年化收益也随之提高。 图29展示了全市场股票池Transformer个股打分的IC/IR。Transformer打分的IC均值为0.047,IR为0.69,IC大于0的月份占比为69.81%。由图中信息和统计信息可知,Transformer打分有效性较高,且表现稳定。 3.4. 全市场股票池 图30展示了各机器学习模型输出的多头组合的净值表现。使用相同的因子池,一致的样本划分,同样的训练样本以及同样的组合构建方法,对比各机器学习模型在月频调仓场景下的特征工程能力。Transformer模型并未对其它更简单的模型展现出优势。 可能的原因有几方面。首先,数据特征可能不适合Transformer模型。Transformer模型在处理序列数据和自然语言处理等领域表现出色。上述两类任务中,输入数据之间内在联系较强,因此Q矩阵和K矩阵能有效的找到序列之间的注意力权重。金融数据的特点可能与自然语言数据有所不同,可能需要其他类型的模型来更好地捕捉金融市场的特征。其次,样本量不足。月频调仓场景样本量较小,可能无法充分训练Transformer模型,从而影响其性能。Transformer模型通常需要大量的数据进行训练,以学习到有效的特征表示。如果样本量不足,模型可能无法充分学习到数据的潜在模式和规律。 04 结论与展望 Transformer算法在本文设定的任务场景下具有良好的特征工程能力。在全市场股票池,使用Transformer算法对股票打分后形成的多空组合能够稳定获取收益。Transformer打分的IC稳定,IR值高,单调性良好。在中证1000和中证500股票池,Transformer能有效地进行选股并对基准进行增强。 横向比较其它机器学习模型,在同样的任务场景下,Transformer算法并未表现出优势。可能的原因在于Transformer模型对样本量的要求较高,对输入数据有的适应性要求。如果输入数据的特征与Transformer模型的工作方式不匹配,可能会导致性能下降。 为解决上述问题,后续可以尝试提升获取样本的频率,从而增加样本数量。挖掘出更符合Transformer算法特点的金融数据。 05 风险提示 模型测算风险:超参数设定对模型结果有较大影响;收益指标等指标均限于一定测试时间和测试样本得到,收益指标不代表未来。 模型失效风险:机器学习模型基于历史数据进行测算,不能直接代表未来,仅供参考。 报告作者: 陈奥林 从业证书编号 S1230523040002 陆达 从业证书编号 S1230122070032 详细报告请查看2023年8月13日发布的浙商证券金融工程专题报告《机器学习与因子(二):Transformer特征工程算法测评》 法律声明: 本公众号为浙商证券金工团队设立。本公众号不是浙商证券金工团队研究报告的发布平台,所载的资料均摘自浙商证券研究所已发布的研究报告或对报告的后续解读,内容仅供浙商证券研究所客户参考使用,其他任何读者在订阅本公众号前,请自行评估接收相关推送内容的适当性,使用本公众号内容应当寻求专业投资顾问的指导和解读,浙商证券不因任何订阅本公众号的行为而视其为浙商证券的客户。 本公众号所载的资料摘自浙商证券研究所已发布的研究报告的部分内容和观点,或对已经发布报告的后续解读。订阅者如因摘编、缺乏相关解读等原因引起理解上歧义的,应以报告发布当日的完整内容为准。请注意,本资料仅代表报告发布当日的判断,相关的研究观点可根据浙商证券后续发布的研究报告在不发出通知的情形下作出更改,本订阅号不承担更新推送信息或另行通知义务,后续更新信息请以浙商证券正式发布的研究报告为准。 本公众号所载的资料、工具、意见、信息及推测仅提供给客户作参考之用,不构成任何投资、法律、会计或税务的最终操作建议,浙商证券及相关研究团队不就本公众号推送的内容对最终操作建议做出任何担保。任何订阅人不应凭借本公众号推送信息进行具体操作,订阅人应自主作出投资决策并自行承担所有投资风险。在任何情况下,浙商证券及相关研究团队不对任何人因使用本公众号推送信息所引起的任何损失承担任何责任。市场有风险,投资需谨慎。 浙商证券及相关内容提供方保留对本公众号所载内容的一切法律权利,未经书面授权,任何人或机构不得以任何方式修改、转载或者复制本公众号推送信息。若征得本公司同意进行引用、转发的,需在允许的范围内使用,并注明出处为“浙商证券研究所”,且不得对内容进行任何有悖原意的引用、删节和修改。 廉洁声明: 我司及业务合作方在开展证券业务及相关活动中,应恪守国家法律法规和廉洁自律的规定,遵守相关行业准则,遵守社会公德、商业道德、职业道德和行为规范,公平竞争,合规经营,忠实勤勉,诚实守信,不直接或者间接向他人输送不正当利益或者谋取不正当利益。
点击上方“Allin君行” ,关注我们 摘要 Transformer作为ChatGPT的底层模型,展示出了其在自然语言任务中的强大性能。股票投资场景和自然语言任务有内在相似之处,金融时间序列可以被看作文字序列,且Transformer在处理长期记忆和变长序列任务中有优势。因此,本文尝试在股票投资场景测试Transformer算法的特征工程能力。 基于Transformer构建特征工程模型 本文以带时间步长的多维因子作为输入数据,以股票的次月回报作为标签,逐步测试了各个超参数对Transformer模型的影响,并最终确定了月频调仓场景下应用于股票特征工程的模型架构。 Transformer算法能有效对特征加总 经训练的Transformer模型在样本外能有效对股票特征进行加总并筛选股票。经过中证1000、中证500、沪深300和全市场股票池的检验,模型能有效筛选出股票组合,从而对基准指数或空头组合形成稳定超额。经测试,基于Transformer的特征工程模型IC为0.047,IR为0.69。 Transformer对比其它算法无明显优势 在相同的场景设定下,本文对比了Transformer和《机器学习与因子(一):特征工程算法测评》中测试的其它十种机器学习模型,Transformer并未体现出明显优势。可能的原因是月频样本的数量难以满足大参数模型训练要求。 风险提示 模型测算风险:超参数设定对模型结果有较大影响;收益指标等指标均限于一定测试时间和测试样本得到,收益指标不代表未来。 模型失效风险:机器学习模型基于历史数据进行测算,不能直接代表未来,仅供参考。 01 Transformer算法 Transformer算法通过ChatGPT展示出了其在自然语言任务中的强大性能。股票投资场景和自然语言任务有内在相似的地方,比如金融时序任务可以被看作Seq2Seq任务,而Transformer正是该领域的主力算法。因此,本文尝试在股票投资场景探索Transformer算法的使用。 1.1. 算法简介 Transformer算法是自然语言处理(NLP)任务所流行使用的深度学习模型。它在机器翻译,文本生成等任务中取得了显著的突破,并逐渐成为NLP领域的重要模型。为人熟知的ChatGPT, BERT等模型的底层算法就是Transformer。 在此之前,循环神经网络(RNN)和卷积神经网络(CNN)是常用于NLP任务的模型。然而,RNN存在难以并行计算和处理长距离依赖的问题,而CNN则对输入序列的长度有限制。这些问题限制了它们在处理长文本序列时的效果。 Transformer算法通过引入自注意力机制(self-attention)来解决这些问题。自注意力机制允许模型在处理每个位置时,能够同时考虑到输入序列中的其他位置,从而捕捉到更长距离的依赖关系。此外,Transformer还使用了多头注意力机制(multi-head attention),通过并行计算多个注意力头来提高模型的表达能力。 Transformer的核心思想是将输入序列映射为多维空间中的表示,然后通过多层的自注意力和前馈神经网络进行信息的传递和变换。最终,通过解码器将表示映射回目标序列,实现翻译或其他NLP任务。 考虑到Transformer在自然语言处理领域的巨大成功,其在金融领域的应用潜力值得研究探索。由于其在序列到序列任务的良好表现,在投资领域,其可以应用于时序任务,例如股票价格的估计和市场趋势的估计。通过将历史价格或特征序列作为输入,模型可以学习到股票价格的模式和趋势,并估计未来的价格走势。 1.2. Transformer工作流程 Transformer算法可以完成从序列输入到序列输出的任务。其工作流程如图1所示。首先,输入序列被获取,并且位置编码被添加到输入序列中。然后,输入序列被送入Transformer模型进行计算,以获得输出结果。 Transformer模型内部由两个主要的模块组成,分别是编码器(Encoders)和解码器(Decoders)。这两个模块可以同时使用,也可以单独使用其中一个模块,具体取决于任务的需求。ChatGPT和BERT模型分别是Decoder Only和Encoder Only模型。 Transformer内部编码器,解码器结构如图2所示。 在Transformer模型中,Encoders- Decoders堆叠是指将多个编码器(Encoders)和解码器(Decoders)层堆叠在一起的结构。这种堆叠的结构允许模型在处理序列输入到序列输出任务时进行更深层次的特征提取和表示。如图3所示。 Encoder编码器内部由自注意力机制(Self-Attention)和前馈神经网络(Feed-Forward Neural Network)组成。Decoder解码器的内部结构和Encoder内部结构一致。自注意力机制是Encoder编码器的核心组件,后文会详细介绍。 前馈神经网络由两个全连接层和一个激活函数组成,可以将输入序列的表示进行映射和变换,以捕捉更丰富的特征和语义信息。Encoder编码器内部结构如图4所示。 自注意力机制(Self-Attention)是Transformer模型中的关键组件之一,它在编码器和解码器中都得到了广泛应用。自注意力机制的主要作用是对输入序列中不同位置之间的依赖关系进行建模,以生成上下文相关的表示。自注意力机制的工作流程如图5所示。 首先,将输入序列(例如,编码器的输入或解码器的输入)通过线性变换映射到三个不同的表示空间:查询(Query)、键(Key)和值(Value),即上图中的Q, K, V三个矩阵。这些线性变换可以通过矩阵乘法和偏置项来实现。计算方法如图7所示。 然后,计算Q与K的相似度得到注意力权重A。相似度可以使用点积注意力、缩放点积注意力或其他方法来计算。然后,将注意力权重进行归一化,以确保它们的总和为1。 最后,使用注意力权重A对V进行加权求和,得到上下文表示O。注意力权重越高,表示该位置对其他位置的重要性越大,因此在计算上下文表示时,会更多地考虑具有较高注意力权重的值。 实际上,在自注意力机制中,需要机器学习的参数就是W_Q, W_K和W_V三个矩阵。实践中,注意力机制模块可在计算出O矩阵后,对O矩阵进行线性变化,因此会多一个W_O矩阵需要学习。 图8比较完整地展示了Transformer算法的流程及内部架构。 02 Transformer特征工程 本文使用Transformer算法,对个股因子和个股次月预期收益率之间的关系进行回归,并测试算法在该任务中的性能。由于Transformer的一大优势是能处理Seq2Seq任务,因此输入数据为T×N的面板数据,其中T为时间步长,N为特征维度。数据频率为月频。 为客观比较特征工程算法之间的性能,本文使用与《机器学习与因子(一):特征工程算法测评》同样的因子池和样本内、外划分方法,并将文章中测试过的模型作为比较基准。 2.1. 数据采集与处理 数据来源:本文使用Wind数据库。数据库提供相对高质量、专业和全面的金融、经济及交易数据。 数据类别:本文获得的样本数据包括三类,分别是A股上市公司的财务报表数据、交易数据以及部分宏观经济数据。这三类数据为后续特征工程提供基础数据。 时段选择:本文采用的样本数据时间跨度为2007年1月至2023年6月,总计198个月。选取较长的时间序列有助于考察因子的长期稳定性,同时结束日期也较近,可以观察到较新的市场状况,具有一定的时效性。 数据清洗:对所获得的数据进行了缺失值检测,删除了有缺失值的样本;将数据转换到适合模型输入的格式,如浮点数和整数;对数据范围差异大的特征进行Z-score标准化,统一量纲。 2.2. 输入因子构建 本文用于输入模型的因子与《机器学习与因子(一):特征工程算法测评》中使用的因子保持一致。因子池及因子定义如表1所示。 2.3. 模型训练 2.3.1 训练数据 训练用的输入数据为T×25,T为时间步长,25为特征维度。具体特征为2.2节中所示的因子。训练使用的标签为t+1月的股票月度绝对收益率。本文假设市场β信息已包含在特征值中,因此使用绝对收益率而非超额收益率作为标签。 2.3.2 样本划分 本研究使用2007年1月至2023年6月的数据。其中,2007年1月至2018年12月的数据作为训练集;2019年1月至2023年6月作为测试集。 2.3.3 超参数选取 由于Transformer的超参数选择可能会对模型性能产生较大影响,本文测试了多种超参数组合。由于本文不涉及序列到序列的任务,从训练的经济性和模型的鲁棒性角度考虑,使用Encoder-Only的Transformer架构。超参数组合如表2所示。 为了测试位置编码信息对模型性能的影响,本文选取三角式位置编码方法进行了实验。在三角式位置编码中,位置t对应的位置向量在偶数和奇数位的值分别为: 图9展示了位置编码信息。横坐标表示元素在序列中的位置t,纵坐标表示位置对应的编码值。 2.3.4 拟合优度 本文使用MSE损失来衡量模型在样本内的回归性能,通过比较预测值和实际值之间的差异来评估模型的准确性。而在样本外,本文使用模型生成的股票多头组合的年化收益率作为衡量模型特征工程性能的标准。股票多头组合为全市场股票Transformer打分最高的10%股票等权构成。 图10展示了有无位置编码信息的模型在样本内训练过程中的损失函数。横坐标表示Epoch数量,纵坐标表示MSE损失数值。可以观察到,添加了位置编码信息的模型在样本内的损失下降幅度更大,说明模型的拟合性能得到了提升。 接下来,图11展示了模型在样本外(2019年1月至2023年6月)生成的股票多头组合的年化收益率。从图中可以得到的信息是,具有位置编码信息的股票多头组合的年化收益率高于没有位置编码的组合。 综上,位置编码信息的引入对于提升模型的回归性能和特征工程性能都是有效的。位置编码能够帮助模型更好地理解输入序列中的位置信息,从而提高模型的表达能力和预测准确性。 本文也测试了输入数据的时间步长对模型性能的影响。图12展示了不同时间步长的模型在样本内的损失函数值。横坐标表示Epoch数量,纵坐标表示MSE损失数值。根据图中的信息,我们可以观察到随着时间步长由3步增加至6部,模型在样本内的拟合性能显著提升。 接下来,图13展示了具有不同时间步长的模型在样本外生成的股票多头组合的年化收益率。我们可以看到,在时间步长为3时,模型在样本外表现出最佳的性能。然而,当时间步长为6时,出现了过拟合的现象。 综上所述,时间步长的增加能提升模型样本内性能。然而,时间步长并非越长越好,需要根据具体的任务进行权衡和调整。 本文也测试了不同Encoder层数对模型回归性能的影响。图14为不同Encoder层数的模型对应的样本内损失函数。根据图中信息可知,当Encoder层数增加时,模型在样本内的拟合能力得到提高。然而,在Encoder层数到达6层时,再增加Encoder层数,模型拟合能力的提升微乎其微。 图15展示了不同Encoder层数的模型在样本外生成的股票多头组合的年化收益率。根据图中信息可知,随着Encoder层数的增加,模型输出的组合的收益呈现下降趋势。这可能是因为过多的Encoder层数导致了模型的过拟合,使得模型在未见过的数据上的泛化能力下降。 综上所述,Encoder层数的增加能提升模型样本内性能。但随着Encoder的增多,模型在样本外出现了过拟合现象。 为了解决模型容易出现过拟合的问题,本文尝试了一系列方法。包括降低特征维度,添加Dropout等方法。对模型做出上述改变后,过拟合现象得到了缓解,但是模型输出组合的收益相比改变之前,出现了较大幅度的下降,如图16、图17所示。因此,最终模型架构中不使用降维和Dropout等方法。 综上,确定最终模型结构如图18所示。输入数据时间步长为3,特征维度为25,经过自注意力层,残差连接&归一化层,前馈层到最后的线性层,输出次月收益率的预测值。 需要学习的参数为4*(25*25)+4*25+2*25+(25*100+100*25+100+25)+(25*1+1) = 7801个。 图19展示了不同股票特征之间的注意力权重。根据图中信息可以看出,与成交量相关的特征(zerotrade, ill)和与估值相关的特征(bm)与其他特征之间存在较多的高注意力权重(对应图中黑色色块)。这表明这些特征之间可能存在一定的内在联系。 具有较高权重的特征在模型预测中起到更重要的作用。模型在进行预测时,会较多关注或依赖这些成交量相关的特征。这个结论与《机器学习与因子(一):特征工程算法测评》中的结论较一致。 03 实证检验 本文针对中证1000股票池、中证500股票池、沪深300股票池和全市场股票池分别实证检验了Transformer特征工程算法的有效性。 3.1. 中证1000股票池 使用2007年至2018年的数据训练Transformer模型,在2019年后使用该模型对中证1000指数成分股进行月度打分。根据打分结果,将中证1000指数成分股分为5个组。然后,等权买入打分最高的一组股票,形成中证1000指数的多头组合。 图20展示了中证1000指数多头组合净值表现与超额收益。根据图中信息可知,该组合相对基准能产生稳定的超额收益。这表明,在中证1000股票池内,Transformer算法选股的有效性较好。 图21展示了中证1000股票池经Transformer打分分组后的各组收益率、超额收益和信息比率信息。根据图中信息可知,Transformer打分分组具有较好的单调性,随着Transformer打分的提高,组合年化收益、年化超额收益和信息比率也随之提高。 3.2. 中证500股票池 使用与3.1节中同样的方法构造中证500多头组合。 图22展示了中证500指数多头组合净值表现与超额收益。根据图中信息可知,该组合在2021年后相对基准能产生稳定的超额收益。这表明,在中证500股票池,Transformer算法选股的有效性总体较好,但是相比中证1000股票池有所下降。 图23展示了中证500股票池经Transformer打分分组后的各组收益率、超额收益和信息比率信息。根据图中信息可知,Transformer打分分组具有较好的单调性,随着Transformer打分的提高,组合年化收益、年化超额收益和信息比率也随之提高。 3.3. 沪深300股票池 使用与3.1节中同样的方法构造沪深300多头组合。 图24展示了沪深300指数多头组合净值表现与超额收益。根据图中信息可知,该组合总体上能对基准产生超额收益,但是超额收益的波动比较明显,稳定性一般。这表明,在沪深300股票池,Transformer算法选股总体有效,但是相比中证1000股票池和中证500股票池有所下降。 图25展示了沪深300股票池经Transformer打分分组后的各组收益率、超额收益和信息比率信息。根据图中信息可知,Transformer打分分组单调性一般。随着Transformer打分的提高,组合年化收益、年化超额收益和信息比率总体上也随之提高,但是波动性较大。 3.4. 全市场股票池 使用2007年至2018年的数据训练Transformer模型,在2019年后使用该模型对全市场股票进行月度打分。根据打分结果,将所有股票分为10组。然后,等权买入打分最高的一组股票,形成全市场多头组合,等权买入打分最低的一组股票,形成空头组合。 图26展示了全市场多头组合与空头组合的净值表现与超额收益。根据图中信息可知,多头组合对空头组合能产生稳定的超额收益。这表明,全市场股票池场景下,Transformer算法选股有效性良好。 图27展示了全市场多头组合与万得全A的净值表现与超额收益。根据图中信息可知,多头组合除了20年Q4至21年Q1外,对万得全A能产生稳定的超额收益。 图28展示了全市场股票池经Transformer分组后的各股票组合年化收益率。根据图中信息可知,Transformer分组单调性良好。随着Transformer打分的提高,组合年化收益也随之提高。 图29展示了全市场股票池Transformer个股打分的IC/IR。Transformer打分的IC均值为0.047,IR为0.69,IC大于0的月份占比为69.81%。由图中信息和统计信息可知,Transformer打分有效性较高,且表现稳定。 3.4. 全市场股票池 图30展示了各机器学习模型输出的多头组合的净值表现。使用相同的因子池,一致的样本划分,同样的训练样本以及同样的组合构建方法,对比各机器学习模型在月频调仓场景下的特征工程能力。Transformer模型并未对其它更简单的模型展现出优势。 可能的原因有几方面。首先,数据特征可能不适合Transformer模型。Transformer模型在处理序列数据和自然语言处理等领域表现出色。上述两类任务中,输入数据之间内在联系较强,因此Q矩阵和K矩阵能有效的找到序列之间的注意力权重。金融数据的特点可能与自然语言数据有所不同,可能需要其他类型的模型来更好地捕捉金融市场的特征。其次,样本量不足。月频调仓场景样本量较小,可能无法充分训练Transformer模型,从而影响其性能。Transformer模型通常需要大量的数据进行训练,以学习到有效的特征表示。如果样本量不足,模型可能无法充分学习到数据的潜在模式和规律。 04 结论与展望 Transformer算法在本文设定的任务场景下具有良好的特征工程能力。在全市场股票池,使用Transformer算法对股票打分后形成的多空组合能够稳定获取收益。Transformer打分的IC稳定,IR值高,单调性良好。在中证1000和中证500股票池,Transformer能有效地进行选股并对基准进行增强。 横向比较其它机器学习模型,在同样的任务场景下,Transformer算法并未表现出优势。可能的原因在于Transformer模型对样本量的要求较高,对输入数据有的适应性要求。如果输入数据的特征与Transformer模型的工作方式不匹配,可能会导致性能下降。 为解决上述问题,后续可以尝试提升获取样本的频率,从而增加样本数量。挖掘出更符合Transformer算法特点的金融数据。 05 风险提示 模型测算风险:超参数设定对模型结果有较大影响;收益指标等指标均限于一定测试时间和测试样本得到,收益指标不代表未来。 模型失效风险:机器学习模型基于历史数据进行测算,不能直接代表未来,仅供参考。 报告作者: 陈奥林 从业证书编号 S1230523040002 陆达 从业证书编号 S1230122070032 详细报告请查看2023年8月13日发布的浙商证券金融工程专题报告《机器学习与因子(二):Transformer特征工程算法测评》 法律声明: 本公众号为浙商证券金工团队设立。本公众号不是浙商证券金工团队研究报告的发布平台,所载的资料均摘自浙商证券研究所已发布的研究报告或对报告的后续解读,内容仅供浙商证券研究所客户参考使用,其他任何读者在订阅本公众号前,请自行评估接收相关推送内容的适当性,使用本公众号内容应当寻求专业投资顾问的指导和解读,浙商证券不因任何订阅本公众号的行为而视其为浙商证券的客户。 本公众号所载的资料摘自浙商证券研究所已发布的研究报告的部分内容和观点,或对已经发布报告的后续解读。订阅者如因摘编、缺乏相关解读等原因引起理解上歧义的,应以报告发布当日的完整内容为准。请注意,本资料仅代表报告发布当日的判断,相关的研究观点可根据浙商证券后续发布的研究报告在不发出通知的情形下作出更改,本订阅号不承担更新推送信息或另行通知义务,后续更新信息请以浙商证券正式发布的研究报告为准。 本公众号所载的资料、工具、意见、信息及推测仅提供给客户作参考之用,不构成任何投资、法律、会计或税务的最终操作建议,浙商证券及相关研究团队不就本公众号推送的内容对最终操作建议做出任何担保。任何订阅人不应凭借本公众号推送信息进行具体操作,订阅人应自主作出投资决策并自行承担所有投资风险。在任何情况下,浙商证券及相关研究团队不对任何人因使用本公众号推送信息所引起的任何损失承担任何责任。市场有风险,投资需谨慎。 浙商证券及相关内容提供方保留对本公众号所载内容的一切法律权利,未经书面授权,任何人或机构不得以任何方式修改、转载或者复制本公众号推送信息。若征得本公司同意进行引用、转发的,需在允许的范围内使用,并注明出处为“浙商证券研究所”,且不得对内容进行任何有悖原意的引用、删节和修改。 廉洁声明: 我司及业务合作方在开展证券业务及相关活动中,应恪守国家法律法规和廉洁自律的规定,遵守相关行业准则,遵守社会公德、商业道德、职业道德和行为规范,公平竞争,合规经营,忠实勤勉,诚实守信,不直接或者间接向他人输送不正当利益或者谋取不正当利益。
大部分微信公众号研报本站已有pdf详细完整版:https://www.wkzk.com/report/(可搜索研报标题关键词或机构名称查询原报告)
郑重声明:悟空智库网发布此信息的目的在于传播更多信息,与本站立场无关,不构成任何投资建议。