【量化杂谈之基础篇2】回测的那些事 [推广有奖]

来源:互联网 发布:arp 添加网关mac 编辑:程序博客网 时间:2024/05/22 07:44

在建立自己的量化策略回测系统之前,我们必须对策略回测中的一些概念和可能碰到的坑有一定地了解。回测看似是一件非常简单的事情,但是回测者往往会犯一些错误,这些错误大多都会夸大策略的收益。策略的构建者自信满满,以为自己找到了量化"圣杯"。遗憾的是,大多回测收益率极高的策略都是在会测中犯了细节上的错误,如果把这些策略用于实盘,那么很可能与回测结果大相劲庭。

        回测可以被认为是量化投资与其他投资最为不同的地方,我们可以采用丰富的历史数据对策略的过去表现进行衡量,从而为策略可以用于实盘中提供可靠的证据。因此,回测的的意义主要在于证实策略的有效性,从而帮助我们筛选策略并最优化模型参数。我们从七个方面讲讲回测中可能会遇到的问题。


1、交易成本

       交易成本除了显式的佣金、印花税等外,还有一些隐式的成本。在回测中,隐式交易成本容易被忽视。隐式交易成本主要有流动性成本、机会成本。

  • 流动性成本(冲击成本):大规模市价买入或卖出时,由于大单对市价的冲击从而未按照预定指令价位成交。

  • 机会成本:限价买入时,不会产生流动性成本,但可能会因为指令不执行错过获利机会。


降低交易成本的方法有:

  • 降低佣金:避免交易低价股

  • 降低市场冲击成本:限制单个指令的交易规模(单个指令不超过日均交易量的1%,将大额指令拆成小额分别执行)



2、滑点

        滑点指的是开仓点位和成交点位之间的差异,前面说到的流动性成本是形成滑点的一种。除此之外,滑点还可能因为网络延迟、交易平台不稳定等情况导致。实盘中处理滑点的方法需要在下单交易的时候做算法处理,并且选择交易一些流动性较高的品种。在回测中,我们一般会在程序中设置固定数值的滑点。


3、幸存者偏差

       产生"幸存者偏差"的原因是“死人不会说活”。在对策略回测的时候,我们一般只会选择那些在回测期有数据的股票,那些在回测期或者在回测期前就退市了的公司默认被排除了。于是回测的结果是对仍存活的公司而言,破产、退市、兼并、收购而消失的公司并不会在回测中体现。避免“幸存者偏差”的简单方法是使用近期数据进行回测;如果需要使用较远期的时段进行回测,那么需要选择没有遗漏“非幸存者”的数据集。


4、未来函数

       未来函数是指在进行买卖信号判断的时候,利用了未来不确定的行情信息。使用了"未来函数"的策略能够预知未来,得到极其夸张的收益率也不足为奇。未来函数的错误在策略设计的时候就能避免,判断信号是否出现的时候只能使用已有的行情信息。


5、过拟合

       过拟合产生于策略模型中过多的规则和参数。过拟合使得策略在回测期表现非常好,但将模型和参数用到当前行情时却十分糟糕。Machine Learning中判断过拟合问题的方法同样也可以用于量化模型中,主要有交叉检验,模拟测试以及敏感性测试等办法。采用这些方法可以对量化策略模型是否存在过拟合问题进行检验,若存在过拟合问题则必须对模型进行调整。


6、偷价格

       未来函数是采用未来的信息进行交易,而偷价格则是利用信号触发前的价格进行交易。在信号被触发时,我们只能使用信号触发时的价格进行交易,而不能用已经成为过去的价格。在一般的情况下,偷价格是很容易避免的,但是如果跳空和交易信号同时出现时很容易犯偷价格的错误。由于跳空造成的价格不连续,指定的价格不会触达策略设置交易的价格,如果使用该价格下单那么会出现偷价格的现象。


7、复权

        由于股票存在股利分配等股本的变动,其价格会做一定的调整,这种非正常的价格变动在回测中是要被排出的,因此需要使用复权后的数据进行回测。在拿到历史数据集时,一定需要了解价格数据是否做了复权的处理。一般来讲,在回测中采用前复权的数据,前复权是保持现有价位不变,将以前的价格进行缩减,这种处理是以当前价格为基准进行调整,较后复权更直观一些。当然,采用用向后复权也不会有太大问题,在计算策略收益率的时候两者结果是一致的。


量化杂谈基础篇的其他文章:

【量化杂谈之基础篇1】获取所有股票的代码和名字

http://bbs.pinggu.org/thread-4145710-1-1.html


请关注我的微信公众号,有更多关于量化的原创文章哦!。

我的微信公众号:会掘金的小鹿(NuggetsRoad)
是时候关注一波了!!

0 0
原创粉丝点击