未来函数与回测陷阱

量化交易当中我们会经常用到“回测”这一个步骤,就是用过去的历史数据来检验策略的盈亏情况,然后用这个盈亏情况来估计实盘时候的盈亏。但是,这种回测方式也存在着不少陷阱。

现在网上有很多号称“必胜法”的策略,在回测时胜率极高,盈利回撤极低。但是如果你真的拿这些策略来做实盘交易,很可能最后输的倾家荡产。究其原因,这些必胜法的背后大多都使用了“未来函数”这个陷阱。

所谓的未来函数,可以分为两大类。

一种情况

一种是明显的未来函数,就是引用了历史数据中的“未来部分”。例如策略根据历史知道t+3是一条大阳线,因此在t日发出买入指令。这种交易在实盘中无法当场发出买卖信号,因为程序不知道未来3天的涨跌情况。而只能等到真的走到t+3大涨的时候,才在t日“显示”出买卖信号,这自然是万试万灵了。

另一种情况

另一种情况则是比较隐蔽的未来函数。这种未来函数往往使用了一个当前的数值来代表未来数值,但是实际上未来的数值是不断变化的,因此根据这个当前数值计算出来的策略买卖点也是不稳定的。

举个简单的例子,很多人喜欢用“当天收盘价”来计算买卖点。如果是历史回测,那么完全没问题,因为历史的收盘价是不变的。但是,你在交易的时候怎么知道当天的收盘价呢?大部分程序只能是默认当前本日的最新价格就是收盘价。问题是,当策略在交易的时候,这个最新价格并不等于最终的收盘价!这种未来函数的存在,会导致买卖信号点频繁出现和消失。如果一个买卖点是不稳定的,那么就说明它不符合策略的核心逻辑。当时来看可能是合理的,结果买卖点出现了。但是加上后面的数据来看,这个买卖点不符合策略,结果买卖点消失了。但是交易一旦发生,是不能像买卖点一样说撤销就算了的。如果最终买卖点证明是错误的,那么交易也有很大机会是亏损的。

如何解决?

要解决未来函数的问题,有几个办法。

一是拿到策略的源代码,通过人工或者程序的代码分析来识别是否存在未来函数。

另一种简单的办法就是先通过模拟盘交易一段时间,来看看是不是存在交易点不稳定的情况。

当然,如果既无法拿到源代码,也没有办法先模拟盘测试,最最简单的识别方法就是看交易策略的胜率。如果一个交易策略胜率高的异乎寻常,那么几乎可以肯定这个策略含有未来函数。否则,别人又怎么会把这么赚钱的策略公之于众呢?

来源:量化投资俱乐部

(0)

相关推荐