香港马会2020年资料查询

【深度报告——金融工程】国债期货量化系列二:国债期货择时因子

时间:2022-09-15 来源:本站原创 作者:admin

  本文我们将主要探讨因子合成实证,在算法挖掘的因子的基础上,加入包括我们计算或收集得到的国债期货择时相关日度因子,组成单品种数目三千余的初始因子池,从因子有效性监控、因子合成方法论探讨、模型训练和策略构建等方面探讨国债期货短线策略的因子合成框架。

  我们分别基于因子线性回归信号等权合成、XGBoost因子合成和LSTM因子合成三种方法处理整合大量单因子信息。模型基于十债期货策略表现来看,线性模型全部因子信号相加普遍为正,进而得到具有仓位调整的国债期货多头策略,策略训练集、验证集、测试集夏普率分别为1.34、1.76和1.29,过拟合风险较小。XGBoost模型方面,六个子策略夏普率位于1.95至3.17的区间,年化收益区间位于5.3%至8.5%,胜率位于56%至59%之间,采用直接叠加的方式对子策略进行合成,得到合成策略夏普率为4.18,胜率58.5%。LSTM模型合成策略在测试集上夏普率为3.54,胜率60.4%,其六个子策略测试集上夏普率区间为1.81至 3.26,年化收益率区间为4.9%至8.7%,胜率区间为53.2%至57.1%。

  我们对策略加入不同程度的滑点分析对比市场摩擦对策略表现的影响。线性组合策略受到的影响最小,加入2tick滑点策略年化收益从17.5%降至16.4%,夏普率从1.29降至1.20;而机器学习模型每一个tick的交易摩擦提升对策略年化收益影响约6%,在保守的两个tick作为滑点的策略设置下,XGBoost合成模型多空策略测试集年化收益40%、年化波动率12.6%,最大回撤4.8%,夏普率3.19;LSTM合成模型多空策略测试集年化收益31.5%、年化波动率12.3%,最大回撤6.8%,夏普率2.56。(最高杠杆倍数为6倍)

  我们在本系列专题的上一篇《国债期货量价因子挖掘》中对国债期货时序特征进行分析,并对技术指标与基于遗传算法的量价因子挖掘进行了实证,得到初步结论是国债期货具有较显著的日度与周度反转效应,我们基于遗传算法挖掘得到的首批量价因子经测算具有一定的样本外稳定性。进而,我们进一步基于不同历史窗口大批量训练遗传算法模型,扩充国债期货量价因子池,并基于动态筛选与新增对指标池进行维护。本文我们将主要探讨因子合成实证,在算法挖掘的因子的基础上,加入包括我们计算或收集得到的国债期货择时相关日度因子,组成单品种数目三千余的初始因子池,从因子有效性监控、因子合成方法论探讨、模型训练和策略构建等方面探讨国债期货短线策略的因子合成框架。

  基于遗传算法,我们首先整理国债期货量价等指标作为算法因子挖掘基于的指标池,除了基础的开收高低成交持仓外,我们还加入了区间收益率的均值、方差、偏度、峰度、分位数等统计量,尽可能提供量价数据较为全面统计信息。因子挖掘的被解释变量为十年期国债期货1日、5日、10日、20日持仓周期对应的收益率。因子挖掘模型选择与参数设置我们在此前的报告中有详细介绍,模型运用python的gplearn工具包的Symbolic Transformer算法,在原有公式基础上增加了时序运算公式,例如在时序滚动窗口上计算差分、变化率、最大最小、相关性、标准差和趋势线等作为补充。模型的超参数设置方面,目标函数为因子与国债期货不同持有期收益率的spearman相关系数,我们基于批量挖掘因子的需求对遗传算法的超参数进行了部分修改,调高了进化代数,随着简化代数的增加模型的fitness有所提升,得到公式的也可能更加复杂,因而需要稍微调高parsimony coefficient加入复杂度惩罚,此外,我们还调高了子树变异、提升变异和点变异的概率,相对交叉变异这三种变异方式得到的结果更加不稳定,这样虽然不利于单次效果,但有助于提升我们大规模训练得到的因子池的多样性。

  因子挖掘的窗口设置方面,我们基于十年期国债期货上市以来的历史样本,划分不同窗口期进行因子挖掘和验证,基于2015至2018年、2016至2019年、2017至2020年以及2018至2021年四个窗口进行分别划分训练集与验证集进行因子挖掘。因子在验证上的检验方面,我们采用与因子挖掘相同的目标函数(spearman相关系数)进行因子样本外表现验证,将在验证集上相关系数绝对水平过低和与测试集相关系数方向反向的因子剔除,通过则加入因子池。

  除了算法挖掘的因子外,我们还加入了储备的国债期货相关的日度择时因子,包括基差情绪指标、利率利差指标、债券成交与资金面指标等。其中,国债期货基差情绪指标是我们自己计算并跟踪的国债期货基差相关数据,包括不同模型和不同CTD对应基差、净基差、IRR、隐含利率、期限利差等国债期货核心指标。利率利差指标部分基于活跃券计算,部分基于中债曲线计算,其中活跃券组合是我们自构建的包含2年期、5年期、10年期活跃券组合,活跃券筛选的池子为国债期货可交割券池子,基于月度组合再平衡的方式将成交量最活跃的三只债券等权构成的国债现券组合。债券成交与资金面指标是我们基于CFET获取的债券日度成交数据与资金面日度跟踪数据。此外,CFET债券成交数据与资金面数据指标较多,部分指标数据连续性不强,因而选取指标前我们先对指标基于指标数据质量进行筛选,筛选条件为,筛选标准为缺失值不超过20%,且能够持续更新的指标,此外CFET指标大部分数据时间较短,因而在训练集上有数据的指标较少,在最终的模型中特征重要性权重较低。最终,这些补充的因子我们均基于原值与环比变化两种方式纳入指标池。

  我们基于不同窗口期进行算法因子挖掘,目的在于收集不同历史区间的量价特征,而在构建策略部分,我们将重新划分训练集验证集与测试集,并对全部窗口期挖掘得到的遗传算法因子进行基于全新样本数据的重构。由于量价特征挖掘的因子本身具有容易失效的缺点以及因子在新样本区间重构后也很可能存在不适用的情况,我们在构建因子合成策略之前,先对因子池进行初步筛选,筛选方法基于两个维度:一是以训练目标函数spearman相关系数为基准进行评估,二是对因子数据分布的稳定性进行评估。

  首先,基于模型调试的训练集与验证集上将相关系数p值不显著的因子剔除(测试集为纯粹的样本外数据,用于模型跟踪校验)。对于其他国债期货择时相关因子,我们也基于同样的在训练集与验证集上相关系数p值显著的条件进行筛选,同样保留测试集为样本外跟踪数据。其次,评估因子数据分布的稳定性方面,主要是为因对因子合成模型对因子标准化的要求,对于部分机器学习模型因子标准化情况对模型训练效果影响较大(例如SVM、深度学习模型等),我们基于训练集的均值标准差对验证集因子进行标准化,剔除验证集标准化后方差大于5的因子(方差为5的临界条件选择较为主观,实际上大部分验证集标准化因子方差都保持1附近,只有部分因子方差异常之大,我们主要为了减弱这部分异常因子在深度学习合成模型训练中对validation loss的干扰)。

  最终,从1566个遗传算法因子和1675个国债期货相关因子中,我们基于上述筛选条件得到共计1103个初选因子,其中包括895个遗传算法因子,和230个国债期货择时相关日度指标。我们对因子相关性进行简要分析,从全部因子的相关性系数矩阵和两大类因子的相关系数分布图中可以看出,我们的到的初选因子池中因子之间的相关性是较低的,因子相关系数大部分位于±0.2的区间内,其中少量因子间相关性较高,主要是国债期货基差、利差相关的指标本身就具有一定的内在相关性所致。

  基于策略划分的训练集、验证集与测试集(文章3.1节详细介绍),我们对单因子的表现进行简要梳理。遗传算法挖掘得到的因子测试集夏普率区间为-2.5至3.55,夏普率为正的因子占比86.3%,国债期货相关因子中,我们列出六个测试集表现较好的单因子,其中包括2个中债利率指标和4个CFET债券成交指标,我们在后续附表中详细介绍指标构建公式或指标数据来源。在验证集与训练集上遗传算法因子表现较为稳定,表现较好因子夏普率水平与测试集较为接近,验证集上表现最好的六个国债期货相关指标包括1个中债利率指标和5个CFET债券成交指标,训练集上国债期货相关指标表现不佳,一定程度上也与测试集区间内市场波动较大有关(基差波动亦较大),同时CFET指标历史数据较短数据普遍从2019年左右开始,对训练集贡献较为有限。

  线性等权合成方法的方法是因子合成部分的基础参考系和对照组,我们通过线性回归的方法对单因子进行样本训练集的预测回归,并在验证集与跟踪集上对因子表现进行跟踪,最后通过因子信号方向等权合成的方法进行合成,等权合成的效果一定程度上可以衡量出我们经过初选的因子池择时效果的整体平均水平。由于单因子数量庞大其多空信号(1, 0, -1)加总后得到数值区间波动极大的结果,我们对因子加总信号进行归一化,得到基于特定杠杆率水平要求下的包含仓位的信号结果。

  分类问题算法主要分为Bagging和Boosting两种。Bagging是分类器集成学习的一种,其基于随机抽样分别独立训练,容易并行计算,且各个弱学习器之间没有依赖关系,体现了Bootstrap随机采样思想在机器学习上的应用。得到的弱分类器最终基于投票、取平均值等方法组合成强分类器。随机森林(Random Forest)则是较为常用的通过Bagging的方式组成的分类器。Boosting由一系列基本分类器按照不同的权重组合成为一个强分类器,这些基本分类器之间有依赖关系,包括Adaboost算法、提升树、GBDT算法、XGBoost等。其中,AdaBoost(Adaptive Boosting)将弱分类器以串行的方式组合起来,对于分类错误的样本,提高其权重,以更新样本权值后的数据为训练集,依次训练得到一系列弱分类器,最终将全部弱分类器按错误率越低的弱分类器所占权重越高的规则进行组合得到强分类器。梯度提升决策树(GBDT)模型则在训练算法上有较大不同,该算法的设计是基于新的学习器去拟合此前模型与真实值的残差的思路构建。假设前一轮迭代得到的强学习器是,损失函数是,本轮迭代的目标是得到一个的弱学习器使损失函数最小化,即每次迭代得到的树模型都要让样本的损失尽量变得更小。XGBoost模型主要是实现对GBDT算法的改进和效率提升,其在损失函数、正则化、切分点查找和并行化设计等方面进行了改进,原GBDT算法在训练第n棵树时需要用到第n-1棵树的残差,从而导致算法较难实现并行,而XGBoost通过对目标函数做二阶泰勒展开,使得最终的目标函数只依赖每个数据点上损失函数的一阶导和二阶导,进而容易实现并行。

  我们在此前的报告《债券组合量化策略研究》中基于现券蝶式组合策略对不同回归树模型进行了应用尝试并与线性回归模型比较,结合样本外跟踪情况来看,尽管机器学习模型在训练过程中很难消除过拟合即实现验证集与训练集拟合优度较为接近的效果,但机器学习模型样本外的表现可能并不输给线性模型,其中XGBoost模型在树模型和线性模型中均实现相对更好的样本外跟踪效果,同时也较为广泛收到业界认可。本文我们继续基于XGBoost进行国债期货短线策略因子的合成应用。模型超参数优化方面,基于遍历的方式确定最优超参数,并考虑模型本身的随机性影响,确定参数后训练多个模型进行保存。

  循环神经网络(RNN)相对传统网络结构更能有效捕捉数据规律在时间维度的持续性,类似链状结构的设计允许信息在时间步上进行传递,这种结构设计显示循环神经网络更适合序列相关问题方面进行应用。尽管如此,但常规RNN模型还是难以有效学习时间跨度较长的相关讯息,LSTM (Hochreiter & Schmidhuber, 1997) 对循环神经网络的最重要贡献就是解决了这一长距离依赖问题。LSTM的关键设计是单元状态(Cell state),即贯穿图顶部的横线,LSTM通过称为门(Gate)的结构精心调节向单元状态中丢弃和添加信息,LSTM有三个的门,遗忘门决定Cell state需要丢弃哪些信息,输入门决定向Cell state添加那些新信息,输出门根据输入决定输出在Cell state中的特征。单元状态在时间连上传输过程中仅基于这三个门产生少量的信息交互,长记忆信息得到有效保存。

  RNN在语言处理、翻译等方面已经取得非常成功的应用效果,而金融时间序列的预测问题从信噪比、样本量等方面建模难度较大,业界对神经网络的应用也有较多探讨,对于时序预测方面LSTM模型相对更受认可,我们对其进行初步尝试。基于LSTM模型,我们进行了两方面的应用探讨,第一种方式是与遗传算法并列使用,基于相对更为复杂的网络设计进行因子挖掘与合成的结合运用,即输入不是筛选得到的因子池而是gplearn模型训练的基础量价数据与国债期货其他相关指标,尝试完全通过深度学习构建预测模型。整体上而言,该方法初步来看并没有得到较为令人满意的模型结果,LSTM模型的训练也较为复杂耗时,这种端对端的预测模型训练或需要进一步改进。第二种方式是基于与线性模型、XGBoost模型相同的经过初选的因子池进行合成建模,该场景下模型输入的信息质量有一定保证,我们相对减少了LSTM模型的层数,并降低了每层单元量,同时提高dropout比率,进行因子合成的尝试。

  LSTM模型训练难度和复杂度相对前序模型方法均有所提升,我们在实际训练过程中分步进行模型训练调试,首先,我们对不同网络层级结构、不同时间步长度、unit与dropout参数的方案进行分别多次训练,并比较其在训练集与验证集上的loss下降情况,确定网络结构、参数设置;然后,基于固定的结构和参数,适当增加epoch,调低learning rate,并加入early stopping,基于验证集loss最小的规则保存最优模型。

  我们分别基于因子线性回归信号等权合成、XGBoost因子合成和lstm因子合成三种方法进行策略构建探讨,线性等权主要是作为对照组,通过线性的组合我们可以比较清晰的得到因子较为原始的表现情况与统计信息,而我们主要基于对两种机器学习模型的训练提升大批量因子的处理效果,得到较为稳健的国债期货量价策略。

  我们先对策略构建的框架和数据处理等方面进行简要说明,首先,我们对策略窗口进行重新划分,将2022年之后的数据作为纯粹的样本外测试集,无论是因子相关性验证、因子分布验证还是策略模型的训练均不涉及2022年的样本数据;同时我们将2015-04-02至2021-12-31的数据根据7:3的比率划分为训练集和验证集。在模型训练的过程中,我们会部分结合验证集的表现来判断模型是否过拟合,模型在验证集上loss下降情况是否令人满意等等,因而验证集对于最终模型的确定是有小幅的贡献的并不能完全算作纯样本外跟踪的情况。此外,因子标准化方面,我们基于解释变量在训练集的均值方差统计结果,分别对验证集与测试集上的数据进行标准化,得到因子不同样本区间的标准化结果。

  其次,信号可得性处理方面,我们分别对解释变量和被解释变量进行可得性处理,解释变量方面,均是市场交易相关数据统一滞后一个交易日,同时对于被解释变量基于预测区间进行前置,我们策略构建部分持有期选择预测1日十年期国债期货收益率,因而将被解释变量前置一天,进而我们策略跟踪信号可以直接理解为当日开仓信号,以当日至加一个交易日收盘价对应的价格变化计算信号对应的收益情况。

  此外,我们基于多策略等权的方式进行仓位控制。因机器学习模型的训练普遍具有一定的随机性,我们采用不同批次训练的模型结果分别作为独立的策略,进行仓位等权配置,具体而言XGBoost模型与lstm模型分别得到基于最终确定的最优超参数(或网格结构)的6次训练保存的模型结果,各模型独立生成(1,0,-1)的策略信号,叠加得到杠杆倍数最高的6倍的包含仓位变化的国债期货多空策略,两个不同的模型的策略表现情况我们将分别跟踪。

  最后,策略的交易标的为十年期国债期货,策略信号频率为日度,若日度信号强度不变则不发生仓位变化。我们基于收益率拼接的方法对国债期货进行移仓换月价格处理,即通过跟踪主力合约切换日期,发生切换后,我们则使用新合约的收益率,从十年期国债期货上市起点的价格和收益率序列进行累乘得到移仓换月调整后的复权价格数据。

  基于单因子信号等权合成的简单方法,我们得到具有仓位加减的国债期货多头策略,即基于回归的方法我们得到的单因子历史信号有正由负,但全部因子信号相加普遍为正,因而组合后策略信号普遍为做多,这一现象背后的原因主要是因国债期货多头carry的普遍存在,因而基于与国债期货收益相关系数最大化的训练目标,训练得到的因子可以一定程度上捕捉被解释变量平均收益正的统计信息,因而单因子给出的信号更偏向于做多,伴随信号强弱带来的部分仓位变化,即国债期货“多头增强策略”。

  策略效果方面,我们将等权合成效果分别基于训练集、验证集、测试集与同期基准进行对比,由于简单合成策略从信号结果上看是多头策略,因而其与基准的胜率一致,我们主要考察基于因子合成策略对收益风险比的提升。首先,从线性合成模型的训练集、验证集、测试集夏普率(1.34/1.76/1.29)对比来看,模型过拟合风险非常小,线性模型与机器学习模型不同,验证集与测试集均可看做是样本外模型结果,前者整体处于市场波动较大的环境(2019-12至2021-12)策略取得最高的夏普,后者整体处于上行环境,策略夏普率也是可以小幅跑赢多头基准的,线性模型的稳定表现说明基于初选的因子池本身是有效的。其次,基于信号强弱控制仓位的多头增强策略也较为符合固定收益策略的本质出发点,在获取市场长期多头carry收益的基础上,基于模型灵活调整仓位,优化收益风险比。最后,虽然是多头策略,但策略表现并非完全与传统固定收益收益模式相同,基于大批量价因子管理多头仓位的策略收益仍具有较强的CTA策略属性,整体更偏好于高波动的环境。

  考虑到机器学习模型的随机性影响,为增强最终结果的稳定性,我们最终基于优化得到的模型超参数,基于不同随机种子训练和保存多个模型,将各个模型作为单独的子策略,进行等权合成。子策略的净值计算方法即为单倍杠杆多空策略净值,子策略间相关性整体是比较高的,但合成后也可以起到一定模型风险分散和策略稳定性增强的效果。

  从测试集结果来看,六个子策略夏普率最低为1.95,最高为3.17,最大回撤在1%至1.5%的区间,年化收益区间位于5.3%至8.5%,胜率位于56%至59%之间。子策略合成的过程采用直接叠加的方式,合成策略杠杆水平的变化区间为[ -6,6 ]与线性等权策略保持杠杆率整体水平一致。合成策略在测试集上夏普率为4.18,胜率58.5%,年化收益率52.5%,年化波动率12.6%,最大回撤4.1%。在验证集上夏普率为5.15,胜率56.2%,年化收益率87.1%,年化波动率16.9%,最大回撤5%。模型整体评价方面,验证集与训练集策略效果的差距表现出过拟合的特征,或受制于样本量的限制训练过程中难以消除过拟合的现象,但模型在测试集上表现相对验证集并没有显著变差,说明策略在样本外的应用具有一定稳定性。

  LSTM模型因子合成方面,我们同样采用多次训练保留多个模型、以及子策略合成的方式构建最大杠杆率水平为6倍的国债期货多空策略。具体模型训练和保留方法的设置上,与XGBoost模型有一些差异,我们基于选定网络结构和参数设置,我们采用model checkout的方法结合验证集的loss表现选择最优的模型进行保存,也就是说LSTM模型在训练过程中也一定程度使用了验证集的信息,只有测试集才是样本外数据。从策略结果来看,不同样本上策略夏普率的差异也体现出了这一特征。首先,合成模型净值表现方面,其在验证集上取得远优于XGBoost模型的夏普率效果,而测试集夏普率有所下降。合成策略在测试集上夏普率为3.54,胜率60.4%,年化收益率43.5%,年化波动率12.3%,最大回撤6.0%。在验证集上夏普率为7.86,胜率63.7%,年化收益率124.8%,年化波动率15.9%,最大回撤5.3%。其次,从子策略的角度,单倍杠杆的设定下,其在测试集上夏普率区间为1.81至 3.26,年化收益率区间为4.9%至8.7%,胜率从53.2%至57.1%。子策略从胜率、夏普等角度相对XGBoost模型有所不及,但合成模型胜率较高,或一定程度上说明LSTM模型训练过程的随机性更强,相同参数多次训练出的模型结果具有更大的差异性,并在成时产生一定的风险分散效果增强了合成后的胜率。

  最后,我们对策略加入不同程度的滑点分析对比市场摩擦对策略表现的影响。对于线性回归等权策略、XGBoost因子合成策略、LSTM因子合成策略均分别考虑不加滑点、加入单倍买卖价差作为滑点、双倍买卖价差作为滑点的三种情景。在测试集上,线性回归等权策略受滑点影响较小,策略平均仓位约三倍杠杆,整体仓位在2~6倍杠杆之间波动换手较低,因而即便考虑2倍买卖价差作为滑点,对线性组合策略表现的影响也较低,策略年化收益从17.5%降至16.4%,夏普率从1.29降至1.20。而机器学习因子合成信号结果变化较为频繁,受到的市场摩擦影响相对更大。其中,香港大众兔费印刷图库,对于XGBoost合成模型,其子策略持仓周期约为3~4天,单倍买卖价差的滑点惩罚则使策略年化收益率降低6%左右,从无滑点到单倍和双倍滑点的设定下,策略夏普率分别为4.18、3.67和3.19,在较为保守的策略设定下,基于两倍滑点测算,策略测试集年化收益40%、年化波动率12.6%,最大回撤4.8%,夏普率3.19。对于LSTM合成模型方面,其子策略持仓周期与XGBoost模型较为接近,约为2~5天,加入单倍买卖价差作为交易滑点惩罚使策略年化收益率同样降低6%左右,从无滑点到单倍和双倍滑点的设定下,策略夏普率分别为3.54、3.04和2.56,在较为保守的基于两倍滑点测算的设定下,策略测试集年化收益31.5%、年化波动率12.3%,最大回撤6.8%,夏普率2.56。

  热门评论网友评论只代表同花顺网友的个人观点,不代表同花顺金融服务网观点。

  正面交锋iPhone 14!超100万人预约,华为Mate50未售先火

  南方电网为新能源汽车产业高质量发展提供有力支撑 构建完善服务生态 赋能产业融合发展

  直击2022世界新能源汽车大会:电动化转型成共识 业界盼汽车碳排放标准尽早落地

  十大机构看后市:水牛证伪已兑现 A股看节奏不必为了切换而切换 9月市场两个关键点

  正面交锋iPhone 14!超100万人预约,华为Mate50未售先火

  投资者关系关于同花顺软件下载法律声明运营许可联系我们友情链接招聘英才用户体验计划涉未成年人违规内容举报算法推荐专项举报

  不良信息举报电话举报邮箱:增值电信业务经营许可证:B2-20090237

织梦CMS官方 DedeCMS维基手册 织梦技术论坛

Power by DedeCms