第五课 MACD策略和全市场测试 -- 零基础量化投资小课堂
目标:构建并回测经典MACD策略并在全市场测试效果
上节课我们留下了一个问题,一个策略在某个资产上表现好,是不是刚好是碰运气?有个简单的办法就是使用大量的数据去测试它,如果在大量的数据下都表现好,那么虽然有的时候不能用逻辑解释,但是我们认为这个收益是统计显著的,历史在之后也还会重演。
运气不错的是,对于股票来说,刚好有大量的数据,全市场有几千只股票,加上时间的维度,有大量的数据可供测试。但大饼或别的资产可能就没有那么好运了。
这节课我们冲一下最经典的策略,MACD的金叉死叉策略,并且在全市场的股票上回测该策略,看看是不是真的有一些大师们吹的那么有效。
首先对于数据的获取部分,全市场的话下载太慢了,这里偷个懒用中证500的成分股,一共五百只,还是老规矩,先下载数据。
这里我们首先获取中证500成分股的代码,之后用第一课的程序下载了500个文件,每个文件都是一只股票的价格数据。
然后就还是策略的买入和卖出信号环节,MACD的东西相信大家肯定都懂,就不在这废话了,不懂的可以去网上搜一下,这节课采用经典的(13,26,9)的MACD。
这种经典的东西我们用的python包里肯定有现成的代码使用,下面的代码分别构建了13日和26日的均线,然后计算了他们的EMA
有了MACD之后,我们就能很方便的把金叉和死叉表达出来,这里的condition1和condition2就分别是买入信号和卖出信号。
定义好了买卖信号,我们就可以在我们刚刚下载的中证500成分股上测试我们的MACD金死叉策略了。

每只股票的初始资金是一百万,总初始资金应该是五亿,我们看到对500个成分股执行完成之后资金变成了4.5亿,说明总体来看还是非常亏钱的一个策略。当然,我们可能也可以不用(13,26,9)这一组参数,而使用其他的参数,应该总能找到一个赚钱的。但这样是否有意义就需要好好考量。
我在课件中写好了常见的几个策略的代码,如boll、RSI等,都是只改个参数就能用的,需要的可以自行下载调试使用。
到这里为止,我们对于技术指标的探索就可以告一段落了,其余的技术指标都可以用这几节课讲到的方法测试,很多研究报告中也有一些看起来比较有效的技术指标的构建方法,感兴趣的可以自己搜一下测试一下。
其实这些常见的技术指标就是我们之后要讲的“因子”中的一类,叫做技术指标因子。其余的因子还有常见的价量因子,机器学习因子和另类数据因子等,下节课我们将开始对因子的学习。
欢迎关注同名微信公众号【量化的韭菜】或知识星球获取更多内容