到底是怎么应用的呢?
开始载入数据
载入初始数据完成,数据量:15
载入回测数据日期: 2016-02-14 00:00:00 - None
载入回测数据完成,数据量:149
数据回放结束
计算回测结果
------------------------------
第一笔交易: 2016-02-29 00:00:00
最后一笔交易: 2016-05-05 00:00:00
总交易次数: 5.0
总盈亏: 12,330.0
最大回撤: -900.0
平均每笔盈利: 2,466.0
平均每笔滑点: 32.0
平均每笔佣金: 0.0
胜率 80.0%
平均每笔盈利 3,307.5
平均每笔亏损 -900.0
盈亏比: 3.67
历史成交:
2016/02/15 多头入场
2016/02/15 开 多 1 仓 加仓位置 1873.0 - 1886.38 - 1899.76 - 1913.14 止损: 1819.47959184
2016/02/22 加 多 1927 1886.38
2016/02/22 加 多 1927 1899.76
2016/02/22 加 多 1927 1913.14
2016/02/22 加 多 4 止损:1873.78306861
2016/02/26 多 离场 亏损突破
2016/02/26 平 多 4 仓 1898
2016/03/01 多头入场
2016/03/01 开 多 1 仓 加仓位置 1950.0 - 1964.1 - 1978.21 - 1992.31 止损: 1893.58269163
2016/03/02 加 多 1990 1964.1
2016/03/02 加 多 1990 1978.21
2016/03/02 加 多 3 止损:1918.75535651
2016/03/03 加 多 1993 1991.56
2016/03/03 加 多 4 止损:1909.34425962
2016/05/04 多 离场 盈利突破
2016/05/04 平 多 4 仓 2295
2016/05/10 冷却中, 不开仓 cd: 1系统2 开仓 空 : 1785
2016/05/10 开 空 1 仓 加仓位置 2078.0 - 2028.73 - 1979.46 - 1930.19 止损: 2275.078102
2016/06/06 空 离场 盈利突破2034 2029 2275.078102
2016/06/06 冷却中 ...
2016/06/27 多头入场
2016/06/27 冷却中, 不开仓 cd: 1系统2 开仓 多 : 2683
2016/06/27 开 多 1 仓 加仓位置 2207.0 - 2237.45 - 2267.89 - 2298.34 止损: 2085.21952981
2016/07/19 多 离场 盈利突破
2016/07/19 冷却中 ...
2016/08/08 多头入场
2016/08/08 冷却中, 不开仓 cd: 1系统2 开仓 多 : 2683
2016/08/08 开 多 1 仓 加仓位置 2536.0 - 2578.56 - 2621.11 - 2663.67 止损: 2365.77156706
2016/08/30 多 离场 盈利突破
2016/08/30 冷却中 ...
2016/09/07 冷却中, 不开仓 cd: 1系统2 开仓 空 : 1878
2016/09/07 开 空 1 仓 加仓位置 2334.0 - 2298.29 - 2262.59 - 2226.88 止损: 2476.82675054
似乎跟想象中的有点不一样?并没有出现频繁开仓然后亏成狗,反而只有寥寥的几次开仓就获得相当高的收益。很简单,为了不让自己受到打击,所以我特地选择了今天单边行情走势最好看的螺纹钢rb1701来回测。
至于上面 冷却中 ,这是应用到了海龟中突破信号有效性判定,如果前一次是盈利性突破,那么下一次突破信号视为无效,为了方便代码的定义,此时我会设为技能冷却中。这样的话,数据信号行是假装开仓了,实际上并没有开仓。
根据海龟交易法则中头寸规模的设定,一个头寸的大小跟其波动性ATR有关。同时,不同品种的合约,其一手的价值也差距很大。对于资金量很小的人来说,很难去调整头寸规模了。
举个栗子
螺纹钢rb,刚开始做期货大都会推荐使用这个试手,波动大,够活跃。以最近的主力合约 rb1701 为例,其10分钟K线的范围,在 7 ~ 15 之间,平均值大概是12。那么可以计算得出,一个头寸如果最小是1手螺纹钢,那么对应需要总资金
总资金∗风险投入=2ATR∗头寸大小∗合约大小
风险投入,书上取 2%,螺纹钢合约大小是1手10吨,那么
总资金=12∗2∗1∗10/0.02
相当于,你用螺纹钢来做10分钟K线的海龟策略,那么最少要准备12k的资金。这也就意味着,如果你资金在10万以下,开仓的范围也仅在8手以内。
反过来,如果想通过分散品种来平摊风险,那么类似于螺纹钢这个价值的品种,可以同时开仓8个品种。可以打打分摊风险。如果是日线的rb1701,其ATR为 60 ~90。按平均75来算的话,10万资金勉强能开2个品种。就问你满仓2个品种,你怕不怕?
所以日线还是等有钱之后再说吧。
先来看看螺纹钢主力连续合约,也不知道从哪里下来的数据,不用在意这些细节。
本金10w,单品种回撤真不是一般的爽。不过我忘记加上动态头寸了,再加上:
不过还只是针对ATR来调整头寸,但是整个收益曲线的波动却莫名地,增加了……
心塞
没关系,还没考虑整体权益来计动态调整。再加入整体权益来动态调整:
似乎逻辑有点问题。但是我又找不出什么原因。之前回测都是在使用主力连续合约,合约换季时可能会存在很大的跳空。所以我决定花点时间弄个rb1610的合约分钟线来回测。
然后就弄好了。
呵呵
再来一遍,无动态头寸:
```
初始资金: 12000
第一笔交易: 2015-10-26 21:20:00
最后一笔交易: 2016-09-20 09:30:00
总交易次数: 346.0
总盈亏: 29,297.53
最大回撤: -24%
平均每笔盈利: 84.67
平均每笔滑点: 24.62
平均每笔佣金: 1.54
胜率 41.04%
平均每笔盈利 385.5
平均每笔亏损 -183.55
盈亏比: 2.1
```
根据 ATR 动态调整头寸:
初始资金: 100000
第一笔交易: 2015-10-26 21:20:00
最后一笔交易: 2016-09-20 09:30:00
总交易次数: 346.0
总盈亏: 481,027.36
最大回撤: -43%
平均每笔盈利: 1,390.25
平均每笔滑点: 525.78
平均每笔佣金: 30.3
胜率 41.04%
平均每笔盈利 6,484.51
平均每笔亏损 -2,645.95
盈亏比: 2.45
趋势投资常见的资金曲线形态比较明显了,因频繁开仓而损耗的缓慢亏损,然后碰到一波行情猛拉一波收益。我感觉1个亿的小目标近在咫尺了!
最后是根据总权益+ATR来调整:
然后就爆仓了……
捂脸
特么头寸控制这么严格为毛会爆仓啊喂?!
检查了一下,发现是头寸和ATR之间的问题。原版海龟的ATR是基于日线的,而对于10分钟线,偶尔会出现很长时间没有成交,或者真的内心毫无波动的一天。此时的ATR会低至1。这样算下来,这样算出来的头寸规模,几乎就是满杠杆了……怪不得会爆仓。
在海龟里面,N指标就等于是 ATR,这里我决定擅自加入一个限制,如果ATR过低,N起码不低于6个价差。为什么是6呢?因为这样才66666。
初始资金: 100000
第一笔交易: 2015-10-27 10:40:00
最后一笔交易: 2016-09-20 09:30:00
总交易次数: 335.0
总盈亏: 1,462,711.22
最大回撤: -56.2%
平均每笔盈利: 4,366.3
平均每笔滑点: 1,722.63
平均每笔佣金: 115.55
胜率 42.69%
平均每笔盈利 30,329.5
平均每笔亏损 -15,491.7
盈亏比: 1.96
一年10倍,我觉得我的小目标可以定为1.1个亿了。
话说本来想要分析风险的?没有动态调仓的时候,数据体现的是出入场信号的质量。胜率41.04%,盈亏比2.1,还凑合。最大回撤24%,这个看起来是非常高了。海龟上说,实盘中要做好准备,实盘中的回撤可能会是历史回测中的2倍,意味着实盘可能会达到50%以上。使用动态头寸之后,就可以看总盈亏和最大回撤了。从总盈亏来看,一年盈利达到1400%,同时回撤也很惊人地达到56.2%,已经超出无动态头寸的24%的两倍了。
总而言之,对于单品种来说,海龟的回撤和收益都是杠杠的。接下来的通过分散品种来分散风险的机制,就显得非常重要了。理论上,分散品种可以稍微平滑一下收益曲线,同时也有可能因为共振,导致更加陡峭的回撤和收益。
这次,就酱。
2016年9月21日 星期三
对角懵逼
微博ID:@潇Shawn纹
雪球ID:@潇纹