海龟交易法则,起源并流行于八十年代的美国,是一套简单有效的交易法则。这个法则以及使用这个法则的人的故事被写成了一本书——《海龟交易法则》。这是一本很好的量化投资入门书(也是我当年的入门书)。
本篇文章使用Python和Pandas实现海龟交易法则,看看在中国市场效果怎么样。并希望通过这个案例,让大家学到pandas的如下功能:
- 导入导出数据
- rolling_max() 和 expanding_max()的区别
- 空值处理函数fillna()的使用方法
- 资金指数的计算方法
- resample()的使用方法
海龟交易的具体规则是:
- 当今天的收盘价,大于过去20个交易日中的最高价时,以收盘价买入;
- 买入后,当收盘价小于过去10个交易日中的最低价时,以收盘价卖出。
对规则的一些说明:
- 规则基本上就是这么简单,还有一些具体的止损以及仓位控制规则,这几就不介绍了,具体可以看书。
- 这套交易规则主要是运用于期货市场,所以还可以有卖空,比如当今天的收盘价小于过去20个交易日中的最低价时,以收盘价开空单,以此类推。
- 上述规则针对日线,实际使用中更多的是使用分钟K线,比如5分钟K线的收盘价大于过去20根5分钟线的最高价时买入,以此类推。
在这篇文章中,我以上证指数作为案例,假设可以买卖上证指数,来试验海龟交易法则,看看效果具体如何。
下面开始具体正文:
要在上证指数上实验海龟交易法则,首先需要上证指数的数据。
在这里可以下载到上证指数从1990年至今的数据,如下图所示,每一行是每一天的数据:
这个日线数据有以下的字段:
1 | 【index_code】指数的代码 |
有了原始数据之后就是代码。我本以为用pandas实现这个策略还是稍微有点复杂,结果发现非常的简单,再次赞叹下pandas的方便。下面是代码的截图,里面有详细的注释,有问题可以留言。
把数据下载下来,运行代码,就可以看到输出的结果了。下面这张图展示了从1993年1月1日开始,使用海龟交易法则交易上涨指数的资金曲线与原指数的对比,由图中可见,指数从800多点涨到了现在的400点,而海龟交易法则的资金曲线,从同样的800多点,涨到了14000点。
下面这张图展示了每年上证指数和海龟交易法则资金曲线的收益,左边是上证指数的收益,可以自行把玩:
思考题:
海龟交易法则的默认参数是20,10,可以试试看其他的参数,看看会不会有更好的效果。感兴趣的,可以查看完整版本的海龟交易法则(包含atr止损),并实现它。