您正在使用的浏览器版本较低,无法支持聚宽的某些特性。
为了获得更好的体验,推荐使用: Google Chrome 或者 Mozilla Firefox 或者 IE9以上。
感谢楼主分享。我一直没想好在rsrs择时的基础上怎么轮动更好,谢谢楼主提供的思路。
================================
我看很多人说不理解这个策略,简单说下我的分析:
这个策略原理就是市值风格轮动。基金池是代表大中小盘风格的ETF。另外楼主在程序注释中说使用纳指加入轮动,我虽然没测试,但是个人认为从原理上说不是太好,因为这个策略的原理是市值轮动,而纳指市值跟国内没有可比性。同理消费、红利这些指数加入也是违背这个轮动原理的。我倒是觉得可能可以尝试用价值和成长ETF轮动试试。
策略分为两部分:选基和择时。
选基部分比较简单,每只基金拟合29日收盘价的斜率,同时计算拟合的可信度R2,用斜率乘以R2得到动量因子,选择动量因子最大的基金。
择时:
择时包括两部分,一是RSRS算法,二是均线(当前20日均线大于3日前20日均线)
关于RSRS的原理,我刚好看过研报。简单来说就是假设N日每日最高价有一根趋势线H(可以理解为阻力线),每日最低价有一个趋势线L(可以理解为支撑线),H相对于L的斜率代表动量强度(研报有图更直观,这里只有勉强解释一下)。
总结一下:
动量=29日最高价曲线比29日最低价曲线的斜率(使用多元回归)
历史动量=600日动量
标准分=(当前动量-历史动量均值)/历史动量标准差
R方=最近一期动量计算的R方
动量因子(最终比较依据)=标准分*R方
根据研报研究,择时标准是:动量因子< -0.7时卖出,动量因子因子>0.7时买入(这个0.7怎么来的我也不懂),中间保持原状态。
================================
我在隔壁优矿也写了同样原理的一个策略,标的相同,对比一下结果:
用楼主的策略从2015年1月1日到2021年8月17日,年化收益30.18%,最大回撤28.11%,夏普比率0.993.
我写的策略,同期年化收益只有19%,但是回撤只有22%,夏普比率0.78.
虽然我的策略不如楼主的,但是有几个改进方向我试了一下,供大家参考:
1、我的择时仅使用RSRS,原理跟楼主相同,没使用均线。所以我试试将楼主策略中均线部分去掉,年化收益率达到31.3%,而最大回撤降低到27%,夏普比率上升到1.01。也就是说感觉加入均线择时没什么用。(不过我在优矿中用同样的择时有很多空仓期,完美躲过15年和18年的大跌,用楼主的策略没发现,有时间要详细对比一下)。
2、我的策略使用的动量因子是1年收益,于是我把楼主的动量因子时间从29日改为252日(一年交易日),然后,收益率上升到35%,总收益率从448%上升到611%,最大回撤还是28.88%,夏普比率上升到1.25%!感觉楼主的动量因子算法比我的好太多,要好好研究。
放上我的回测供大家参考:
@foolmouse 均线择时选择与否我去研究一下试试,选择纳指ETF 其实是避免出现A股熊市,美股牛市的时候这种情况,不然A股熊市比较长,策略就很容易长期空仓, 美股牛长熊短 这的确是过去这么多年的客观现象。
又发现一个问题,我记得按研报的原意,0.7和-0.7是两个阈值,大于0.7买入,小于-0.7卖出,中间保持原有仓位。楼主的程序中也设置了buy,sell,keep三个状态,感觉也是想这样做。但是最后在adjust_position中buy和keep状态都是买入,这样就成了大于-0.7都持仓了,不知道这样改是有什么用意?