投资要点:► 由于国债期货良好的稳定性,同时存在杠杆和做空属性,因此国债期货成为金融市场重要的组成部分。当然国债期货的收益较难预测。本文将探究通过不同因子构建的国债期货择时策略,对国债期货投资者提供借鉴。 chatgpt辅助策略开发 使用chatgpt对策略代码进行开发可以有效提升工作效率。我们在整个策略研发过程中使用最新的人工智能chatgpt语言模型在因子测算对照、策略开发以及策略绩效验证阶段进行论证,人工智能语言模型展示了巨大的应用潜力。 从宏观与技术因子角度选取因子 我们从商品、国债、宏观、动量反转、超买超卖、趋势、波动、成交量这8个角度选择16个因子探究因子与国债期货收益的关系。 逻辑回归模型预测国债期货收益 使用逻辑回归模型对国债期货收益进行预测,当预测收益为正时做多,反之做空,原始策略年化收益为15.83%。使用归一化、更新窗口、删减因子等方法对策略进行优化,回测结果表明,最佳参数下策略能更有效识别买入卖出时机,模型的胜率为63.63%,年化收益可达93.40%。 风险提示 系统性风险,模型失效风险,模型基于简化假设及对历史数据的统计并不能完全准确刻画现实环境与预测未来,仅作为投资参考。 国债期货择时策略的构建 技术因子选择 构建的因子主要包含两个部分:第一个部分是技术类因子,主要包含动量反转因子、超买超卖因子、趋势因子、波动因子和成交量因子,该类因子通过对基础量的分析与组合计算出相应的因子数据以反映特定的股票债券特征。另一部分是包括商品因子,反映了不同商品的价格状态,国债因子反映了国债的基础信息以及宏观因子,反映了当时的经济情况。 基于chatgpt的技术因子生成 诸如chatgpt这类的人工智能语言大模型在今年产生了轰动的影响,因此我们对chatgpt在量化策略中的应用进行了研究。本文中,我们使用www.chatrobot.cn网站接入chatgpt。 我们首先使用chatgpt进行技术因子的生成,我们首先以ATR因子为例,我们首先询问chatgpt关于ATR因子的定义,具体操作如图1所示。 ATR指标在宽邦网站上的定义是: ATR又称Average true range平均真实波动范围,简称ATR指标,是由J.Welles Wilder发明的,ATR指标主要是用来衡量市场波动的强烈度,即为了显示市场变化率的指标。 首先提出的,这一指标主要用来衡量价格的波动。因此,这一技术指标并不能直接反映价格走向及其趋势稳定性,而只是表明价格波动的程度。 这一指标对于长期持续边幅移动的时段是非常典型的,这一情况通常发生在市场的顶部,或者是在价格巩固期间。根据这个指标来进行预测的原则可以表达为:该指标价值越高,趋势改变的可能性就越高;该指标的价值越低,趋势的移动性就越弱。 可以看出chatgpt帮我们实现的ATR指标的定义与宽邦网站上对ATR的定义一致,并且表述方式更加清晰。我们接下来尝试让chatgpt帮我们生成对应的代码,具体方式如图2所示。 我们可以看出使用chatgpt所生成的代码和我们手写的代码基本一致,并且拥有完整的注释以及优秀的可读性,并且容易进行修改。运行该代码与我们自己手写的因子模型进行对比,发现所得结果完全一致。因此,chatgpt模型在因子计算方面展现了高效率。 动量反转因子 动量反转因子表1列出了,在传统金融学的看法下,动量反转效应是由于数据挖掘中存在偏差和信息传递速度较慢的结果导致。而在行为金融学中,研究员们从投资者的微观行为与微观操作的角度来对动量反转进行分析,他们认为动量反转效应是投资者的心理和行为所产生的结果。投资者们不是完全理性投资者,他们的投资行为中存在很多不严格符合逻辑的情况。其中,主要的非理智行为主要包括:1.过度自信:投资者过分高估自己的投资能力,低估自己的犯错可能。2.处置效应:投资者倾向于卖出自己盈利的股票债券和持有亏损的股票债券。3.拇指法则:投资者在做决策时容易忽略其认为不重要的因素,过分依赖直觉或者经验做出决定,但是这些被忽略的因素往往会包含重要的因素。投资者们的这些主观行为也会直接或间接加剧动量反转效应。动量反转因子正是根据投资者的这些心理状态进行分析从而获得的因子。 超买超卖因子 表2列出了全部我们所使用的超买超卖因子,超买和超卖是用来描述市场状况的两个重要因子。超买是形容市场因太多人买入而导致股价急升,股价本身大幅偏离其内在价值,但是在一轮急升后,当高位购买力不足时,价格就可能出现技术性向下调整的情况。超卖,是指市场因太多人抛售而导致股价急挫,股价大幅低于其内在价值。 不过,在一轮急跌后,低位卖出压力大幅减少,价格可能出现技术性向上反弹。 股票债券在超买之后,股价因过高而缺乏承接,结果股价便会下跌。同样地股票债券在超卖之后,股价会大幅低于合理的价格区间,变得非常便宜。这本质上是根据经济学上的供求理论所决定的。而超买超卖指标正是衡量超卖超卖趋势的重要指标。 趋势因子 趋势类因子如表3所示,普通方式生成的股价曲线容易因为追涨杀跌情绪所影响。 投资者在进行投资过程中所产生过度自信等不良情绪很容易影响到他们对于股市的判断,导致出现大规模超买超卖现象。为了中和投资者所产生的不良情绪从而导致股票债券的价格大规模偏离应有区间,趋势类因子对过去的市场行情进行了中和,可以更好的反映出股票债券的波动趋势。 波动因子 表4波动因子 波动因子如表4所示,波动因子反映了股价的波动情况对收益的影响。波动率越大,资产预期收益的不确定性越高。 波动因子会因为不同时间而产生变化,如果某只股票债券在过去一段时间的波动率明显高于同类型股票债券的平均水平,则该股票债券可能是近期资金多空角逐比较激烈的战场,一般来说,个股波动率高从统计意义上讲是负向因子。 成交量因子 成交量是交易对大众吸引程度的真实反映,当大众看好某个股票或债券时,就会有很多人买入,相应的价格和成交量也会因此上升。虽然成交量和价格关系一直有待研究,但我们可以明确知道成交量的数值可以在一定程度上反映到股票债券的价格上,也就是我们所谓的量价关系。量价因子正是根据股票债券的成交量信息去对股票债券的价格做进一步的预测。 模型选择 国债期货是一个择时问题,择时信号取决于模型分类的结果。它可以视为一个二分类问题,我们只需要预测未来的涨跌情况即可。常用分类方法有很多,比如逻辑回归、支持向量机、K近邻、朴素贝叶斯、人工神经网络、决策树等。 使用chatgpt进行训练模块开发 在开发完因子生成部分的代码后,我们认为chatgpt能够辅助开发整体模型的不同模块,因此我们尝试用其辅助开发滚动训练模块,具体开发过程如图3所示。 图3使用chatgpt查询因子定义 我们发现chatgpt开发的代码可以直接运行,而且基本满足我们的使用,在实际使用的过程中只需要将选择的因子从收盘价和每日最高价调整为对应的因子并做选择因子数量对应维度的变换即可,极大程度的降低了开发所需的时间成本。 使用chatgpt进行辅助回测算法开发 我们基于chatgpt进行辅助回测代码开发。经过我们的实践操作发现,chatgpt生成代码拥有良好的可读性和扩展性。因此在本次研究过程中,我们尝试使用chatgpt辅助进行回测算法开发。chatgpt最大回撤的代码如图4所示。 经过进一步的验证,该代码可以将策略收益转化为策略对应最大回撤。同理我们使用相似的做法使用chatgpt计算出了策略对应的夏普率,胜率等一系列指标作为参考。 回测结果与策略优化 回测结果 我们研究的样本区间为2016年11月到2022年12月,由于数据样本点有限,我们采用shifting-windows的方式建立预测模型。由于建立的是预测模型,考虑到数据的可获得性,将所有因子滞后1期。 使用Python中sklearn库的LogisticRegression,由于数据集较小且为二分类问题,solver参数对应的优化算法使用“liblinear”,最少使用40期数据作为训练集,根据结果选择做多占优的指数,考虑万分之三的双边交易成本,同时加10倍杠杆,我们使用全部的因子对初步回测结果如下: 该方法的胜率为51.02%,年化收益率仅有15.83%。 策略优化 我们共选取16个因子,数量较多,考虑到因子之间的量纲可能出现差异影响模型效果。因此我们增加了归一化操作,平均了不同因子之间的量纲。具体结果如下图所示。 上述策略仍有较大回撤,考虑到不同因子对于模型的作用效果,我们重新对所有因子进行进一步的测试,最终得出结论,在选择国债10,货币净投放, GC007,商品指数2,汇率指数, EPU, PMI, sigma, mount, AR, CMO,BR, AROON, EMV, MA12, VMACD,ASI, TEMA, VHF,VRIS,CMF, D,K央行票据1年,vol,铁道债5的时候产生了不错的效果,胜率可以达到63.63%,同时策略年化收益率可以达到93.40%。 因子分析 我们对于最终选择的因子进行分析,发现在技术因子中我们选择了动量反转因子AR,CMO,BR,AROON,EMV,12日平均值因子MA12,趋势因子VMACD,ASI,TEMA,VHF和成交量因子CMF,VRIS,超买超卖因子D,K,波动率因子RI,CVI。 选择了较少的超买超卖因子和波动率因子以及成交量因子,这说明对于国债期货而言,投资者的投资情绪较为稳定,很难出现像股票债券中所产生的超买超卖现象导致模型严重低于期望的情况。同理根据没有波动率因子也可以分析出,大部分国债投资者的情绪稳定,导致波动率在国债期货中并不是一个重要的参考项。 根据所选用的因子来看,在动量反转因子中我们选择了6个不同的因子,分别是AR多空对比因子,BR多空因子,CMO因子,AROON反映近期最高价与最低价距离因子,EMV指标通过计算14个交易日内股票价格与股票成交量之间的关系反映股票的动量情况。可以看出对于国债期货与股票债券不同,因为做空机制的存在,多头和空头对于国债期货价格的影响都同样重要,因此我们选择了AR,BR,CMO,EMV等因子去判断短期内多空的占比,以模拟更真实的市场前景。同时因为国债期货对于长期而言相对比较稳定,因此长时间的因子可以通过获得过去的时序信息来推演未来的市场状态,因此我们选择了AROON因子。平均值因子MA,VMACD,ASI,TEMA以及VHF因子都可以反映出长时间的模型收益情况,因此对于国债期货而言,包含长期信息的因子会显得非常重要,这些因子不仅能反映出当前市场的情况,还能通过过去市场的情况拟合未来一段时间市场的情况,此类因子在国债期货因子里属于重要因子,因此我们选择了4个相关性较低的因子进行测算。而CMF和VRIS这两个成交量因子通过判断每日的市场强度得出对应结论,超买超卖因子D,K和波动率因子RI,CVI也都可以从当时的因子信息中获得最新的超买超卖信息以及波动率信息。我们选择的因子从波动率,超买超卖,成交量,过去趋势,当前形势等多方面组合形成了对整个市场的分析。 同时我们对PCA策略进行了尝试,我们发现,在最优的因子选择条件下,使用PCA对原始数据进行处理会导致模型效果变差,我们推测由于不同因子之间的相关性较弱,导致使用PCA会省略模型之间的一些关键信息,从而影响模型结果。 策略绩效 我们采用数据归一化、因子筛选、PCA等方式做了参数测试,从回测表现看能够得到相对来说比较稳健的国债期货投资策略。整个投研过程中我们也辅助最新的chatgpt大语言模型发掘其在策略开发中的巨大潜力,后面探索更多的应用。 策略稳健性与绩效 在回测期内,根据上证指数走势划分市场状态:2018年7月至2019年2月为熊市,2019年3月至2020年6月为震荡市,2020年7月至2021年12月为牛市,2022年1月至2022年9月为熊市。 在上述子区间内应用对应择时策略,可以发现在各个子区间上的持有期收益均高于长期持有所产生的收益。这说明国债期货