用昨天的收盘价做今天的决策,回测会虚高
发布时间:39分钟前阅读:6
这是回测里最普遍也最隐蔽的错误,叫未来函数。它的表现形式很简单:你在今天开盘前,用今天的收盘价做了判断。
典型写法是这样:计算今天的均线,用今天的收盘价;如果条件成立,就以今天的开盘价买入。问题在于,今天的收盘价要等到收盘才知道,你不可能在开盘时用到它。
这种错误让回测虚高的幅度往往很大,因为收盘价往往是最有利于信号的价格。买在开盘、卖在收盘,等于白拿了全天的涨幅,而实盘根本做不到。
避免的办法是养成一个习惯:任何用到的数据,都要问一句它在那个时点是否已经存在。开盘前能拿到的,只有昨天及以前的收盘数据,加上今天的开盘价。除此之外都是未来信息。
具体实现上,把所有信号计算往后移一天。今天算出的信号,明天开盘执行。这样虽然会错过一些机会,但结果可信。
检验方法:把回测的信号执行时间统一推迟一天,再跑一遍。如果收益大幅下降,说明原来的结果里有相当一部分来自这个时间差。这个差额有多大,你的策略就有多脆弱。
还有一个同类的错误:用当天的成交量判断流动性。成交量也是收盘后才知道的数字,盘中你只知道到那一刻为止的累计量。用它做筛选,等于提前知道了全天的情况。
养成一个自查习惯:把策略里所有用到的变量列一遍,逐个标注它的可得时点。标不出来或者标成当天收盘的,就要考虑往后移一天。这份清单做一次,能用很久,也能传给下一个接手的人。
这个检查做完,你会对自己的策略多一层信任。信任来自搞清楚每个数字的来源,而不是来自曲线好看。
顺带说一个纪律层面的建议:把这份时点清单打印出来,贴在写代码的桌子前面。每次新增一个变量,就去清单上标一笔。养成这个动作之后,未来函数这类错误在写的时候就挡掉了,不用等到回测出问题再回头查。
股票/量化开户找我!股票佣金万0.854(满足条件)!无门槛国债逆回购一折 (百万分之一)!ETF佣金万0.5!ETF申赎一折!优惠多多!免费量化使用量化软件QMT+ptrade!资金靓号:888、999、等定制!
温馨提示:投资有风险,选择需谨慎。
我如果今天把基金都卖掉,那价格是怎么算的,是今天的收盘价还是昨天的收盘
为什么昨天收盘价和第2天的开盘价不同?



问一问
从业认证

+微信
分享该文章
