加载中…

加载中...

个人资料
faruto
faruto 新浪个人认证
  • 博客等级:
  • 博客积分:0
  • 博客访问:1,149,587
  • 关注人气:2,116
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
相关博文
推荐博文
正文 字体大小:

[转载]如何检验一个交易模型是否有实盘价值?

(2014-08-19 13:41:40)
标签:

转载

分类: 量化投资相关
版权声明:文章内容为本人原创,转载请注明出处。

学会论坛里时常有朋友上传自己的交易模型测试报告求评价,也不时有一些朋友私信我聊这个问题,鉴于此,我抛砖引玉,分享一下我个人在这方面的一些体会。

检验一个交易模型,首先最基本的一个工作就是得检验代码里是否有逻辑错误或者偷价格现象。偷价格主要体现在两个方面:一个是利用过去的价格来交易,比如"if(H>H[1])  buy(1,open);"这种写法就是在偷价格,因为在k线开盘时你是无法知道当根k线的最高价的,再一个就是没有扣除对价价差,稍微盯过盘的都知道,买1和卖1的价格是至少一个点差的(不活跃的品种会更大),如果在发生信号后保证成交,得以对手价去下单,一般和信号模拟价相比要损失一个点差左右的,所以在写交易模型编写时必须要扣除点差,这点在写交易频率较高的日内模型时特别重要,好多这类策略都是如果没有计算点差,那测试报告的资金曲线几乎是一根笔直的斜向上的直线,一旦加上点差,立马变为亏损。这个最基本的第一步检验工作非常的重要,这一步不过关,其他的检验步骤没有任何意义。我的一个比方就是这就好比是对着一个ps过的像片评论是否是靓女一样,凤姐还能ps成天仙呢。但是这一步检验工作是必须得仔细检查代码的,无法接触到代码的第三方是无法完成这一步的,故也无法帮助别人评价交易模型是否具备实盘价值,这也是我很少在学会论坛上对网友上传的测试报告进行点评的原因。

过了这一关,第二步就是检验模型在样本内外的测试表现了。说到这,我先说点题外话,在学会的各种量化投资活动中,我接触到了很多做量化投资的朋友,不少都是名校毕业的精英。但是我发现一个很奇怪的现象,就是很多朋友一毕业就把统计概率的相关基础专业知识还给了学校了,不懂得样本内外的差异对比,不懂得显著性检验。量化投资的建模过程本质上就是一个从大量的貌似随机的数据中找寻局部非随机数据的过程,如果不借助概率统计的相关专业知识,很容易落入过度优化的陷阱。

具体如何做显著性检验我就不写了,有兴趣的朋友可以自己去补习相关知识。简单的说,这第二步就是要求在编写调试交易模型时将测试数据至少分为两部分,一部分作为样本内,另一部分作为样本外。样本内你可以充分进行各种优化尝试,然后拿在样本内数据上调试好的模型去在样本外数据测试,看看样本外数据上的测试报告是否明显输于样本内(可以很悲剧的说,大部分都是这个结果)。在这里,要注意的是不要自欺欺人。如果发现样本外数据表现不好,又觉得丢掉模型太可惜或者不愿意承认自己这个模型不行,而对着样本外数据继续做模型优化,直到样本外数据上也表现得一样好,那最后受伤的一定是你的银子。在对着样本外数据做优化时,样本外数据早就成了样本内数据了。除非你继续拿新的样本外数据来检验,否则是肯定不可以的。测试报告中有几个细节要注意,一个是要求样本内外的交易记录至少各有50条以上,再一个,是模型的几何年化收益率/最大回撤的比值在2以上。对于一些粗糙模型,在单个品种上很难让几何年化收益率/最大回撤这个比值大于2,如果在相关度低的多品种上进行组合投资,使组合投资报告上的几何年化收益率/最大回撤这个比值大于2,也是达标的。

在样本内外表现得一样优秀的交易模型,是否就一定具备实盘价值的?不是的。因为我们的抽象次数太多了。我们在做量化研究的过程中往往是拿很多个模型去很多个品种上做各种测试,比如,拿20个模型在20个品种上做测试,每次调优只选用20组参数,那事实上等于我们做了8000次抽样。8000次抽样什么概念?就是你能大约找到8个仅凭运气连续十次扔硬币都能扔出正面朝上的人,能找到20多个和你生日虽然相同但和你其实啥猿粪都没有的人。瞎猫也能碰到死老鼠,8000次抽样下,即使你做了严格的样本内外数据的区分,总能找到那么几个仅仅因为随机性而在样本外也表现得同样优秀的模型。所以,仅仅因为样本内外表现一致仍然还不行,因为我们仍然无法排除掉随机性这个无处不在的随时可以迷惑住我们的敌人。于是,就有了第三步,检验模型背后的交易思想是否具备市场逻辑。

价格的运行不以我们的个人意志为转移,也不以我们的模型信号为转移。价格只由订单流推动,而订单流取决于交易者对市场的预期,交易者对市场的预期有的是靠基本面,有的是靠技术面,也有的是墙头草,量化交易者应该仔细检查自己的模型,你的模型是否在上述提到的几个方面中的某个方面上具备一定的符合逻辑的预测优势,如果一个都不符合,那么模型的稳健性就很值得怀疑。这么说可能有点抽象,我举个例子,有过一定看盘经验的朋友应该能发现,在前期明显高低点形成的重要支撑阻力位上价格确实容易发生一定程度的反转,这个在心理学上是有近因效应和锚定效应作为解释支撑的。在重要阻力位时,基于这一交易逻辑,我们预测到,会有一部分的交易者转为多头(或者至少平掉空单),如果我们以此建模,就具备一定的概率优势。为什么有的支撑阻力位有效有的会无效呢?那是因为我们刚才说了,在支撑阻力位附近只是以支撑阻力位为交易决策依据的交易者改变方向了,但是其他类型的交易者比如基本面交易者不一定改变方向,如果在此时有突发的基本面消息,则可能基本面交易者形成的合力更大,从而导致价格没有发转而是突破了。但是没关系,因为基本面的改变是随机的,有利好也可能有利空,二者累计叠加可以合理假设均值为0,那么只要在重要支撑阻力位时确实会有一部分交易者转到我们预测的方向,我们就具备概率优势,持续交易下去的期望值大概率为正。

以上三步便是我个人检验交易模型的重要步骤,由于我个人是偏好自上而下开发交易模型,即先找市场逻辑,再做统计检验,故我其实是312的顺序。采用自下而上的开发流程的朋友则适用于123的顺势。

0

  • 评论加载中,请稍候...
发评论

    发评论

    以上网友发言只代表其个人观点,不代表新浪网的观点或立场。

      

    新浪BLOG意见反馈留言板 电话:4000520066 提示音后按1键(按当地市话标准计费) 欢迎批评指正

    新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 会员注册 | 产品答疑

    新浪公司 版权所有