[期货回测] 海龟交易×商品期货

2016-11-03 13:43:07 +08:00
 datayes2015
前言

虽为期货小白,本萌也忍不住来感受下 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/5812b3e5228e5b43f85c2252

3.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 分钟线回测收益高的离谱。。有兴趣的矿友可以试试。期待下个版本~

小伙伴们,期货回测该玩起来辣
6640 次点击
所在节点    Python
15 条回复
newworld
2016-11-03 13:50:32 +08:00
可以不可以带新人进来玩
datayes2015
2016-11-03 13:58:55 +08:00
@newworld 当然可以啦:)
bigtan
2016-11-03 14:03:29 +08:00
一分钟好得离谱是只设置了手续费,没有设置滑点吧
bigtan
2016-11-03 14:04:10 +08:00
@datayes2015 商品的 ticksize 非常的大,滑点控制不好
datayes2015
2016-11-03 14:12:49 +08:00
@bigtan 恩,有道理,这里我再多思考思考,把模型设置的更精准:)蟹蟹提出哈
612
2016-11-03 18:33:52 +08:00
yjxjn
2016-11-04 11:00:24 +08:00
螺纹钢收益大也是由于今年‘去产能’去的好吧。。。。。但是我就是想做 K 线的趋势交易,不单单限于创业板指数, ETF ,股票 K 线,这个也能实现么?》
erbajie
2016-11-07 10:09:51 +08:00
grindsgears
2016-11-24 22:24:14 +08:00
哎,,,又来一个
早点放弃吧。不好意思,说的比较直接。。 希望不要介意
我看过 n 多,用这么海龟,什么之类的,上个世纪的东西,希望能在交易市场赚钱。
成功的几率应该和买彩票中大奖差不多

有太多人加入进来,做这种所谓的“回测”。。。 如果你练练代码,玩下可以,,指望挖出策略赚钱,,可以醒醒了!!

实质的建议
目前能够稍微试试的就那么几种
1. 基于 order book 的 market making ,。 就是真正的 HFT , 门槛很高,,现在基本都是在拼硬件了
2. 基于 spread 和 assert class 的 spread 动态套利,,比如期货不同月份合约, 还有那种 lme 铜期货和上交所 cu 铜期货直接的动态套利,现在空间也越来越小
3. relative value , 比如在美国股票的同一个板块,买最强的那只,空最弱的,同时用 option 来避免波动
4. globe macro ,,, 比如,, 美国大选后,, 去买多 russell 2000 然后去 short 新兴市场。 宏观对冲

你跑出来的曲线,,和实际几乎一点关系都没有
1. 数据进度, 最多就是 tick+ last price , bid ask order book , market depth 完全没有。 简单的说,你的订单根本无法成交,或者 spread 太大
2. 你没有考虑资金,, 交易手续费随时调整, 保证金随时调整。 可能中途就挂的没钱
3. 一个动态的市场,每次逻辑都不一样, 你要用固定的方法,, 基本就会挂, 什么海龟,本质就是 trend following ,说白了就是追踪趋势,, 拜托,,,,如果你要知道有趋势,或者趋势什么时候反转,你用什么都一样,, 那么用个均线,,收益不会和你的这个差太多。。。 海龟这种 trend following ,在市场 chop ,就是震荡的时候,会被杀的裤子都没有,,, 不信你试试看跑下今年的 pta , c 之类或者 2012~2014 的 a 股。。。你再试试,用简单的两条均线 sma200+sma5 去跑焦炭,,赚的绝对不会比你这个复杂的差
4. 1 分钟,,, lmaoooooooooooo 。。。 来实盘,我等你。 哈哈哈

准备研究这个,或者几个什么指标组合, k 线形态之类不具备专业知识。。。 最好建议你们不要实盘,,当成好玩的不错,,来实盘,钱早晚被我赚走,, lol


PS: 中国期货好像做的最好的都是对产业很了解的,不管是现货还是期货。而且,虽然你看他们在 RB 上的仓位很大,其实早些时候,他们都是同时去 short i ,空铁矿石,,用此来做空钢厂利润.。
a 股,,今年的主流策略都是, 网下打新+ alpha + 底仓 T+0 。 所以现在的日均波动越来越小。
grindsgears
2016-11-24 22:32:38 +08:00
祝你好运
wynemo
2016-11-25 14:29:57 +08:00
r#9 @grindsgears 老司机阿
datayes2015
2016-11-25 15:03:50 +08:00
@grindsgears 感谢指点,能抓老鼠就是好猫,及时做韭菜也要做一颗茁壮成长的韭菜:)
a930329019
2016-11-25 15:28:48 +08:00
多少倍杠杆?
qdwang
2017-07-14 18:40:49 +08:00
@grindsgears 哈哈太直白了 不过一般不撞南墙不回头
qdwang
2017-07-14 18:45:56 +08:00
lz 快点实仓操作起来 这东西和游泳一样

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/317715

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX