4.为什么你回测没用(1)

投资的一大误区是认为只要通过机械化复盘或者回测然后找到最优的参数和规则就能找到最优的投资方法。事实上这也是很多"量化投资培训"所教的东西,通过回测来寻找最优的投资思路。很可惜,在网上传授这样的回测研究方法错的离谱,原因可以理解为p-value hacking

那么,什么是p-value hacking呢?我们先通过一个例子来讲讲什么是p-value:假设我们有一个人口数据分布,比如我们相信正常人分布都是在170cm左右,然后比170矮的人或者高的人的比例会随着离170cm越远从而越来越少。这个分布的形状,也许,我们可以通过一个钟型曲线的正态分布来描述,即用一个参数模型(parametric model)来表述人口的分布。这时,如果有个小A给我们一个关于人口的抽样数据中出现一个身高390cm的数据,那么这个数据,在我们假设的参数分布中出现的概率是多少呢?这其实就是390cm这个数据在已知模型下观测到的概率。

p-value is a measure of the probability that an observed difference could have occurred just by random chance.

好的,我们现在了解到了p-value就是在假设分布(或者说叫原假设)下的数据观测概率,那什么是p-value hacking?

要说明清楚p-value hacking。就还要搞清楚回测到底是在做什么。回测看起来只是在顺着一个个时间点模拟一个交易决策的流程,然后根据某些标准或统计量(比如平均盈利能力)来优化参数或者规则。我们可以通过 f_1(data) = \mu 表示我们以上做的事情:把数据(data)丢给交易规则( f_1 )映射到某个统计量( \mu )。为了简单起见,我们可以姑且认为此处统计量( \mu )就是平均盈利能力。

那么我们在跑完回测后做的事是什么?我们想检查统计量( \mu )即平均盈利能力和0相比是否远大于0,即是否有统计显著。而这个过程等价于我们对数据做了一次测试(test):我们假设f(data) = 0 ,然后通过跑出来结果看是否拒绝这个假设。即通过观察p-value是否足够小,来决定是否拒绝假设假设f(data) = 0

如果结果不好怎么办?按照有些课程里的方法,会让你修改交易规则成你喜爱的规则 f_2 ,然后再跑一次。完成这个过程,我们又做了一次测试……直到天荒地老测试了n次。

这时候你已经掉进了多重假设检验(multiple comparison problem, MCP)的陷阱:你完成的n次测试其实是同时在相同数据集上测试n个交易规则。这会导致什么问题呢?

1.我们产生了大量的假的发现(finding)。我们不妨假设调整的交易规则之间是独立的,且会偶然地产生假的平均盈利能力远大于0的统计量。即每次测试交易规则,我们都有错误地拒绝它的概率:即策略本身没有盈利能力,但是测试出来显示它有。如果这个概率是0.2,不犯错的概率0.8,那么跑回测20次,在独立的假设下,发现至少一个假策略的概率是98.85%。我们通过持续不断地根据数据调整我们的规则和参数,最终形成了大量的p-value非常小但是没有盈利能力的规则:这就叫p-value hacking。

对这个假阳性问题部分易懂描述可参考 :

蒟蒻王:0.常识:投资是一个需要连续检验的过程

2.那么我们究竟测的是什么呢?网上有些教程告诉你,测试n次找到最好的几个参数(即p-value最小的规则或者参数)然后上实盘。hopefully it may work。但是这个过程让我们找到的参数实际是最大统计量(max statistics)。那么,我们凭什么相信在训练集或者validation set上得到的 \hat{max \ \mu} 是测试集或者未来的行情上的平均收益的无偏估计呢?E_{test}[\hat{max \ \mu}] 凭什么能是平均收益的无偏估计?显然这是个过于乐观估计的统计量。

3.更糟糕的是,我们以上的说法中测试和测试之间是独立的,然而实际上很可能是存在依赖关系或者相关的。那我们有没有办法矫正呢?比较困难。比如BH or storey's procedure能处理比较弱的依赖关系(weak dependence),但是面对比较强依赖关系这些方法就直接失效了。还比如,outliers和相关性出现在predictor或/且label中这可能会导致我们的测试的power会迅速下降,即哪怕我们有些交易规则真的有能力,我们也很难发现它们存在。

takeaway notes:一般人真的不要花时间花钱写量化码。除非你是打算做这行那么先看论文,比如处理multiple comparison under dependence structure也都算近几年的学术前沿…总之量化投资真不是SQL boy或者CRUDer转行写几行代码就能做的事情。

来源:知乎 www.zhihu.com

作者:知乎用户(登录查看详情)

【知乎日报】千万用户的选择,做朋友圈里的新鲜事分享大牛。
点击下载