您的位置:首页 > 其它

【转】动态复权(真实价格)模式原理详解!

2017-11-08 09:08 330 查看
动态复权(真实价格)模式原理详解!

如果没有意外,你之前一直在使用前复权价格做回测,使用前复权价格回测存在未来函数(未卜先知,提前使用未来的数据),因此你的回测结果都是错的。



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全球首推真实价格回测,从此,再也不用担心回测结果不准确了。

如何开启真实价格回测功能?

其实很简单,只需一步即可搞定:

在initialize中使用set_option即可,如下所示:

def initialize(context):
set_option('use_real_price', True)
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐