前言
虽为期货小白,本萌也忍不住来感受下 T+0 和做空的感觉~
之前有写过股票海龟交易系统的帖子——海龟交易系统的实现,获得了广大 V 友的好评和收藏
https://uqer.io/community/share/57bd5864228e5b79a575a9b2关于海龟交易的详细介绍可参见该帖。所以我再接再厉,将海龟交易系统套用在期货回测商品上。本帖主要是体验期货回测及将海龟交易移植到期货平台看看效果~
一、海龟交易步骤回顾:详细交易步骤:
https://uqer.io/community/share/5812b3e5228e5b43f85c2252唐奇安通道捕捉突破。对于唐安奇通道的天数 N 设置,之前设置为 20 天。但个人觉得在期货日线中这个天数还是略久,反应比较慢。因此觉得 N 设为 5 或 10 较好;当然分钟线的话得另行讨论
计算平均真实波幅 ATR
计算每次加仓 1unit ,购买的手数
捕捉突破,判断开仓方向
判断是否加仓、是否止损
若止损了回到 4 ,未止损回到 5
二、需要用到的计算、判断函数
具体代码见下个 cell
IN_OR_OUT 用来判断唐奇安通道的突破(上轨突破或下轨突破),从而判断多开还是空开
CalcATR 用来计算 ATR
Add_OR_Stop 用来判断加仓还是止损
CheckPosition 用来检查当前持仓状态
CalcUnit 用来计算买入 1unit 对应的手数
三、回测:
https://uqer.io/community/share/5812b3e5228e5b43f85c22523.1 对于回测的一些说明
3.1.1 initialize(futures_account)的说明:
futures_account.last_deal_prcie 为上一次交易的价格
futures_account.limit_unit 为持有最多 unit 的个数
futures_account.unit 为 1 个 unit 的手数
futures_account.add_time 为加仓次数(不超过 futures_account.limit_unit )
futures_account.position_state 用来记录持仓状态: 0 为未持仓, 1 位持多,-1 为持空
futures_account.last_main_symbol 用来记录主力合约,在主力合约忽然变化的时候进行相关处理
3.1.2 主力合约变化的情况
期货回测平台目前没考虑主力合约更换的情况。一般有两种处理:
持有原合约,出现主力合约变更时,对原合约平仓,并买入更换的主力合约
持有原合约,出现主力合约变更时,对原合约平仓,但是不一定买入新合约,而是根据策略逻辑判断是否买入
本策略采用第二种方式处理
3.2 日线螺纹钢测试:
策略设定:
唐奇安通道 N 设定为 5
最大持有 unit 数为 4 (最多加 3 次仓)
分析:
收益曲线挺像阶梯上行,说明较好的实现了海龟交易的理念
从策略表现来看,年化收益 126%,夏普比率 3.76 ,表现不错;最大回撤 12.2%,还不错,本身海龟策略的动态 ATR 止损,而且仓位控的好,回撤应该不大,但由于日线原因,有些时候无法及时触发止损,因此回撤也不是特别小。
观察收益曲线发现,回撤较大的地方往往是一波涨势之后,回想 ATR 止损,是在最后一次买入价格 last_deal_price 的基础上减去 2ATR 作为止损点的,当盈利很大之后,止损点就显得有点“跟不上”了,因此,这是个可以改进的点。不过就像上面说的,日线的话很可能不能及时触发止损,因此这里止损点改进的问题暂不讨论。
再看看 ATR 、价格的曲线及仓位变化情况:
可以看出,当价格波动幅度变大时, ATR 变大。在趋势反转区域,出现了较大波动,由于 ATR 计算平均真实波幅,在反转之后才到达高点,这就使得处于趋势反转时,止损点反而下移了,因此止损有一定“延迟”。
观察仓位发现,最多仓位没超过 60%,大部分情况轻仓操作,仓位在 30%左右。不过风险厌恶程度不高的话,可以适当提高 unit 的最大值,以博取更高收益。
3.3 不同商品,在唐奇安通道 N 分别为 5 , 10 , 20 时的策略表现:
https://uqer.io/community/share/5812b3e5228e5b43f85c2252选取品种为: 螺纹钢、焦炭、铅、焦煤、锌、铜
分析:
从表现来看,焦炭的收益最高,达年化 153.3%,螺纹钢次之,接着是焦煤。 铅则为小亏,锌是雪崩了啊。。。
对于各个品种,除了焦炭和锌,其余品种 唐奇安通道 N 值为 5 的时候表现最好,与预期相同。
从回撤看,除了锌比较特殊之外,大部分情况回撤都小于 20%,说明海龟策略对回撤的控制还是不错的,加上上面对止损提出的改进思路,应该还能做的更好。
小结:
https://uqer.io/community/share/5812b3e5228e5b43f85c2252从回测来看,海龟交易策略还是挺适合部分商品期货的,但是对于不同的品种,由于其自身特性不同,对于参数的设定还值得推敲,例如最大 unit 数,这个对于不同品种仓位控制效果需求可能不同;再如唐奇安通道的 N 值,在分钟线如何设定值得研究
这里没有设定止盈,我个人的理念是不设止盈,控制好止损,让利润奔跑。文中止损点还有优化的空间,在盈利充分的时候,应当上移止损点锁住更多利润
对于分钟线回测,目前回测框架似乎不完善, 1 分钟线回测收益高的离谱。。有兴趣的矿友可以试试。期待下个版本~
小伙伴们,期货回测该玩起来辣
这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。
https://www.v2ex.com/t/317715
V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。
V2EX is a community of developers, designers and creative people.