三标的ETF轮动策略搭配大盘止损的效果 昨天晚上给大家分享了《三标的ETF轮动策略代码》,网友@洲洲...
昨天晚上给大家分享了《三标的ETF轮动策略代码》,网友@洲洲洲洲洲洲 提出了以下的改进思路:
加入量能的过滤。以30日成交量均线作为参考(以上证指数为标的)
买进时:连续3日不过30日量线不进行买入操作。
卖出时:连续3日不过30日量线,无条件卖出,提前出场等待。
把上述思路通过代码实现之后,回测的情况是这样的:
我们可以看到收益发生了大幅的下降,检查日志之后发现,整个回测周期中有554个交易日是因为大盘成交量持续低于30日均线,保持空仓状态。这对于总计1388个交易日来说,止损信号的发出太过频繁。再考虑到三个标的轮动,已经在一定程度上分散了风险。所以,我们可以认为选择30日成交量均线显得过于保守。
关于大盘量线过滤的思考
首先,基于动量的轮动是一种偏进攻型的策略,不追求高胜率,核心逻辑在于“多赚少亏”,整体盈利。连续3日不过量线不进行买入操作虽然可以过滤一些假信号,但是损失的收益可能会更多,这和“多赚”的逻辑有一定抵触。
其次,轮动策略的“少亏”是通过轮动换仓实现的,但是我们发现基础策略的回撤幅度仍然是非常大的(超过35%),通过同时持有多个标的分散风险,我们把回撤控制在了25%以内,但是目前为止我们还未采用任何硬止损手段,这方面应该还有文章可做。
回测验证
针对上述思考,首先取消了对买入条件的限制,先测试止损的情况。通过对30种参数组合进行交叉测试,我们得到了下面这个结果。收益最高,回撤最小的情况是把止损条件设置为以6日成交量均线作为标准,连续7日不达标则全部卖出。
下图是未加大盘量线止损的回测结果,对比上图可以看到选择6,7这组参数的时候,收益在原有基础上提高约50个百分点,回测下降约4个百分点。
在这种基础上,把买入的条件加上连续3日不过成交量均线不进行买入操作,得到下图所示的回测结果。可以看到,设置更为严格的买入条件,策略的效果是受损的。一个能完美过滤假信号但不损害收益的策略是无法实现的,这就是事物的两面性。我们应该以攻为守还是以守为守,这需要结合策略的核心逻辑来进行抉择。
关于策略代码的说明
如下图所示,成交量均线周期及连续低于均线N天空仓,天数通过代码的23和24行设置
大盘止损函数在代码的末尾,如果你不希望以上证指数作为止损参考,也可以选择沪深300或者其他指数,将代码229行中的代码000001.XSHG替换为你想采用的指数代码即可。例如沪深300指数代码为000300.XSHG。
好了,我的基础工作已经完成,接下来就看大家自行发挥了。老规矩向右看→聚宽代码分享链接。
因为这个代码是在基础版本的轮动策略上演变而来,所以关于代码的一些基本情况,我不再进行解释,如果对基本使用方法及套路不明白,请参阅之前的文章:
《分享两个简单的基金定投策略代码》
《宽基ETF轮动策略量化代码实现》
《三标的ETF轮动策略代码》