说明:
1、我们在测试时使用T合约15年3月20日以来至17年5月22日数据(日间数据);
2、当策略信号出现时,假设投资者将在次日以开盘价买入(而不是在当日);
3、测试不考虑杠杆,不考虑剩余资金的货币收益,不设止盈、止损线,以保持策略效果原貌;
4、我们在寻找最优参数时,不仅观察该组参数的策略效果,也会观察其“周围”(即相邻的其他参数组)的参数的策略效果。如果差距很大,则存在参数过拟合风险,策略并不稳健,不取作最优参数。
一、均线类策略
均线策略是趋势类策略中一个大的系列。虽然实现方式五花八门,但其基本的出发点都是利用均线来去掉价格信号中的噪声,从而揭示趋势,并顺势而为。在现实中,均线策略的优势在于逻辑简单,且足以捕捉主要的趋势。但与此同时,均线策略的代价是时滞。
1、MACD策略:MACD策略是流传最广、最常见的均线策略之一,各类数据终端也常将其作为默认的技术指标显示在行情页。MACD的实现比较简单,其首先计算价格的长均线和短均线,随后得到长短均线点位之差,即DIF。DIF再进行移动平均,得到DEA。DIF减DEA便是MACD值,即DIF与其均线(DEA)之差。一般来说,当MACD由负转正时,认为市场趋势走强,进而做多,反之则做空。
参数测试:MACD策略有三个参数,即长均线、短均线周期参数(记做M和N),以及DEA的周期参数(记做S),我们将参数组记做(M,N,S)。习惯上,有M>N>=S。为了找到效果比较好的参数,我们令M从6至60循环,N在0.4*M~0.75*M 循环,S在0.5*N~N循环。经过测试,有两组参数效果尚可,即(30,13,7)和(15,10,5)。当然,作为比较简单、传统的策略,暂无明显过拟合问题,相近的参数差距也不大。
典型的“小赔大赚”策略,趋势市中胜出,震荡市回撤。我们看到,在市场趋势较为明显的时间段,如15年、16年下半年至今,MACD策略都得到了比较明显的正回报。但在行情震荡明显的16年上半年,显然其反应速度跟不上市场频繁的“转向”,效果不佳。从回撤的角度看,哪怕遭遇单边市,也能较好的控制回撤幅度。该策略遭遇较大回撤的情景反而常常发生在震荡市当中,由于多次试错所致。此外,无论哪组参数,其盈亏比都在2.0左右,这也是其制胜关键所在。
而两组参数对比来看,策略A周期长,因此交易次数也少,延迟稍大,但也换来了稍高的胜率,适合趋势性明显的阶段,避免过早下车。策略B反应迅速,因此在15年更快迎来了高点,16年年中也更早启动,今年以来也明显胜出。但在16年上半年,其不断试错,迎来了较大的回撤。策略B适合在行情行将发生不利转折的情况中应用,对可能拐点保持更高的敏感度。
2、均线交叉策略:均线交叉相比MACD策略更加朴素。首先同样计算长均线和短均线,当短均线上穿长均线时做多(自下而上穿),反之,当下穿时做空。特别地,如果短均线的计算周期是1天,这一策略就是以收盘价穿越均线来发出多空信号的策略。显然,这也是典型的趋势型策略,只是相比MACD更为简单,相当于只计算了DIF线,当DIF由负转正做多,由正转负做空。
参数测试:均线交叉策略有两个参数,即长均线和短均线的周期数,记做(M,N)。我们同样通过循环进行测试,发现参数(10,4)效果较好。
总体稍强于MACD,且更加简易。可以看到,均线交叉策略实际上和MACD的效果很类似,胜率稍低,但盈亏比更高。同样地,该策略在市场有趋势性时收效很好,但窄幅震荡的市场下,失误较多。最大回撤出现在16年4月19日,达到了3.8%。此外,相比于MACD策略而言,参数更少,测试更加方便,稳健性也稍强。
3、三均线策略:三均线策略也比较常见,即计算长、中、短三条均线,若短均线 > 中均线 > 长均线,即形成多头排列,说明行情看涨,则做多。反之,若形成空头排列,则做空。当均线未呈现多头或空头排列时,空仓。
参数测试:相比于均线交叉策略,三均线的做多、做空条件更为严格。因而在参数相同的情况下,延迟应该略高于均线交叉策略。不过,至少理论上讲,三均线策略能一定程度上克服其他均线策略在震荡行情下的尴尬。因为震荡市的情况下,长、中、短均线经常产生缠绕,这在三均线策略中视作无信号。
自然,三均线策略需要三个均线的周期值作为参数,我们记做(M,N,S)。我们继续对表现较强的参数组合进行地毯式搜索。我们看到,(2,6,9)、(2,4,10)、(3,5,10)等参数组表现较强。不过这几组参数本身相差不多,我们将参数为(2,6,9)时的效果展示如下图。
控制回撤是最大亮点。可以看到,三均线策略并没有提高策略胜率,反而降至42%,年交易次数明显增加到了27次。但是,其最吸引人的地方在于很好地控制了最大回撤。主要由于其在均线缠绕阶段处于空仓状态,因此在16年上半年的损失比前两类策略要小。
二、布林带策略
布林带策略也是典型的趋势型策略。与均线策略的逻辑不同,布林带策略并非基于均线,而是在前收盘价(或者前均线)的基础上,加、减若干倍价格的标准差,形成上轨和下轨,即“布林带”。当价格突破上轨时做多,直到突破下轨时转而做空。
参数测试:显然,布林带策略同样是押注趋势延续。从参数上看,理论上可以包括:1、N:即中轨的滞后期数;2、S:中轨的均值周期;3、M:标准差的计算周期;4、K:标准差倍数。不过,为求逻辑简单,也避免参数维度过大,我们可以令N、S都为1.0,即以滞后一期的收盘价作为中轨。随后,我们对参数M、K进行了测试。最终选取了效果比较好,同时交易次数也不算多的一组,即K = 1.5,M = 9.0。策略效果如下。
可以看到,相比于均线策略,布林带策略的交易次数要更低,年均15次。同时,由于只在行情突破时交易,因此虽然胜率一般,只有45.7%,但盈亏比高达3.91。
从回撤的角度看,震荡市对布林带策略的“挫伤”程度低于均线策略。但单日大幅波动、转向,是布林带策略的"天敌"。其最大回撤出现在17年年初。可以看到,当时的行情出现“急转弯”,日内波动在历史上少见,该策略也在1月3日和1月17日发出了两次错误的交易信号,导致了最大的回撤出现。也可以看出,在行情“急转弯”、日内波动巨大的情况下,布林带策略的延迟加大、错误信号的可能性也加大,是其比较薄弱之处。
三、RSI策略
RSI即相对强弱指标,由过去N日涨幅的累计值,再除以过去N日涨幅、跌幅累计值的加总得到的指标(习惯上会乘以100)。因而当过去N日行情走强时,RSI会大于50,反之小于50。RSI策略可以有两种理解,一种是将其作为超买、超卖的指标,这时便是以均值回复类策略来理解。另一种是将其作为行情冷暖的指标,当其向上穿越50(或其他值)时买入,否则卖出,此时也可以看做一种均线类策略。由于前述几个策略都是趋势型的,因此我们不妨以均值回复的视角来观察RSI策略。
参数测试:RSI涉及的参数一方面是计算周期数,即N,另一方面则是超买、超卖线。在测试中,我们分别以50+X,50-X为超买、超卖线,因此参数组可以记做(N, [50 - X, 50 + X])。我们看到,从总体策略收益的分布看来,作为均值回复策略的RSI相比前述的几个趋势型策略而言,差距不小。
究其原因,均值回复策略力图把握行情拐点,但往往在胜率一般的情况下,盈亏比不佳,“抄错底”的代价很大。现实中,把握并跟随趋势也是最主要的盈利模式。尤其在期货市场上,左侧交易往往盈亏比很低,也很有可能面临巨大的单日回撤(从而被清出市场),从而没能等到拐点真正到来。
不过,个别表现优秀的参数组值得关注。例如,在(10, [50 - X, 50 + X])的情况下,盈亏比接近1.00,同时胜率达到83.3%。在大约2年的时间里,这一策略仅交易6次。这也启示我们,“抄底”一般来说性价比并不高,除非短期巨幅下跌,使得RSI跌至20乃至更低,确定性提升,方值得一搏。不过,需要强调的是,相比于前几个策略,RSI策略对参数的敏感性要强得多,稳健性不佳。而相比于交易策略而言,RSI更多具备参考意义(辅助判断超买、超卖),实际盈利效果很一般。
四、KDJ策略
KDJ即随机指标,最先在期货市场上出现,由George Lane发明。KDJ随机指标研究当前点位在过去N个交易日内的相对位置,并据此判断市场走向。具体而言,KDJ指标以RSV(未成熟随机值)为基础,首先计算当前点位相对于过去N个交易日的最高价、最低价的相对位置。然后,计算K、D、J三条线,其中K线为RSV的均线,D线为K线的均线,J则为3K – 2D,相当于在K的基础上提高敏感度。在最初,KDJ体系中只有K、D两条线,投资者通过K、D线交叉来判断市场走势,后来为提高短期行情的判断能力,发展出了J线。
从经典理论上说,KDJ指标的信号包括:1、D超过80、J超过100,则为超买,D低于20、J低于 0,则为超卖;2、K自下而上穿越D线,且数值在30以下,市场由空转多;3、K自上而下穿越D线,且数值在70以上,则市场由空转多。但在我们实际测试中可以看到,无论是股市还是债市,上述三条中的第一条都并不有效,且有较大误导性。在趋势牛市中, D会很快达到80以上,J甚至会更早达到100,如果据此做空,显然会错过大级别行情。因此,我们在测试中,不考虑第一条,仅考虑K和D的交叉。
值得注意的是,虽然KDJ的计算看似稍复杂,但实际是“相对版”的均线交叉策略。即均线交叉策略直接计算价位的均线,而KDJ计算的是RSV的均线。相比之下,KDJ的优势在于,其纵向、横向的可比性,即无论任何品种、时间短,K、D都会在0~100之间波动。
参数设置:KDJ策略有三个参数,即RSV的计算周期N,以及K、D线的计算周期X、Y。在期货市场上,最常见的参数设置为N=9,X=3、Y=3。为了与前述均线交叉策略更可比,我们采用N=10,X=10、Y=4的参数设置进行测试。
从实际效果来看,虽然同样应用了均线,但风格与均线交叉策略迥然不同。KDJ策略由于设置了信号触发阈值(传统上一般认为KDJ在50左右时的交叉信号意义不大),仅当K高于70或低于30时才触发信号,其信号频率明显低于均线交叉策略,年均交易次数只有7次。与此同时,由于仅在高点触发空头信号、低点触发多头信号,胜率达到70%,但盈亏比仅在0.99,实际收益率不及均线、布林带策略。
从信号触发及回撤的时间点来看,在行情刚刚转向甚至在顶点之前,KDJ便可能触发转向的信号,略带一些左侧属性。但在控制回撤层面看,其低位多头、高位空头信号触发后,不自带止损机制,往往在行情趋势性超出预期时,迎来最大回撤(例如去年年底)。
总结起来:
1、债券市场的决定性变量往往来自于宏观基本面和货币政策,周期一旦开启,往往具有较强的延续性,趋势性往往比影响因素更复杂的股市强。因此,对国债期货也是如此,趋势策略从逻辑上和实践上都更为有效。下图中可以清晰地看到,均线、布林带策略都是在趋势市中获利,而KDJ、RSI风格不同;
2、作为经典的趋势策略,均线策略有着不错的效果,且容易实现。胜率在50%上下,而盈亏比在2.0以上,是典型的“小赔大赚”策略。同时策略对参数的敏感度不过高,稳健性尚可。从收益和回撤角度看,趋势市能较好把握机会,但震荡市中失误较多,尤其在均线缠绕频繁的窄幅震荡市场下,均线交叉、MACD策略显得无所适从,最大回撤也在此时产生。更本质来说,均线策略以延迟为代价,换取对趋势清晰的确认,因此策略的性价比就取决于趋势与延迟比;
3、相比之下,均线交叉策略总体上表现更好,胜率稍稍略低于MACD,但盈亏比高达3.3。理论上更为审慎的三均线策略并不能提高胜率,但将最大回撤压制在3.17%的水平,是其最大的优点。
4、布林带策略同样善于把握趋势,同时平均交易次数低于均线策略,盈亏比高达4.18,从收益上看效果比均线更强。布林带与均线策略虽同为趋势策略,但“弱点”不同,布林带在单日波幅较大时,容易出现失误。
5、作为均值回复的代表,RSI策略效果不佳,只有几组特定参数的策略得到了正回报。如前讨论,参数设为(10,30)时,胜率可以达到83.3%,但盈亏比只有1.0,“高胜率”只是看起来美好,收益率不高。而相对于交易策略,这一指标更多地意义可以在于辅助判断市场的超买、超卖状态。
6、KDJ策略相比均线策略而言,略带左侧属性,实际效果上看,胜率高但盈亏比低。在震荡市中,KDJ策略表现不错。
7、最后,上述测试结果都没有考虑杠杆以及剩余资金的使用。因此,从产品设计来讲,投资者可以根据自身风险偏好(例如能接受的最大回撤),设定投资组合的杠杆率,再将剩余资金投向货币产品,如货基、存单或者回购等。例如,投资者能接受的最大回撤在4.0%,则不做杠杆,以组合资产的2%作为保证金投向布林带策略,剩余的98%投向货基(假设收益率3.6%),此时组合的预期年化收益率可以达到9.41%。