你知道吗,你的回测结果可能都是错的

发布于: 修改于: 雪球转发:46回复:82喜欢:192
如果没有意外,你之前一直在使用前复权价格做回测,使用前复权价格回测存在未来函数(未卜先知,提前使用未来的数据),因此你的回测结果可能都是错的。


Tell me why?

使用前复权价格,不论回测开始时间、结束时间是何时,使用的数据都是基于今天(回测当天)或某个时间的复权因子进行前复权获得的价格,因此使用前复权价格进行回测,回测结果肯定有问题。示意图如下:



不论历史时刻1或历史时刻2,拿到的数据都是基于未来某一天的前复权价格,使用这样的数据存在未来函数(未来函数是回测最大的敌人之一)

真实价格回测是如何解决这个问题的?
使用真实价格回测模式,回测到历史时刻1,使用历史时刻1的真实价格撮合成交;如果需要复权,会使用历史时刻1的复权因子,对“历史时刻1”之前的价格进行前复权,这样有效避免了未来函数,因为回测全程都不可能使用未来的数据。



你可能没有看懂,下面举个例子:


如现有一只股票,股价一直没有波动,只进行了拆分
前复权回测模式
站在“历史时刻3”看历史数据:因为使用今天的复权因子,“历史时刻3”之前的股价均为2;
站在“历史时刻2”看历史数据:因为使用今天的复权因子,“历史时刻3”的股价是2;
站在“历史时刻1”看历史数据,因为使用今天的复权因子,“历史时刻2”和“历史时刻3”的股价是2;
真实价格回测模式
站在“历史时刻3”看历史数据:因为使用历史时刻3的复权因子,“历史时刻3”之前的股价均为8
站在“历史时刻2”看历史数据:因为使用历史时刻2的复权因子,“历史时刻3”的股价是4;
站在“历史时刻1”看历史数据:因为使用历史时刻1的复权因子,“历史时刻2”和“历史时刻3”的股价是2;
我们不难看出,前复权回测模式,回测过程中使用的价格是不正确的。

下面再举一个真实的例子,比较一下前复权回测模式和真实价格回测模式的区别


2007-01-30,波导股份的真实股价(绿色曲线)是低于格力电器(黑色曲线)的;但使用前复权价格,波导股份的价格会高于格力电器。
采用最简单的交易思路,购买股价低的股票并持有,前复权模式会买入格力电器,真实价格回测模式会买入波导股份。
下面我们使用JoinQuant进行回测,根据2007-01-30当天格力电器与波导股份的收盘价,买入低价位股票并持有到现在。回测结果如下所示:

前复权回测模式的回测结果:
初始资金:100,000
策略收益:776.54%
沪深300收益:21.98%
最大回撤:64.98%


真实价格回测模式的回测结果:
初始资金:100,000
策略收益:78.35%
沪深300收益:21.98%
最大回撤:79.78%


前复权回测模式因为存在未来函数,结果是不准确的,使用前复权回测模式可能会让你获得非常高的收益,但实盘时,效果却非常一般;

如果你想要获得正确的回测结果,请使用真实价格回测。



快告诉我,你用的什么平台做回测

作为最专业的量化交易平台,JoinQuant全球首推真实价格回测,从此,再也不用担心回测结果不准确了。

使用真实价格回测示例:网页链接

@量化钢铁侠 @量化小王子 @价值趋势技术派 @东边的小石头 @linnany @william_hsu @lomycat @ETF拯救世界 @湿湿碎 @草帽路飞 @唐僧爱理发 @数据驱动力 @Gyro @qs_cn @右侧投机者 @爱抽烟的猫 @今日话题 

本文由JoinQuant推出,版权归JoinQuant所有,商业转载请联系我们获得授权,非商业转载请注明出处。

精彩讨论

量化钢铁侠2016-06-23 12:11

如果只是拆分,前复权即使用到了未来的复权因子也是没问题的,因为拆分是成比例的,只会对根据个股价格进行决策的逻辑有影响。前复权的关键问题在于分红的处理,很多行情软件上分红这块处理的不对,会造成很大的偏差。如果用前复权,每次分红都必须根据那一时刻的除息因子特别处理。

使用真实价格没有这个问题,但拆分时会造成巨大的缺口,造成时间价格序列失去连续性,所有基于个股时间价格序列的逻辑都会失效。

这两种方法各有优缺点,用哪种要看具体需求。

风之弈2016-06-23 11:47

这样说来,不去你那看看都不行啦

全部讨论