小鱼量化交易——以恒温器策略试评主力合约换月的解决方案

TB开拓者是一款国内使用较多的自动化交易软件,但在策略开发、回测和实盘交易的时候, TB开拓者软件对主力合约换月的处理让人感到蛋疼。这是个小小的技术问题,但是处理不好,麻烦还真不少。小鱼在网上看到很多朋友关心这个问题,贡献了很多解决办法,但基本不跳出如下几个:

1、用指数代替主力合约进行策略开发和回测

指数的连续性是所有数据中最好的,在主力换月后,还能保持较好的平稳性,用作策略开发和回测是最好不过,但是用在实盘中会出现很大的bug,虽然TB开拓者提供了指数映射到主力合约下单的选项,但是根据指数计算出的成交价格很可能与实际合约的价格相差很多。如图:

data0为螺纹钢指数,data1为螺纹钢主力

小鱼以系统自带的恒温器策略为例来说明这个问题,从截图这一段可以看出,指数计算的买入价格小于主力合约的实际对应价格,以指数价格进行委托,在实盘中,委托价低于市场价,多单不能成交,但在回测中TB会按成交计算,这里就多出来一笔赚钱的交易(而且这里会有大大的偷价),下一笔的空单委托价格低于连续合约,空单会成交,很可惜接下来的空单止损又不能成交。于是就会发生一个很悲剧的事情:所有赚钱的单子在实盘中都不会成交,而所有赔钱的单子都会成交而且比回测赔得更多。

为了解决这个新问题,又开发出很多解决方案,比如在指数上加减一定的差价作为委托价,然而这个办法又带来了更多的新问题:差价的确定办法和误差如何计算,这个问题解决不好,实盘中依旧存在赔钱的单子会成交,赚钱的单子不会成交这个问题。

显然,用指数代替主力合约开发并回测策略,新问题产生的速度比旧问题解决的问题还多,另外,指数和主连的关系也很微妙,有时指数大于主连,有时小于主连,又如何处理。解决一个老问题能冒出两个甚至更多的新问题,不是一个好方向。

2、用主力合约直接进行策略开发和回测

主力合约与指数合约的价格序列特性恰恰相反,根据主力计算的委托价格不会与实盘有太大误差,但主力合约存在换月问题,换月期通常会有大的价差,而系统根据价差计算的开平仓信号和点位,回测结果与实盘相距甚远。

上图为螺纹钢指数,下图为螺纹钢主力

还是以系统自带的恒温器策略为例,如图所示,与指数回测相比,单换月这一笔交易导致的亏损在主连上就多了200多个点。而且还有另外一个更要命的问题,就是200多个点的大跳空会导致技术指标的大幅波动、变形,待技术指标走稳以后,在主连的震荡区开出趋势单。策略逻辑和回测结果都被扭曲,很可能导致交易者花费大量时间去试图完善一个建立在错误逻辑基础上的策略。

3、直接用合约进行回测

这个导致的问题就更加明显,策略的有效期无法保证,另外直接用合约做参数优化,容易出现过拟合的问题,此外,通过对合约在非主力时段的表现优化出的参数,并不都适用于主力时段。特别明显的就是假突破问题,在合约还不属于主力合约时,假突破的问题还不是特别突出,主力合约的假突破真不少。

综上所述,网络上一些关于换月的解决思路,其实距离实盘交易还比较远。很多卖策略的网站和个人,也是利用了这些隐蔽的技术性问题来收智商税。我记得一年多以前京东金融的工作人员曾经询问过我一个量化策略的激励方案,在实盘收益率达到一定水平后,由京东金融出资(50万还是100万)来跑这个策略,是否会有吸引力,我当时直接回答,如果我的实盘收益率能到这个水平,我用10万块跑一年,在复利的力量下能掌握的资金比你的出资还多,你觉得会有吸引力吗?当时工作人员就直接呵呵了。

发表评论

电子邮件地址不会被公开。 必填项已用*标注