接上文
03
大小盘轮动
为了方便理解,我们用沪深300指数来代替大市值股票,创业板指数来代替小市值股票。
1、市场规律当你不断在股市中交易,其实会自觉或不自觉总结出一些炒股规律。
比如我自己就注意到,市场走势存在延续性。
 
比如在2010年9月28日,沪深300指数前一个月的涨幅高于创业板指数,次日表现依旧更优。
 
再看2010年11月17/18/19日,创业板指数前一个月表现都要由于沪深300指数。
往后一天创业板指数的涨幅同样也高于沪深300指数。
 
2、规律-策略通过上述案例我们发现,过去一段时间表现好的指数在之后大概率会持续向好。
 
当然这只是我们观察到的现象,不一定普适。但不妨碍我们尝试基于此构建一个量化策略。
其实很多量化策略就来自这些实盘经验。把这些经验数量化、规则化形成一套严谨的买卖逻辑,就能构建一个完整的量化策略。
04
大小盘轮动策略
1、策略构建我们默认使用大盘指数来代表大市值股票,小盘指数代表小市值股票。
 
每天收盘后计算出所有指数前20日涨跌幅。
选取涨幅最大的指数,在接下来的一天持有它,如此循环往复。
 
2、举例说明比如2010年9月15日收盘后,我们统计了所有指数前20日的涨跌幅如图所示:
 
比较得知上证小盘指数上涨最多,就在次日开盘买入上证小盘指数ETF。
如果未来几日上证小盘指数过去20日涨跌幅都是最大的,那这几天就会持续持有。
所以虽然这个策略日频发出信号,但换仓并不频繁。
策略原理也很简单,便于实操,甚至可以手工交易。
3、数据&代码那这个策略能赚钱吗?
我们需要借助全部指数历史数据并编写相应的Python代码进行验证。
 
 
如果你需要的话,可以在评论区留言,都是可以分享给你的。
4、策略结果代码运行结果如图所示:
 
代表策略的橙色曲线从初始的1元涨到了10.64元,年化收益19.02%,远远跑赢了所有指数。
但凡大A有指数长这样,大家也真的会“相信国运,定投大A”了。
作为实际交易的策略,它的最大回撤高达51%,这虽然是由策略永远满仓持有导致的,但也意味着我们需要尝试优化它。
下文我们就来讲解策略优化的思路及最终结果。
05
轮动策略优化
上述策略的问题在于50%的最大回撤会影响实盘的顺利执行。
如果策略在第一年就回撤50%,按22%的年化收益也得在4年后回本。
1、降低回撤我们自然想去降低回撤。先观察原策略最大回撤的开始/结束时间:2015年6月 - 2016年6月。
 
此时正值2015年股灾,市场整体处于极端熊市。
比如2015年6月25日,大盘指数和小盘指数前20日涨跌幅均为负,后续几日表现同样不佳。
 
照原始策略去实盘,之后5天会亏损12.7%。
 
 不难发现,市场整体下跌时,策略仍在大小盘间选择跌幅小的买入。
也就是即使身处熊市,我们依旧在不断买入。
 
正确的做法应该是在大盘和小盘指数都下跌时就停止交易。
2、策略优化据此,我们尝试对策略做优化。
当指数过去20日涨跌幅都小于0时,即认为市场处于熊市,第二日直接空仓不做交易,只持有现金。
 
我们在原代码上修改几行,即可验证优化后的策略效果。
 
如果你需要这个代码和数据的话,可以在评论区留言,都是可以分享给你的。
3、回测结果策略回测结果如图所示:
 
代表新策略的橙色曲线从1变为了12.69元,比原始策略(10.64元)赚的更多。
最大回撤更是由51.1%降为26.8%,这也让一个原先无法实盘的策略变得可行。
06
其他优化方向
1、换指数/指标我们也可以尝试进一步优化。
比如前文我们各用三个指数代替大小盘股票,是否可以加入更多指数一起进行轮动?
又比如前文用过去20日的涨跌幅作为依据,是否可以把20日改成5/10/40日?
 
这些都是值得尝试的方向。
拿到我们的代码后,只需微调参数就能得到相应 的结果,非常方便。
如果你需要的话,可以在评论区留言,都是可以分享给你的。
2、换标的/市场也可以将指数换为基金,让策略在几个基金间进行轮动。
但基金换仓成本过高,这里不作推荐。
甚至投资某马赛克市场的同学,可以尝试在大饼和姨太间轮动,收益也会非常爆炸。
 
3、多空策略再分享个更专业的玩法。
原策略我们买入的是现货,只能做多,如果交易股指期货,就能构建多空组合。
 
关于什么是股指期货,大家可以看我之前的文章。
 
运用股指期货我们可以做多优势指数,做空劣势指数。
收益就会完全来自两个指数间的差异,整体资金曲线也会更平稳。策略较为复杂,本期篇幅有限就不展开了。