楼主: wl142857
13534 8

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

  • 0关注
  • 34粉丝

硕士生

69%

还不是VIP/贵宾

-

威望
0
论坛币
201 个
通用积分
0
学术水平
11 点
热心指数
12 点
信用等级
8 点
经验
7085 点
帖子
84
精华
0
在线时间
281 小时
注册时间
2009-2-22
最后登录
2020-6-24

楼主
wl142857 发表于 2015-12-27 18:37:18 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币

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

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


1、交易成本

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

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

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


降低交易成本的方法有:

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

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



2、滑点

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


3、幸存者偏差

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


4、未来函数

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


5、过拟合

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


6、偷价格

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


7、复权

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


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

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

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


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

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



二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

关键词:基础篇 那些事 Learning earning machine 量化 量化投资 回测

沙发
vtmc 发表于 2015-12-30 16:24:49
lz好样的,期待给更多好文。

藤椅
HTY263 发表于 2015-12-31 21:37:10
不错哦,期待更多分享

板凳
littlemay723 学生认证  发表于 2016-1-23 18:34:41
请问楼主,在没有接触过编程的前提下,得花多长时间学会用PYTHON弄量化分析,至于PYTHON用来开发IT领域的程序可以忽略,只集中于量化

报纸
wl142857 发表于 2016-1-23 19:03:45
littlemay723 发表于 2016-1-23 18:34
请问楼主,在没有接触过编程的前提下,得花多长时间学会用PYTHON弄量化分析,至于PYTHON用来开发IT领域的程 ...
无任何基础大概需要三个月

地板
littlemay723 学生认证  发表于 2016-1-23 19:32:06
wl142857 发表于 2016-1-23 19:03
无任何基础大概需要三个月
除了懂英文,没有任何基础,求推荐一本可以从零开始学PYTHON的书籍,论坛上太多太杂,不会挑选,请推荐一本主要FOCUS在量化的方向,在线等回复,感恩...

7
wl142857 发表于 2016-1-23 19:59:17
[quote]littlemay723 发表于 2016-1-23 19:32 a byte of python 最简明的入门书籍
廖雪峰http://www.liaoxuefeng.com/wiki/0014316089557264a6b348958f449949df42a6d3a2e542c000
Python for Data Analysis  学习pandas的使用
Dive Into Python  有了一定基础再看
python 学习手册  不用看,当工具书

还有这个MIT的open course:
http://open.163.com/special/opencourse/bianchengdaolun.html
这个课程edx上也有,配套的教材是thinkpython——How to Think Like a Computer Scientist

focus量化的python书国外有,但是我都没读过,不好推荐


已有 1 人评分学术水平 热心指数 信用等级 收起 理由
littlemay723 + 1 + 1 + 1 热心帮助其他会员

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

8
Lnan95 发表于 2016-2-15 18:06:12
挺好的文章
能问下哪能找到些关于回测代码的资料吗?自己的代码感觉很笨拙,但是不知道怎么修改,想参考学习一下。

9
wl142857 发表于 2016-2-20 13:24:53
Lnan95 发表于 2016-2-15 18:06
挺好的文章
能问下哪能找到些关于回测代码的资料吗?自己的代码感觉很笨拙,但是不知道怎么修改 ...
可以在github上看看像zipline这种比较有名的回测框架源码。
已有 1 人评分热心指数 收起 理由
Lnan95 + 1 感谢!

总评分: 热心指数 + 1   查看全部评分

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注jr
拉您进交流群
GMT+8, 2025-12-25 08:16