如何实现持有封基的海龟交易法则

发布于: 修改于:雪球转发:19回复:24喜欢:58
持有封基老师在《一年交易两次十年十倍——持有封基说股市之三十四》中介绍了一个沪深300指数的优化海龟策略。简单总结一下,买入条件:收盘价超过60个交易日的盘中最高价(不是收盘价中的最高),卖出条件:收盘价低于38个交易日里面的盘中最低价,不持有股票时就买入企债ETF。这个策略11年时间实现了14倍收益。

很多人对结果表示难以置信,其实自己动手测一测,就都清楚了。什么,不会编程,Excel也玩不转?那就去无需编程的量化平台,例如果仁网。

这个海龟策略,利用平台的自定义公式功能,通过以下4步就可以实现了。

(1)收盘价大于60天的盘中最高价,可以这样表示:
定义公式 M1:收盘价 > dateshift(Max(最高价, 60), 1)
Max(最高价,60)就是60天内相应证券每日最高价的最大值。公式中为什么加上dateshift部分呢?因为策略要比的是截止昨天的最高价,dateshift加参数1,就把昨天的数据后移一天到今天来了。如果没有dateshift这个部分,就等于额外要求当天收盘在最高才能满足条件。

(2)同理,收盘价低于38天最低价,可以这样表示:
定义公式 M2:收盘价 < dateshift(Min(最低价, 38), 1)

(3)有了这两个组件,就可以写出主要的条件了:
定义公式 M3:DaysLast(M1) – DaysLast(M2)
对于回测中的任意一个交易日来说,M3<0 表示离上一次发生条件(1)的日子小于发生条件(2)的日子,那么根据本策略,应该持有沪深300。

(4)怎么把购买债券也加入到回测中呢?这需要我们定义一个基金池,包括000300I(沪深300)和000013I(企债)两个指数。在回测的筛选中,总是让000013I通过;在排名条件中,如果两个指数都通过筛选,就优先选沪深300,这样就完全符合了持有老师“优化海龟+企债”策略的定义。
定义公式 M4: If( ticker() = '000013I', -0.5, M3)
Ticker函数返回当前回测计算的证券ID。上面公式的意思是说对000013I,M4取值-0.5,其他证券M4取M3的值。效果就是对应000013I,M4公式总是等于-0.5。
然后在果仁的策略定义页面,筛选条件中加入M4 < 0,排名条件中使用M4从小到大排列即可。

回测的结果曲线如下。这里是策略链接: 网页链接
接近30%的最大回撤可能让人受不了,但是从回测结果分析一下就能得出结论,只要在策略持有债券的日子里“上车”,最大回撤 < 15%。

还有人提出60/38这两个参数有过度拟合的问题。确实没有证据表明它们将来会是最佳参数。用户可以调整一下自定义公式中的参数,会看到在一定范围内,策略的收益和回撤结果都是接近的。这说明策略的收益是基本可实现的。

最后要提一下,在果仁平台上,如果在T日进行的筛选,交易会在T+1日。持有封基文中是在突破发生日马上执行交易。这个区别造成了两种回测的换股时间差了一天。这个区别会造成每次换股收益上一定的差别,有亏有赚,总的来说早换股年化收益高几个点。

@持有封基 @千路阳光

精彩讨论

自由去流浪2016-06-07 18:57

竟然是果仁的创始人啊,还以为是跟我一样的韭菜呢

全部讨论

2023-03-06 18:50

原来如此,谢谢你。这个策略就是21年起表现不太好

2021-12-12 14:00

笑而不语,看着持有封基经常分享个人研究心得体会的面子上,就看破不说破了。

2018-10-19 14:08

真的是量化策略研究平台 - 果仁网 - 创始人吗?

2016-06-16 20:55

拜读

2016-06-07 20:22

量化投资

2016-06-07 19:58

海归量化