顺便给个我用来判断结果是否过好的检测手段。鉴于我的交易策略跨度比较大,因此需要一个适用性广泛的手段,我的做法是用期望为 0 的正态分布模拟资产回报率,首先使用历史数据估计出标准差,然后模拟 n 段测试期等长的回报序列,从而得到 n 个交易策略盈亏结果,如果实测结果在这 n 个结果的尾部两端,就说明结果过好或过坏。这是单资产的交易策略,如果是多资产,融合相应的组合流程即可。当然也存在一些变种,例如求得概率结果而非直观的盈亏结果等进行判断。不过本人大部分时间都不会做的那么详细,受打击的次数多了,稍微看看都知道是不是有问题了。
4. 过拟合。先给定义,来自百度百科:为了得到一致假设而使假设变得过度复杂称为过拟合。想像某种学习算法产生了一个过拟合的分类器,这个分类器能够百分之百的正确分类样本数据(即再拿样本中的文档来给它,它绝对不会分错),但也就为了能够对样本完全正确的分类,使得它的构造如此精细复杂,规则如此严格,以至于任何与样本数据稍有不同的文档它全都认为不属于这个类别。标准定义:给定一个假设空间 H ,一个假设 h 属于 H ,如果存在其他的假设 h’ 属于 H, 使得在训练样例上 h 的错误率比 h’ 小,但在整个实例分布上 h’ 比 h 的错误率小,那么就说假设 h 过度拟合训练数据。 ---- 《 Machine Learning 》 Tom M.Mitchell好吧,数据挖掘的人写的东西,看来国内搞金融的人都高端大气不愿意用百科,有空我把wiki的英文翻译过来好了。针对量化交易的小方向来说,就是说交易策略中参数用多了、或者交易流程设置过于复杂了,导致交易策略过度提取了样本数据中的某些显性信息,而误读了整体数据中的真实信息。如果你有较好的统计基础或者计量基础,你应该明白过拟合的含义,学界为了R方和结果显著性不顾一切乱来的太多了,负面例子不胜枚举,如果不太理解请补课。
5. 泛化能力。与 “ 过拟合 ” 关系密切,在绝大部分情况下就是 “ 过拟合 ” 问题导致的结果,不过含义是截然不同的,且存在例外,因此单列出来。最出名的例外就是现在红火到爆的 Deep Learning 了,实际上就是隐层数增加的人工神经网络,所以亦称 Deep Neural Network ,虽然由于隐层的问题,参数一度多到无法正确估计,但是有了 Autoencoder 之类的处理方法之后屌丝逆袭杀掉了 SVM 。最近去百度的吴恩达就是这方面的专家,更不用提 Hinton 他老人家, Google 的科技吉祥物好嘛。扯远了,回来,下面的定义来自百度百科:概括地说,所谓泛化能力(generalization ability)是指机器学习算法对新鲜样本的适应能力。学习的目的是学到隐含在数据对背后的规律,对具有同一规律的学习集以外的数据,经过训练的网络也能给出合适的输出,该能力称为泛化能力。好吧,这还是搞数据挖掘的人写的东西。用我们这个方向上更易理解的话说就是:样本内的数据的某些特征规律,在样本外的数据中也存在,这种特征可以提取出具有盈利能力的交易策略。因此,这种存在性越强、或者说样本外盈利能力越强,泛化能力就越强。在我个人的交易哲学中,已知数据全部都是样本内数据,人为划分样本内外的做法是学术术语,有可能会产生自欺欺人的后果。个人看法,仅供参考,而且为了交流方便我仍然会在下面使用这种学术说法。为了将这种泛化能力的欺骗性尽量降低,我的做法是在某一段样本期内划分样本内外,然后将这段样本期作为样本内,在另一段时期做样本外检验,依此迭代,能做几层做几层。抱歉我暂时没法把这个流程说清楚,有灵感了我来改答案。但是确实很有效,一般做两层,大部分好策略就不好了,根本不用实盘浪费时间浪费钱。泛化能力是量化交易盈利的灵魂 ,涉及到哲学和技术两个层面。有空我会增加这部分的内容。