【国信金工】基于连续信号的商品期货交易策略
报 告 摘 要
CTA策略近年表现承压,因此我们希望对传统的CTA策略思路进行改进和优化。在CTA策略中,交易信号扮演着指引和触发交易的角色。然而,传统的CTA交易信号仅仅告诉我们开仓的方向,用0、1、-1来分别代表平仓、多仓和空仓。这意味着我们只有两种状态可选择,要么满仓,要么空仓,无法准确描绘信号的强弱。然而,信号强度常常蕴含着丰富的信息。因此,我们尝试寻找一种能够刻画CTA信号强弱的方法。在本篇报告中,我们将信号强度分为两类,即开仓时点信号强弱和开仓后信号持续度。通过考虑信号的强度因素,我们观察到相较于传统策略,加入信号强度后的策略表现有明显的提升。
开仓时点信号强弱是指通过判断触发开仓信号强度或置信度来决定开仓与否,它用于衡量开仓信号的可靠性和预测能力,帮助决策是否执行开仓操作。我们在传统信号的基础上加入了价格波动强弱(由ATR与收盘价的比值计算)和价格的噪音变化趋势(通过趋势噪音比计算)两个条件,只有当价格波动率较低且价格趋势中的噪音不断减少时,我们才进行开仓。
三、开仓后信号持续度
四、基于连续信号的商品期货交易策略
在经过已实现波动率调整后,我们构建了基于连续信号的商品期货交易策略,策略费后年化收益率为23.1%,夏普率为1.71,Calmar比率为1.67,表现较为稳健。策略实现的全样本期的年化波动率为13.85%,平均杠杆率为2.5倍。在CTA市场持续回撤的2022年,策略仍实现了17.67%的收益率。
自2022年以来,5亿私募CTA指数持续回撤,因策略设计差异,我们基于连续信号的商品期货交易策略与指数相关性仅2.77%,因此,我们的策略得以在市场整体表现不佳时脱颖而出;同时,在如2020年CTA市场整体表现亮眼时,我们的策略与5亿私募CTA指数的相关性则较高,维持在0.6以上。可见在市场整体表现较好时我们的策略与全市场有着一致正确的判断。相较于传统CTA信号,我们能够实时判断涨跌概率提供连续信号,并相应地调整投资决策,从而在投资组合管理和风险控制方面具备优势,为投资者提供稳定可靠的回报。
一
近些年,我国CTA市场总体表现不佳。自2017到2018年,CTA策略迎来了近十年以来的第一次阵痛,自2016年底开始长达近一年的持续大幅回撤,让投资者对CTA策略一直以来如类固收策略般的稳健性开始了质疑。2019年初市场稍有回暖,2019年底就又迎来了一波策略的回撤。至此,市场中的投资者依然认为CTA策略尚未进入稳定期。2020年伴随着疫情的突袭,市场波动开始加大,CTA策略迎来一波大幅上涨。然而疫情带来阴霾仿佛笼罩了CTA策略初期亮眼的表现,直至2020年中后期,CTA策略的出色收益才进入到投资者的视野。但是好景不长,伴随着黑色系价格调控以及俄乌冲突等多发因素的影响,2021年末以来,大批CTA产品再次回撤,面临较大投资者赎回压力。时至今日,CTA市场依然面临着较大的市场考验以及策略下行压力。
1.1
CTA策略表现
图1我们以朝阳永续编制的5亿私募CTA指数(以规模大于5亿的私募机构旗下产品为基金池,筛选出机构代表性产品中策略分类为管理期货的产品作为5亿指数的成分基金构建指数。其中纳入5亿私募CTA指数的私募基金管理人共计130家,纳入产品数据为189只。)为例,展示了2015年至今CTA策略的净值走势以及回撤情况。
1.2
CTA策略表现不佳原因分析
归结CTA策略失效的原因,往往离不开市场的波动率。Fung and Hsieh(2001)中提出趋势跟随类策略的收益率特性与回溯跨式期权(lookback straddles)相似,因此CTA策略的收益与市场波动息息相关,商品市场的波动率很大程度决定了CTA策略是否可以盈利。当市场在波动率处在上行阶段或者维持高波动时,CTA策略往往能够盈利;而在波动率下行或者长期维持较低水平时,CTA策略往往表现不佳。
图3展示了2016年以来Wind商品指数收盘价收盘价点位与对应20日波动率的情况。绿色虚线区域代表了商品市场波动率下行的时期,同时也是CTA策略表现不佳的时期,如2017、2018以及2022年;红色虚线区域是波动率上行的时期,同样也与2020和2021年CTA表现比较好的时期相一致。
从图3中可以看到,在2017-2018年间,[文]商品市场波动率有较为明显的下行趋势,在此期间[章]许多CTA产品都产生了较大回撤,CTA产品的[来]数量也随之大幅下降;随后在2020-2021[自]年间,波动率走高,CTA产品大多获得了较好的[1]盈利;自2022年以来,商品市场波动率再次大[7]幅降低,CTA产品继2018年以来再次受到较[量]大打击。从当前时点来看,商品指数波动率仍在近[化]十年的历史较低位横盘振荡。
一年多以来,CTA市场除了受到俄乌冲突、美联[ ]储加息等地缘政治以及国际经济等因素影响之外,[ ]还受到了我国政策的影响。其中较为典型的就是煤[ ]矿相关的期货交易。2021年初全球范围内实行[1]普遍的货币宽松政策,加上经济复苏带来的需求扩[7]大,焦煤价格大幅上涨。在此期间,那些做多黑色[q]系的管理人收益不菲。然而于2021年10月1[u]9日,发改委发布《国家发展改革委研究依法对煤[a]炭价格实行干预措施》(以下简称《干预措施》)[n],指出当前煤价的涨幅已经完全脱离了供求的基本[t]面,国家将依法对其实施干预。随着国家宏观政策[.]的紧急收紧,焦煤价格急速反转,出现了剧烈回落[c]。这破坏了中长期趋势追踪策略的盈利条件,导致[o]了回撤的发生。
除此之外,郑州交易所于2022年8月4日发布[m]《关于动力煤期货2308合约有关事项的公告》[文]。该公告规定了动力煤期货的保证金为50%,且[章]对仓位进行限制,规定非期货公司会员单日开仓的[来]最大数量为20手。
图4所展示的是动力煤(ZC.CZC)期货合约2021年以来的K线走势以及成交量,可以看到上述这些限制直接导致如今动力煤期货鲜有交易。
二
传统CTA信号分析
2.1
均线穿越策略
均线穿越策略是另一种常见的趋势跟随策略,它基于移动平均线的交叉信号来确定买入和卖出时机。这个策略的基本原理是在趋势形成时开仓,持有资产直到趋势反转。当短均线从下而上穿越长均线时,表明形成了多头趋势,此时开仓做多。当长均线自下而上穿越短均线时,表明形成了空头趋势,此时开仓做空。
具体而言,我们首先确定两条移动平均线,分别是短期均线和长期均线。两条均线均使用移动平均(EMA)算法。
图5展示的是在2023年5月8日至2023年5月15日期间,黄金合约(AU.SHF)15分钟K线数据对应的均线穿越案例(包括多头以及空头交易信号案例)。图中蓝色线为短期均线,灰色线为长期均线。
从策略的逻辑中可以看出,当短均线上穿长均线时,触发多仓信号,此时Signal=1。短均线下穿长均线时,触发空仓信号,此时Signal=-1。
下图展示了上述EMA均线穿越策略的净值表现及对应时点的滚动最大回撤(文中测试结果均考虑交易手续费为0.3%%,冲击成本为1%%)。
可以看到,虽然策略净值整体上呈现出上升的趋势,但是在如2011年、2017年、2018年以及2022年等年份均出现了一定的回撤,滚动回撤最高超过14%。在2017年至2018年间,EMA均线穿越策略的净值出现了长期持续的回撤,表现明显不佳。
表2展示了EMA均线穿越策略分年度的回测统计结果。可以看到,在2016年之前,EMA均线穿越策略的收益、夏普率、Calmar比率以及月度胜率均较高;但在2016年以后,除了2019及2020年以外,策略的收益及胜率均有明显的下滑。其中,EMA均线穿越策略年化费后收益率为13.06%,夏普率为1.03,Calmar为0.93。可以看出,策略缺乏稳定性。
结合以上分析可以看到,在传统信号下,当短均线上穿长均线且二者距离走阔时,我们即选择开多仓(Signal=1);当短均线下穿长均线且二者距离走阔时,即选择开空仓(Signal=-1)。策略没有空仓状态,在开仓之后,直到反向信号出现,则反手开仓。
因此,可以看出,EMA均线穿越策略无法对信号强弱进行有效刻画。因此策略将每次均线穿越的过程不加以区分,均满仓开仓。而每次穿越轨道线时是否完全没有区别呢?我们来看下面这个案例:
观察图7我们发现,短均线上穿长均线后一路上升势不可挡,这意味着本次开仓将会为我们带来巨大的收益。然而图8却展示了一种完全不同的情况,在短均线上穿长均先后,短均线并未延续上升态势而是长时期横盘震荡,这意味着本次开仓并不会带来很高收益。很明显图7和图8的两个信号会带来完全不同的结果,所以不同的穿越是有区别的。
由此可知,在实际市场中,每次触发信号的情况都是不同的,信号有强弱之分,不同强弱的信号代表了趋势的强弱以及可持续性。因此,如果我们能将传统的CTA信号的三种状态转换成连续的交易信号,来对每次信号的强弱加以区分,较强的开仓信号对应较高的仓位,较弱的开仓信号对应较低的仓位,那么我们策略将会蕴含更多的信息。具体公式如下:
三
如何刻画信号强弱
3.1
开仓时点信号强弱
从表3中可以看出,在传统信号的基础上加入Lev_ATR>1作为开仓过滤信号的表现要明显优于Lev_ATR<1的表现;并且相对于传统信号,加入Lev_ATR>1过滤信号后策略的单笔收益率均值和上、下四分位均有所提升,收益的波动率降低。由此可见,将价格波动幅度作为开仓过滤信号的效果较为有效。因此,当开仓杠杆率Lev_ATR<1,即波动较小时,即使此时传统信号为1,我们依然平仓操作。
对价格变化中噪音的度量
3.2
开仓后信号持续度
当上述开仓信号触发后,我们进行开仓操作,随后,我们将对开仓后信号的持续度进行跟踪,并且根据信号的持续度来确定信号的强弱。
为方便理解,我们通过如下案例进行解释。图13所展示的是信号每次触发之后价格上涨以及下跌概率的变化情况。
在考虑了信号持续度强弱之后,策略的净值走势及回撤如图14所示。
四
杠杆设置
从波动率的角度来看,商品交易策略有高波动策略和低波动率策略之分。不同的投资者对于策略波动率水平的选择和接受度也不尽相同。但是对于同一策略而言,一旦策略开始交易,投资者往往希望其波动率处在一个较为稳定的区间,而不是在高波动率和低波动率间不断变化切换。因此,在策略被研发设计之后,我们希望可以通过实时监控这个策略的表现以及风险属性,使得策略每年的波动率都近似为某一我们设定的目标波动率。
具体做法是,我们在每个月月末回看过去一年内策略的运行情况,计算过去一年策略收益表现的波动率,并且将目标波动率设置为15%(取决于对于策略预期的杠杆率水平,通常维持在2倍杠杆左右),那么波动率调整系数的计算公式可以表示为:
从图15中看到,策略平均杠杆率为2.5倍。在2014年间策略的历史杠杆率达到峰值,之后在2016年策略杠杆率到达低谷,之后,在2018-2019年间,策略的杠杆率再次冲高。2022年下半年以来杠杆率有所回升,目前杠杆率处在历史均值附近。
至此,策略的全部逻辑已经探讨完毕,策略的最终表现以及相关特性将在下面进行详细阐述与测试。
五
基于连续信号的商品期货交易策略
我们首先从传统的均线穿越策略的基础原理进行了讨论,同时对基础策略进行了测试和优化讨论,在分别进行了开仓时点信号强弱判断以及开仓后通过计算涨跌概率进行信号持续度检测,我们对传统均线穿越策略的信号进行了改进;之后通过已实现波动率调整,我们对策略每年的波动率进行了平滑。最终,我们构建了基于连续信号的商品期货交易策略。
5.1
基于连续信号的商品期货交易策略构建
投资标的:
过去半年中日均成交额超过50亿元的商品期货全品种的主力合约。
开仓信号:
按照上述流程构建的基于连续信号的商品期货交易策略历史表现稳定且具有较高收益率,同时回撤可控。具体走势如图17所示:
2011年6月以来,基于连续信号的商品期货交易策略费后年化收益率为23.1%,夏普率为1.71,Calmar比率为1.67,表现较为稳健。其中,策略的分年度收益表现如表7所示:
5.2
基于连续信号的商品期货交易策略特质
正如前文所述,自2022年以来,5亿私募CTA指数一直在经历回撤。然而,由于我们的策略在设计上与传统CTA信号有所不同。传统CTA交易信号仅提供有关开仓方向的信息,以0、1和-1表示平仓、多仓和空仓。这种简单的二元表示意味着我们只能在两种状态中选择,即满仓或空仓,无法准确描绘信号的强弱。而我们的策略则通过跟踪信号的持续度,并根据其持续时间来确定信号的强弱,从而产生了显著差异。
六
总结
从传统离散信号到连续信号
CTA策略近年表现承压,因此我们希望对传统的CTA策略思路进行改进和优化。在CTA策略中,交易信号扮演着指引和触发交易的角色。然而,传统的CTA交易信号仅仅告诉我们开仓的方向,用0、1、-1来分别代表平仓、多仓和空仓。这意味着我们只有两种状态可选择,要么满仓,要么空仓,无法准确描绘信号的强弱。然而,信号强度常常蕴含着丰富的信息。因此,我们尝试寻找一种能够刻画CTA信号强弱的方法。在本篇报告中,我们将信号强度分为两类,即开仓时点信号强弱和开仓后信号持续度。通过考虑信号的强度因素,我们观察到相较于传统策略,加入信号强度后的策略表现有明显的提升。
开仓时点信号强弱
开仓时点信号强弱是指通过判断触发开仓信号强度或置信度来决定开仓与否,它用于衡量开仓信号的可靠性和预测能力,帮助决策是否执行开仓操作。我们在传统信号的基础上加入了价格波动强弱(由ATR与收盘价的比值计算)和价格的噪音变化趋势(通过趋势噪音比计算)两个条件,只有当价格波动率较低且价格趋势中的噪音不断减少时,我们才进行开仓。
开仓后信号持续度
在开仓之后,我们会对信号的持续度进行跟踪,并且根据信号的持续度来确定信号的强弱。概括来说,我们首先基于过去时刻价格的涨跌确定当前时刻价格上涨和下跌的概率,再将涨跌的概率作差,当差的绝对值大于0.2时,我们认为此时价格趋势较为清晰,进行开仓操作;并且将信号值确定为此时价格上涨或者下跌的概率,而并非传统信号中简单的1和-1。
基于连续信号的商品期货交易策略
七
附录
7.1
附录一:数据准备
在本节将介绍我们对数据的准备以及处理方法。在CTA策略的测试中,数据的处理主要涉及以下几个问题:主力合约如何确定,展期价格跳空如何处理,不同合约数据怎么拼接以及发单价格如何确定。下面我们将针对这些问题进行分析和解决。
主力合约的确定
在确定主力合约时,我们使用成交量以及持仓量均达到最大的合约作为主力合约。这其中,股指期货在合约到期月份的第三个周五进行交割,国债期货在合约到期月份的第二个周五进行交割,因此,如果上述品种在交割前还没有能够新的主力合约可以确定,那么需要在交割日前一个交易日强制切换至当时的次主力合约。同时,主力合约不可逆,一经确定不可反复。
在合约进行切换时,可能会出现前后两个主力合约的价格无法进行无缝对接的情况。如图20以及图21所示:
图20为RB1901合约切换到RB1905合约的价格序列图,其中切换时点为2018年12月3日。从图20可以看出,在切换的时间点出现了一个价格的大幅跳空低开的情况,如果认为这是行情的自然状态,则可能导致对行情判断的失误。从而导致策略判断失真。
那么在切换合约时,通常有两种做法,一种是根据新主力合约之前的业绩进行新交易信号的判断,以RB合约为例,当合约从RB1901切换到RB1905时,之后的策略计算都按照RB的历史数据进行计算,这样做的好处是,策略信号来源于该标的且作用在该标的。而缺点是有些合约虽然切换到了新的主力合约,但是由于切换前该新合约交易并不活跃,加之有些策略需要使用大量历史数据进行处理和分析,因此可能导致信号失真,或者价格波动较大的情况。
还有一种做法是将价格数据进行复权。复权分为前复权以及后复权,如果向前复权的话,则当前的合约价格为真实价格,之前的合约价格数据为复权后的价格。这样做的好处是可以使用当前的真实合约价格来确认开仓数量,而缺点则是历史数据会随着新数据的更新而出现变化,尽管变化较小,但随着时间的推移以及浮点数的保存问题,有可能会出现新计算出来的策略开仓时点或者策略曲线与之前计算的无法完全匹配的情况。那么会在策略归因时,造成一定的困难。
我们所使用的方法是进行向后复权,这样做的前提是需要选择一个策略开始计算的日期为基期,一旦基期确定下来,后面行情如何更新都对历史数据造成改变。当然,如果基期发生了变化,则有可能导致历史数据的变化。由于2010年以前上市的期货品种较少,且活跃度不高。因此我们所使用的基期则定为2010年1月1日。
复权的具体做法为:在每次展期的时候,计算新主力合约以及旧主力合约的价格跳空比,以此作为当日之后新主力合约价格的复权因子。该复权因子的具体计算公式为:
其中,AdjFactor_(i−1)为上一期复权因子,Close_(i−1, old)为旧主力合约展期前一日收盘价,Close_(i−1, new)新主力合约展期前一日收盘价。这样计算出来的复权因子 AdjFactor_i为当期复权因子。其中,基期的复权因子为1。计算好复权因子之后,新的主力合约的开盘价、最高价、最低价以及收盘价都乘以当期的复权因子,即为复权价格。
这样使用复权价格可以很好地避免因切换合约带来的价格跳空的影响,具体在计算收益率时,如果直接使用原始价格进行计算:
当新主力合约价格与旧主力合约价格出现跳空时,该收益率会出现异常值,而使用复权因子之后收益率的计算变为:
可以看到,这样计算出来的收益率即为实际收益率,进而避免了因合约切换导致的策略信号漂移或者收益率无法计算的情况。
如图21展示的是经复权之后RB1901合约切换到RB1905合约的情况,可以看到,图20跳空的部分变得更加连续了。因此,通过对主力连续不同合约的价格进行复权处理,我们便可以得到连续无异常跳空的行情时间序列数据。
数据处理与拼接
本节将从两个维度分析数据处理中的相关问题。第一,当策略只包含股指期货的时候,数据的处理。其次,当策略需要做商品期货全品种时,数据处理的问题。
由于股指期货的三个品种的交易时间都是同步的,因此不存在不同合约时间对齐的问题。但是需要确定策略执行的收益率的计算方法,我们考虑实盘交易时在信号触发后的成交的价格为5分钟的VWAP,具体可以根据产品规模而定。同时,交易时间越长对策略的时效性要求就越高,需要策略信号的衰减周期与交易时长相匹配。具体做法为计算策略信号触发后5分钟的成交额除以经合约乘数调整的成交量:
其中,Amount_i为第 i 分钟的成交额,Vol_i为第 i 分钟的成交量, Multi为该品种的合约乘数。
当策略需要加入全部期货品种的时候,则需要考虑全品种的交易时间对齐的问题。部分商品期货有夜盘,部分商品期货没有。此外,所有商品期货的品种在上午 10 点 15 分至 10 点 30 分期间为暂停交易时段。因此,进行时间对齐时非交易时段行情数据的处理就是一个需要解决的问题。我们的处理方式为非交易时间段行情 序列设置为空值,信号延续交易时段信号,同时策略收益率设置为零。
当合约尚未上市时,将行情序列设置为空值,且不允许发出交易信号,收益率也设置为空值。
7.2
附录二:海龟资金管理法
策略中的风险主要由两部分组成,一部分是策略的潜在亏损,一部分是策略的波动。接下来,我们主要围绕对策略波动进行风控的方法进行介绍。
为使得策略在所有不同品种上面的波动幅度可控,我们需要根据不同品种的波动幅度进行交易量的调整。这里所说的波动幅度通常使用真实波动幅度均值(Average True Range,ATR)来度量。其中,ATR指标的具体计算公式如下所示:
其中,TR_i为True Range,用于衡量每日的波动幅度,ATR则是TR_i的移动平均值。
通过ATR指标来调整品种杠杆的基本原理是,将波动较高的品种赋予相对较低的杠杆,将波动较低的品种赋予相对较高的杠杆,因此杠杆率与品种的ATR呈反比关系。
更进一步地,对风险的控制要求我们知道 1 单位ATR的波动对应我们账户资金波动的多少,这里假设我们要让 1 单位ATR的波动正好等于我们策略整体资金规模的 0.5%。假设我们使用的是一个单位账户,即总资金规模为 1。那么,我们将 0.5%除以对应的 1 单位ATR则为我们实际应开出的合约数量。即此刻交易应该开出的合约手数。
如果我们需要计算的是一个杠杆率即当前开仓手数占整体资金规模可开仓手数的比例,那么需要除以满仓状态下可以开出的总合约数量,具体计算公式为:
其中,Pos_ATR为 1 单位ATR对应资金规模 0.5%波动的应开手数, Pos为全部资金对应满仓可开手数,Close为收盘价,Lev_ATR为应开手数除以满仓手数的开仓杠杆率。由上面算法计算出来的开仓杠杆率具有根据ATR波动调整杠杆率大小的特性,当一个品种的日均波动较大时,我们倾向于给予该品种较低的杠杆,而反之, 如果一个品种的日均波动较小,我们则可以给该品种较高的杠杆。从风险控制的角度如果一个品种的波动较大,给予较小杠杆也是出于对资金安全的考虑,防止由于较大的波动幅度而触发穿仓风险。
本文选自国信证券于2023年6月20日发布的研究报告《CTA系列专题之五:基于连续信号的商品期货交易策略》
分析师:张欣慰 S0980520060001
分析师:刘 凯 S0980522040002
风险提示:市场环境变动风险;模型失效风险。
本篇文章来源于微信公众号: 量化藏经阁