大家好,我是小一
前面在 投资理财,用数据说话 系列中复现了一种均值定投策略,也是目前支付宝在推广的一种智能定投策略。关于这篇策略的详细内容,大家可以回顾以前的文章:比普通定投高20%的支付宝智能定投策略,30行代码轻松复现。
前面的文章详细介绍了策略的算法原理,以及每一步的代码实现,最后以沪深300为例,计算了实际在每个交易日的当前扣款率,也就是定投金额。
支付宝上对这个策略的收益定义是:过去5年收益率比普通定投高 20.9%,而普通定投就是我们所说的在每周/每月的固定日期,买入固定金额的份额。
究竟这个定投收益比普通定投收益高还是低,是不是如支付宝说的那样,20.9%是真的吗?今天就来一起回测一下:
回测
和之前的数据获取一样:我常用的两种股市数据获取方式,做收益回测的时候我也是基于万矿进行的。
其实回测平台用什么都行,只要能回测你自己策略的收益就行,如果不想用这种平台,也可以自己写在本地,但是相对来说就比较麻烦。
万矿平台关于回测有很详细的介绍,如果你懂点Python基础,那实现这个应该不是问题,如果你没有基础,那你就看我的文章就行。
对了,万矿平台的回测有一个弊端,这个我后面会提到。
下面开始真正的回测:
首先是个股的回测
这里我选的是 600438.SH:通威股份作为个股回测,非推荐,只是我自己平时比较关注这个,所以刚好就用来做测试。
第一次回测,我选取的时间是 2019年1月到2021年8月,以沪深300为基准,分别进行普通定投策略和均值定投策略的回测
因为上述两个策略都是在每周的周三进行买入,只是买入的份额不一样,所以根据选取时间周期内的星期数计算初始资金,大概=2*52*1000+34*1000
解释一下,2019年1月-2021年8月一共有2*52+34个星期,每个星期默认1000元,合计一共138000
普通定投回测的结果如下图所示:
均值定投回测的结果如下所示:
从收益来看:普通定投>均值定投,但是这个结果是不对的,这里面涉及到一个隐藏比较深的问题。
回测框架是需要默认设置一个初始资金的,上面我们根据每星期默认1000,初始资金138000。
但是均值定投并没有把这个资金用完,截止到2021年8月25号最后一次定投,一共买入了97200,对应的普通定投买入了131000,也没有用完所有资金。说白了,就是实际在计算收益率的时候是用初始资金去算的,而不是按照累计买入的金额去算的,所以有相当一部分资金一直在闲置。
这个和我们定投的思想就有偏差了,所以最好的方式是:普通定投的初始资金就设置为 131000,均值定投的初始资金设置为 97200。
对应的进行回测,结果如下:
可以看到普通定投累计收益率 215.1%,均值定投的累计收益为 227.3%,均值定投收益高于普通定投12个点。
考虑到定投是一个长期的过程,上面只是测试了在2年半的时间周期内的收益情况,我们将时间轴起点拉到2016年1月。
对应的,在回测初始设置两种策略各自对应的初始资金进行上述两种回测
对比图如下:
可以看到普通定投累计收益率 436.13%,均值定投的累计收益为 488.35%,均值定投收益高于普通定投52个点。
看到这可能有人会说了,个股的回测有偏差性,并不代表这个均值定投就是优于普通定投。
是的,道理是这么个道理,个股偏差性绝对存在,而且和板块有很大的关系。
而且,我们是定投,所以最好的方式是对某个基金进行回测,这样的结果会更有说服力。
在这就要说一下万矿平台的一个缺点了:不支持ETF基金的回测
我想到了一个替代方案:将某个基金的TOPn重仓股作为每次操作的对象,分别计算两种定投策略的收益。
直白点说就是在每个周三以不同的金额买入重仓的N个个股,注意是N个都要买。
因为基金的持仓会发生变化,所以这个方法需要大家辩证的去看
这次我们以招商中证白酒指数(LOF)A,代码161725为例。
从它2021年最新的持仓数据可以看到,重仓股为5只,从2016年的持仓数据可以看到,重仓股为4只。
回测的时候取4个和5个都行,这里我取了最新的5个重仓股
普通定投回测的结果如下图所示:
均值定投回测的结果如下所示:
可以看到普通定投累计收益率 320.22%,均值定投的累计收益为 325.3%,均值定投收益高于普通定投5个点。
其实私下我还有做过更多类似的回测,效果基本都是均线定投的累计收益略高于普通定投,也证实了上述结果的出现并非偶然
由于更多回测的效果都差不多,所以我也没有再贴图上来,大家清楚最后的结论就行。
另外,如果你有想测试的个股,可以在评论区贴一下代码,我回测完结果后会私发给你。
以上就是今天的所有内容,想动手的同学可以去看看回测平台的介绍文档,比较容易上手。
最后:既然均线定投收益大于普通定投,那你还在等什么?