统计假设检验指的是证明或者推翻关于一定客体、现象以及过程所研究特征的统计上相互联系假说的一种程序。统计假设则是关于总体属性的假设,这一假设可以按照抽样观察资料加以检验。受到检验的该假设就是关于统计上相互联系的和特征值分布的假设。
1.假设检验的基本思想
什么是假设检验的统计思想?它就是概率极小的事件在一次试验中能够认为基本上是不会出现的,又被称为小概率原理。比如,某一事件发生的概率为0.001的时候,则平均在1000次重复试验中才可能发生一次。所以。概率极小的事件在一次试验中几乎是不可能出现的,因此我们将“小概率事件在一次试验中出现了”当作是不合理的现象。
为了检验这一个假设能否成立,我们首先来假定这个假设是成立的,若按照这个假定引起了一个不合理的小概率事件出现,则就证明原先的假定是不正确的,我们就不要接受这个假设。若由此没有导出不合理的现象,那么就要接受这个假设。
这个小概率究竟是多小才算是不合理的小概率事件,通常统计学运用得最多为0.05,还有更严格的运用为0.01,甚至有宽松的运用为0.1,这个能够试出个人对于风险的偏好,风险偏好高的人可以运用0.1的标准,如此的好处就是比较容易拒绝原假设,代价则是出现错误的概率也增大。风险偏好低的人可以运用0.01的标准,如此的好处就是可以不易发生原假设被错误拒绝的情况,代价则是发生拒绝原假设的难度大大增加,可能会造成原假设实际上不成立但是由于拒绝假设的标准过于严格导致无法拒绝原假设的情况。
2.实际应用举例
上面所叙述的是比较抽象的,我们运用具体的例子来说明假设验如何应用。
假设一枚来历不明的金币,据说金币的某一面可能掺入了某种密度不同的杂质造成金币两面的重量不一致,目前在不运用任何检验仪器的情况下,那么如何对这个消息的真伪性进行判断?
运用统计学来解决方案是:反复地随机抛这枚金币,统计它正面向上和向下的次数,通过这些数字来判断。
主要有这些步骤。
(1)如果金币没有问题,是标准的金币,则金币随机抛后每次正面向上和向下的概率是各50%,多次随机的抛金币n次之后,正面向上为m次的概率是能够计算出来的。具体来说,比如接连随机抛10次金币,那么出现正面向上的多少次的概率如下:
从上面数据能够看出,若金币是标准的。那么接连随机抛10次金币后,正面向七的次数是{0,1,9,10}集合中的某一个数字的概率都低于5%(0.05)。假如我们选取0.05的显著性检验标准,则若连续抛10次金币后金币正面向上的次数是{0,1,9,10}集合中的某一个数字,则我们可以说在0.05的显著性水平下,这枚金币是标准硬币的假设不成立。
(2)接连不断抛10次这枚金币,观察它的正面向上的次数,若它的次数是{2,3,4,5,6,7,8}集合中的某个数字,那么我们无法拒绝标准金币这一假设。若它的次数为{0,1,9,10}集合中的某个数字,则我们能够说在0.05的显著性水平下,这枚金币是标准硬币的假设是不成立的。
上面所说就是假设检验的基本流程。
接下来再说说样本数对于假设检验的影响。抛10次金币应该得出8次以上或者两次以下才能拒绝标准金币的假设,则抛100次金币是不是应该得出80次以上或是20次以下才可以呢?并不是这样的。下面是用分布表计算出来的数据。
20次的时候,15次以上或5次以下就能够拒绝假设。
50次的时候,32次以上或是18次以下就能够拒绝假设。
100次的时候,60次以上或是40次以下就能够拒绝假设。
1000次的时候,531次以上或是469次以下就能够拒绝假设。
由此可以看出,随机抽样的样本数越大,偏离均值的难度越高,也越容易做假设检验。假设抛一个金币10次,即使8次朝下仍无法拒绝金币是标准硬币这一假设,然而,抛100次,只要有60次就能够拒绝了。
假设检验的基本原理就是:若假设A成立,则事件B发生的概率低于5%(当然也可以用10%或是1%等标准)。实际随机抽样检测中B出现了,我们能够在0.05的显著性下认为假设A不成立。在实际应用中必须注意的是,一是样本越大,越容易验证条件A是否成立;二是观察事件B是否出现时,一定是要随机抽样的。比如上面那个金币的例子,若不是随机抛金币,而是由一个金币抛掷高手来认为控制金币抛掷之后的结果,则得出来的结论对于金币是否标准这一假设是没有参考价值的。为何许多历史数据中表现很好的交易系统在后期的实盘时效果很差,最大一个原因就在于针对历史数据所设计的交易系统不符合抽样随机性。
3.交易应用示例
根据上面的基础,再说一下交易模型的假设检测,就比较容易了。
首先来看一种最简单的交易模型。那是止盈和止损是同样比例的模型。比如西蒙斯曾谈到过20世纪80年代他依靠一个很简单的模型获得很多收益,这就是跳空高开(或者低开)后在短时间之内价格逆向运动的概率极高,西蒙斯的交易策略是在高开之后做空,在低开之后做多。我们可以按照这个思路尝试做一个交易模型:跳空高开(或低开)x%之后开盘进场做空(或者做多),获利或是亏损y%后就退出。为了方便讨论,我们先假如不存在滑点和手续费等问题,同时如果当天价格日内离开盘价的波动幅度一定会超过y%,即日内该笔交易必然会结束,要么是盈利y%之后退出,要么是亏损y%之后退出。这么简化之后,我们再拿这个与上面抛金币的例子进行比较,是否完全一样呢?
我们可以使用假设检验的方法来验证这个模型。假如这个交易模型是无效的,则交易盈利或者亏损Y%的概率应是各占50%(若亏损大于50%可以反向做的),与金币的例子中两种结果的概率完全相同。现在我们拿检验金币的思路来检验这个模型是不是无效的。我们可以用这个交易模型去到历史数据中进行测试,如果一共有50次交易记录,其中获利的次数达到了32次以上或是18次以下(这样情况就将模型反着写,即高开之后做多低开之后做空),那么,在5%的显著性下我们能够拒绝模型无效这一假设,该交易模型是有效的。
有人很可能会问,这个模型中的x与y这两个参数究竞取什么位呢?这则涉及模型训练的问题了。x与y具体取什么位比较合适,若不经过数据测试,则是很难知道的。通用的统计学方法(通信、搜索引擎等领域也是此方法)是,选择大量的训练数据,对模型各个参数加以测试,选取表现最佳的参数。具体到交易上则是选择足够多的历史数据,加以参数优化,并且综合考虑收益率、最大回撤以及稳定性等因素,选取相对最合适的。
这个最佳参数是非随机出现的,而不是人为训练选取的,这违背了我们在做金币检测时所强调的随机抽样。那么,如何验证该模型的有效性呢?统计学的方法就是拿该模型对新的数据(跟原有训练数据完全独立)进行测试,假如测试的结果依然拒绝模型无效这一假设,则我们能够认为模型在很大的概率上是有效的。具体到交易来说,就是将历史数据分为训练数据与盲测数据两部分,训练数据用来模型训练,假如在训练数据上训练好的拒绝无效假设的交易模型在盲测数据中依然表现为拒绝无效假设,则我们能够认为模型在很大的概率上有效。不过,还有更严格的方式就是,让模型继续在将来的新的数据上进行测试,假如表现依然很好。那么可以再考虑分配一定比例的资金开始实际运作。
在做程序化交易中我们往往会谈到模型的衰败。那么,运用什么标准来判断模型的衰败呢?大多数人认为:运用假设检验这个方法来检验。就是若你在不断的交易过程中你的后期的一系列交易数据已经很难拒绝交易模型无效这一假设了,则此时尽管你的交易摸型依然还是获利的,你也要小心了,至少必须降低仓位了。
这个高低开的日内交易模型是非常简单的一种模型,止盈、止损均是一个额度,各占50%的随机假设,这个直接套用金币的例子就行了。还有更复杂的,比如趋势交易模型,此模型由于其趋势交易迫求高盈亏比的理念,此模型的胜率是低于50%的,通常在35%左右,然而盈亏比可能高于3:1。这种模型就不同于金币的例子了,无法直接套用金币的计算结果,然而思路却是相同的。
必须注意如下事项。
(1)不能忘记。由于某些利益因素故意忘记抽样统计中的随机原则。概率法则有效的前提条件就是随机抽样。若人为影响样本的抽取过程甚至制造假的样本,那么样本对于总体的预测价值为0甚至是相反的。在进行模型测试的时候,一定要有训练数据和盲测数据,在训练数据上表现优异的模型应该在盲测数据上也能够足够优秀到可以拒绝模型无效的假设,才能够考虑将模型运用到实战中。
(2)必须牢记假设检验的原则。对于任何一个模型来说,在没有足够的数据证明该模型是有效前,则假设该模型是无效的。这则是量化交易的痛苦之处,量化交易者极易出现的情况是,花费太多时间,在训练数据上挖掘出了很多能够拒绝无效假设的交易模型,跑到盲测数据上进行逐一测试,都很难在0.05的显著性水平上拒绝模型无效的检验,于是心里很难受,感觉付出这么多时间的就浪费了。
(3)必须要有风险意识。尽管是在0.05的显著性水平下在训练数据、盲测数据甚至是新的实盘交易数据上全部拒绝无效假设,也不能够表明这个模型一定是永远有效的。一是这是由于这种把低概率事件近视为“不可能事件”的假设检验方式来决定的;二是可能随着时间的变化,市场本质特征发生改变,这个模型背后所体现的那个影响市场的因素也发生改变。