这个问题肯定是见仁见智的,没有什么定论。我这里给出两个分享和讨论,一个是自己的一点思考,另一个是MATLAB技术论坛会员fosu_cdm(论坛ID)陈道民(Chandeman)以前就我的这几个问题发过的一个文章。两个分享供大家参考,见仁见智,没有定论,欢迎斧正、讨论、交流。大家互相学习。 1. 参数优化、过拟合问题刍议(by李洋faruto) 在量化投资中,定量投资模型的设计好坏无疑是成功的关键,单纯从数学角度来看,一个交易系统(交易模型)仅仅是一个从行情序列到资金曲线的映射: f(ts, para) = E其中f是一个交易系统,ts是某一个投资标的(股票、期货、期权、外汇等等)的行情时间序列,para是交易系统的参数组,E是资金曲线。 任何一个模型几乎都会有参数(包括所谓的自适应模型)。有参数的话,那么就会碰到参数寻优、过拟合等问题。参数优化基于历史数据进行的策略优化。而历史并不能完全重演。历史中表现优秀的参数,在未来交易中未必会表现很好。 先来看下几种常见的参数优化的方法: (1)InSample-Out Sample 法 分割回测分析区间,将In Sample 区间的优化参数应用于Out Sample区间,分析收益、风险是否稳定的回测分析法。具体形式见下图: 这种来源于数据挖掘中的方法,看起来很美,但在量化投资中应用会碰到一堆的实际问题:In Sample和Out Sample样本大小的确定,合理有效地确定,针对不同的模型,日内、隔夜模型;长、中、段线模型。 (2)ForwardTest 前进分析法Walk Forward Analysis (WFA) 具体形式见下图: WFA与DataMining中的CV过程本质是一样,但DM中CV方法很有效,可以在一定程度上避免over fitting问题,但是DM中的数据形式算是比较固定化的,CV折数的确定也可以进行可列的尝试。 但在量化中,情形却大不通,策略类型的多样化(主要是长、中、短周期的不通导致不通模型的平仓持仓周期不通),那么问题就来了,在使用WFA的过程中,无法有效的给出针对不同类型的模型的一个合理的滑动窗口的确定方案,所以WFA仅仅是看上去很美。 到具体测试环节,以前针对一些常见的模型(ORB,均线等等),我系统性的详细做过一些WFA的测试,结果也不尽人意,由于金融市场中的行情都是人交易出来的,所以量化交易系统要比DM中的模型复杂很多,参数的分布区域也是随时间变化的一个函数,WFA并不能非常有效的避免过拟合 和选出合理参数区间。 anyway,WFA作为参数鲁棒性的辅助测试方法工具还是可以使用。 在最后交易层面,在最终确定实际交易参数(组)时,可能可能好多团队或Quant会选择那些所谓的“参数平原”,来避免“参数孤岛”。比如下面的参数分布的某些区域。 但实际上这种方式也是有指的商榷和思考的地方,我做过相关测试,如果把时间参数看出自变量,把参数的稳定区域看出因变量,你会发现:不同模型的参数稳定区域会随着时间的变化发生迁移,即那些我们曾笃信的参数稳定区域会随着市场节奏和市场参与主体的变化而变化,那些在过往测试中稳定的区域,未来也非常有可能变得极其不稳定。 或者换句话说,如果你的目标函数不是个稳态函数,你找到的参数分布区域也不一定是稳态的,那么什么样的目标函数是稳态函数呢?理论层面可以根据泛函分析进行相关的分析和验证,但在实战层面这个没有定论,哪怕是看起来很好的sharpe ratio指标。 那么到最后在实战层面,参数的选择有可行且有效的解决方案吗?这个我也仍然在思考,我当下能给大家分享的解决方案是: 参数分散化、在盘子足够大的情况下尽量将参数打散,不要单纯笃信那些所谓的历史参数稳定区域。 2.关于参数优化的一些肤浅认识(by陈道民Chandeman) 一,关于参数问题 参数问题可以描述为:f(M,S,P)=Output ,即对于M(或者是品种及品种组合),使用S交易策略(或组合),采用P参数(或组合),得到output输出(包括收益、胜率、盈利因子等等)。由于M是历史数据,S是你所使用的交易策略,那么在给定的M和S下,output就依赖于P的输入。在此基础上,那么过度拟合就表现为,f(Mi,S,P)=f(Mj,S,P)+e ,即在给定的策略S和最优化参数P下,不同的M(对于同一个市场或同一个品种,Mi 和Mj 我们也可以理解为训练集合测试集。 )有不同的output,并且其误差 e 趋于正无穷或超过我们可接受的范围。 二,关于模式问题 讨论参数优化问题,其实可以在一定程度上理解为希望在给定的S和P下,在不同的M下测试得到的output具有一致性,即把M给常数化。我们的解决方法是把M给抽象掉,引进模式识别,从而跳出M的视野,找到不同M的共性,然后从pattern的角度来考量参数优化的问题,即f(S,P;pattern(i))=output 。这样一个好的策略S或者参数P在不同的pattern中所得到的output应该是相对稳定的(或者至少在有利的pattern中表现出色,在不利的pattern其风险(最大资金回撤深度和长度)应该是在我们的控制范围之内的,并且基于历史统计的有利pattern发生的概率要显著大于不利的pattern发生的概率),我们可以用标准差std(output(i)) (实际中,我们往往只需要output中的某些信息而已,例如收益、盈利因子或者最大资金回撤等等)来描述其稳定性程度。因此,参数的寻优就表示为在参数Pj下,Min(std(output(i,j))) 。 我们在实际中往往需要对原始样本进行随机化处理,然后进行大量的模拟和比较。 这时我们还需要关注ei,sum(ei)应该落在我们可接受的范围之内,并且奇异的ei越少越好。 当然在实际操作当中,有很多细节需要处理: (1)如何定义pattern,这个依赖于各自的交易理念、规则和交易级别等等; (2)如何识别你定义的pattern,大家需要去看看神经网络算法和模式识别方面的东西,强烈建议看看faruto在MATLAB论坛录的一个关于SVM神经网络的视频(好像是09年录的,当时我还在念高中啊...); (3)行情的随机化处理,可以参考一下钱德的超越技术分析一书当中介绍的几种方法;三,一些问题的初步回答 1.有没有最完美的参数寻优方式?有没有最完美的参数选择方式? 我们使用的参数寻优和选择的方式,是基于pattern比较下的寻优和选择方式,当然这种方法也不尽完善,还有很多问题,就当作是一种交流吧。 2.参数寻优时对于不同的时间周期,多长的回测数据具有说服力? 我们并不关心回测样本的大小,而更关心样本所包含的pattern的数量,一个能够在更多的pattern中存活的参数或者策略,我们更放心去使用它,因为它可以适应未来行情的变异,即pattern的转换。 3.对于整体样本,是否有必要区分样本内和样本外,若有必要,那么样本内和样本外的长度分别是多少合适? 我们一般并不直接从整体样本中划分训练集和测试集,而直接把原样本作为训练集,并将其随机化处理后的数据作为测试集,我们可以随机构造巨量的行情数据。 4.如何避免过度优化? 这个问题我觉得要先对过度优化进行定义噢,一般情况下把训练集的测试结果和测试集的测试结果不一致认为是一种过度优化的结果。但我们的作法是在pattern条件下考虑两者是否一致。举个例子说,如果某个策略S对某一类的行情有很好的表现,但也有它的软肋时,那么当样本内和样本外的pattern不一致时,很可能它的最优参数的差异可能很大。这时的结果不一定是过度拟合的结果,只不过是遇上不利的行情而已,当然这个问题不仅仅是个参数优化的问题,还是个策略设计的问题。 5.给出不同参数下的资金曲线,选取什么目标函数来进行参数选择?为什么选择该种目标函数,是否有更加有效的目标函数? 这应该是个参数优化目标的选择问题,我们一般用的主要评价指标是Min(MaxDrowDownDuration),当然也可以给定一定限制条件,例如盈利因子大于2,等等。 6.给定目标函数的情况下,如何选取最稳定的参数(参数区间),选定参数的过程能否量化? 我们往往是直接选择最优的那一个,当然这个与我们的事前的参数控制工作有关。 7.外推时,参数表现不好怎么办?再重新改进参数、调整策略? (1)不改变参数下,重新校验前面的pattern的识别 (2)在(1)校验后如果效果仍然不行,则对参数重新调整 (3)前面工作仍然无法奏效时,需要对策略进行修改 (4)来论坛抛砖引玉,学习别人的思想和方法 8.有没有不依靠参数的策略?或参数自适应的策略?可否实战?靠谱否? 其实不依赖参数的策略不一定好吧,一个策略的生命和灵活性就体现在参数的调整过程中,当然这也涉及策略类型的相互转换问题,一下子讲不清楚,建议看一下Browm的Technical Analysis For the Trading Professional一书,好像有中文版的。 责任编辑:张文慧 |
【免责声明】本文仅代表作者本人观点,与本网站无关。本网站对文中陈述、观点判断保持中立,不对所包含内容的准确性、可靠性或完整性提供任何明示或暗示的保证。请读者仅作参考,并请自行承担全部责任。
本网站凡是注明“来源:七禾网”的文章均为七禾网 www.7hcn.com版权所有,相关网站或媒体若要转载须经七禾网同意0571-88212938,并注明出处。若本网站相关内容涉及到其他媒体或公司的版权,请联系0571-88212938,我们将及时调整或删除。
七禾研究中心负责人:刘健伟/翁建平
电话:0571-88212938
Email:57124514@qq.com
七禾科技中心负责人:李贺/相升澳
电话:15068166275
Email:1573338006@qq.com
七禾产业中心负责人:果圆/王婷
电话:18258198313
七禾研究员:唐正璐/李烨
电话:0571-88212938
Email:7hcn@163.com
七禾财富管理中心
电话:13732204374(微信同号)
电话:18657157586(微信同号)
七禾网 | 沈良宏观 | 七禾调研 | 价值投资君 | 七禾网APP安卓&鸿蒙 | 七禾网APP苹果 | 七禾网投顾平台 | 傅海棠自媒体 | 沈良自媒体 |
© 七禾网 浙ICP备09012462号-1 浙公网安备 33010802010119号 增值电信业务经营许可证[浙B2-20110481] 广播电视节目制作经营许可证[浙字第05637号]