Zihao

Make small but daily progress

0%

【量化小讲堂-Python、Pandas系列】数据告诉你:惊人的海龟交易法则

海龟交易法则,起源并流行于八十年代的美国,是一套简单有效的交易法则。这个法则以及使用这个法则的人的故事被写成了一本书——《海龟交易法则》。这是一本很好的量化投资入门书(也是我当年的入门书)。

本篇文章使用Python和Pandas实现海龟交易法则,看看在中国市场效果怎么样。并希望通过这个案例,让大家学到pandas的如下功能:

  • 导入导出数据
  • rolling_max() 和 expanding_max()的区别
  • 空值处理函数fillna()的使用方法
  • 资金指数的计算方法
  • resample()的使用方法

海龟交易的具体规则是:

  • 当今天的收盘价,大于过去20个交易日中的最高价时,以收盘价买入;
  • 买入后,当收盘价小于过去10个交易日中的最低价时,以收盘价卖出。

对规则的一些说明:

  • 规则基本上就是这么简单,还有一些具体的止损以及仓位控制规则,这几就不介绍了,具体可以看书。
  • 这套交易规则主要是运用于期货市场,所以还可以有卖空,比如当今天的收盘价小于过去20个交易日中的最低价时,以收盘价开空单,以此类推。
  • 上述规则针对日线,实际使用中更多的是使用分钟K线,比如5分钟K线的收盘价大于过去20根5分钟线的最高价时买入,以此类推。

在这篇文章中,我以上证指数作为案例,假设可以买卖上证指数,来试验海龟交易法则,看看效果具体如何。

下面开始具体正文:

要在上证指数上实验海龟交易法则,首先需要上证指数的数据。
这里可以下载到上证指数从1990年至今的数据,如下图所示,每一行是每一天的数据:

这个日线数据有以下的字段:

1
2
3
4
5
6
7
8
9
【index_code】指数的代码
【date】 交易日期
【open】 开盘价
【high】 最高价
【low】 最低价
【close】 收盘价
【volume】 成交量
【money】 成交额
【change】 涨跌幅

有了原始数据之后就是代码。我本以为用pandas实现这个策略还是稍微有点复杂,结果发现非常的简单,再次赞叹下pandas的方便。下面是代码的截图,里面有详细的注释,有问题可以留言。

把数据下载下来,运行代码,就可以看到输出的结果了。下面这张图展示了从1993年1月1日开始,使用海龟交易法则交易上涨指数的资金曲线与原指数的对比,由图中可见,指数从800多点涨到了现在的400点,而海龟交易法则的资金曲线,从同样的800多点,涨到了14000点。

下面这张图展示了每年上证指数和海龟交易法则资金曲线的收益,左边是上证指数的收益,可以自行把玩:

思考题:
海龟交易法则的默认参数是20,10,可以试试看其他的参数,看看会不会有更好的效果。感兴趣的,可以查看完整版本的海龟交易法则(包含atr止损),并实现它。

欢迎关注我的其它发布渠道