【量化杂谈之基础篇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)
是时候关注一波了!!
- 【量化杂谈之基础篇2】回测的那些事 [推广有奖]
- 量化杂谈
- 网站推广之新闻营销的那些事儿
- 多线程的那些事(之基础篇)
- 组织管理体系推广经验之八-关于量化管理
- 移动应用推广的那些事儿:应用发现篇
- 杂谈2008—关于游戏和游戏的那些事
- php杂谈【基础篇】之_7.PHP涉及的所有英文单词
- java基础杂谈(二)之 switch的多重匹配
- 【杂谈】那些有个性的言谈
- 实习的那些岁月杂谈(一)
- mongodb基础篇(一)之 SQL和NOSQL的那些事
- 杂谈网站推广排名与关键词之间的关系
- php杂谈【基础篇】之_1.PHP常见错误提示
- php杂谈【基础篇】之_2.PHP变量定义方法
- php杂谈【基础篇】之_3.PHP常量
- php杂谈【基础篇】之_4.PHP字符串操作
- php杂谈【基础篇】之_5.PHP数组函数
- Android进程整理
- mysql5.7 免安装版的配置过程
- STL源码剖析知识
- http请求头,响应头以及状态码
- Android ConstraintLayout使用指南
- 【量化杂谈之基础篇2】回测的那些事 [推广有奖]
- C++笔记(三)
- python
- Drawable 给你的图片加上波纹效果
- Zabbix Agent 源码编译安装
- 解决win10下配置matlab接口的GPU版Caffe时常遇到的一些错误
- 欢迎使用CSDN-markdown编辑器
- Graph based Segmentation
- flannel 实战与源码分析(三)