你的位置:首页 > 期货高手

统计假设检验在期货交易中的应用思考

2015/2/4 10:28:41      点击:
假设检验的基本思想:

假设检验的统计思想是:概率很小的事件在一次试验中可以认为基本上是不会发生的,即小概率原理。例如,某一事件出现的概率是0.001时,那么平均在1000次重复试验中可能才出现一次。因此,概率很小的事件在一次试验中几乎是不可能发生的,于是,我们把“小概率事件在一次试验中发生了”看成是不合理的现象。

为了检验一个假设是否成立,我们就先假定这个假设是成立的,如果根据这个假定导致了一个不合理的小概率事件发生,那就表明原来的假定是不正确的,我们就拒绝这个接受这个假设。如果由此没有导出不合理的现象,则不能拒绝接受这个假设。

这个小概率到底多小才算是不合理的小概率事件,一般统计学用的最多是0.05,也有更严格的用0.01的,也有宽松的用0.1的,这个可以试个人对于风险的偏好,风险偏好高的朋友可以用0.1的标准,这样的好处就是可以比较容易拒绝原假设,代价就是发生错误的几率也增大。风险偏好低的朋友可以用0.01的标准,这样的好处就是可以不易发生原假设被错误拒绝的情况,代价就是发生拒绝原假设的难度大大增加,可能会发生原假设实际上不成立但由于拒绝假设的标准过于严格导致无法拒绝原假设的情况。

实际应用举例:

上面说的很是抽象,下面我们说个具体的例子来看一下假设检验如何应用。

问题:一枚来历不明的硬币,据说硬币的某一面可能掺加进去了某种密度不同的杂质导致硬币两面的重量不一致,现在在不使用任何检验仪器的情况下,如何判断这个消息的真伪性?

统计学解决方案:反复的随机抛这枚硬币,统计其正面朝上和朝下的次数,通过此数字来判断。

具体步骤如下:
1.假设硬币没有问题,是标准的硬币,那么硬币随机抛后每次正面朝上和朝下的概率是各50%,多次随机的抛硬币n次后,正面朝上为m次的概率是可以计算出来的。具体而言,比如连续随机抛10次硬币,那么出现正面朝上的多少次的概率如下:
0次,概率为1/1024;
1次,概率为10/1024;
2次,概率为45/1024;
3次,概率为120/1024;
4次,概率为210/1024;
5次,概率为252/1024;
6次,概率为210/1024;
7次,概率为120/1024;
8次,概率为45/1024;
9次,概率为10/1024;
10次,概率为1/1024;

从以上数据可以看出,如果硬币是标准的,那么连续随机抛十次硬币后,正面向上的次数为{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次以上或2次以下才能拒绝标准硬币的假设,那么抛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是否发生时,一定是要随机抽样的。比如上面那个硬币的例子,如果不是随机抛硬币,而是由一个硬币抛掷高手来有认为控制硬币抛掷后的结果,那么得出来的结论对于硬币是否标准这一假设是没有参加价值的。为什么很多历史数据中表现很好的交易系统在后期的实盘时效果很差,很大一个原因就在于针对历史数据所设计的交易系统不符合抽样随机性。

交易应用示例:
写了这么多,还没有写到交易上,可能有些朋友急了。稍安勿躁,有了上面的基础,再来谈交易模型的假设检测,就很容易了。

先看一种最简单的交易模型,就是止盈和止损是同样比例的模型。比如西蒙斯曾经谈到过八十年代他们曾经靠一个很简单的模型赚过很多钱,就是跳空高开(或低开)后短时间内价格反向运动的概率很高,他们的交易策略就是高开后做空,低开后做多。现在我们来根据这个思路尝试做一个交易模型:跳空高开(或低开)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的显著性水平下在训练数据、盲测数据甚至是新的实盘交易数据上全部拒绝无效假设,也不代表这个模型一定是永远有效的。一方面,这是由于这种将低概率事件近视为“不可能事件”的假设检验方式决定的。另一方面,也是很重要的一方面,就是可能随着时间的变迁,市场本质特征发生变化了,你这个模型背后所体现的那个影响市场的因素发生变化了。

说到模型背后所体现的因素,我展开多说一点。近几日和小鱼在微博上讨论了概率是否在金融市场上可以运用和市场是否可以预测的问题。否认市场可以预测的一个很有力的论据就是影响市场走势的因素千千万,交易者根本无法一一识别这些因素,更加难以识别这些因素中每个因素的权重影响,故无法预测。那么,有没有可能存在这样一种情况,就是我无法直接知道是哪些因素影响了市场,但是我可以间接的通过一种方式预测市场会以什么样的概率运动。我先说统计学上一个有趣的例子。

在美国的中西部的一个小镇上,人们发现一个很有趣的不合逻辑的现象,就是冰激淋的消费量越高,犯罪率越高。这个具体的两个变量间的线性相关程度统计学里面是有专门的公式的。总之,就是经过统计发现,犯罪率的高低与冰激淋的消费量存在强的正相关,即冰激淋销量高时犯罪率高,冰激淋销量低时犯罪率低。

现在两个问题:1.冰激淋销量是否可以预测犯罪率;2.如果人为控制改变冰激淋销量,是否可以改变犯罪率。

对于第2个问题,我想任何一个有生活常识的人都会知道,犯罪率与冰激淋销量完全无关,人为改变冰激淋销量并不能改变犯罪率。对于第1个问题,就会比较困惑了。因为常识告诉我们,冰激淋与犯罪无关,但是统计学的数据又表明二者是正相关,那么到底是什么原因呢?慢慢的,人们终于想到了天气这一共同因素。冰激淋的销量与天气紧密相关,天气越热销量越高,同时,天气越热,人越容易在室外活动,越容易开窗(导致偷盗概率增加),女性越容易穿着暴露(导致性犯罪增加),人的心情也越烦躁(导致冲动型犯罪增加)。于是,我们知道了,因为天气这一共同因素,只要没有人为的刻意影响冰激淋的消费量,冰激凌的消费量是可以预测犯罪率的。其实,只要我们没有人为的刻意影响冰激淋的消费量,即使我们不知道是因为天气这一共同因素,我们也可以用冰激淋销量来预测犯罪率。

现在说回到交易。假如,有这样一个量化模型,无论是在训练数据上还是盲测数据上还是在新的实盘交易数据上,均可以在0.05的显著下拒绝模型无效的假设,那么,我们有必要认为,在95以上的概率上,这个量化模型背后存在一种共同的影响因子能够较大的影响市场的短期走势,尽管,这个影响因子到底是什么我们不知道,但只要这个因子在,这个量化模型就仍然有效。因为我们不知道这个因子是什么,所以我们更加不可能直接的发现这个因子是否已经变化了,我们仍然只能通过这个量化模型的之后的表现来间接预测。如果量化模型一直在0.05的显著下拒绝无效的假设,那么可以认为这个因子仍然存在,如果无法拒绝了,则可以认为这个因子可能消失了或者至少没以前那么重要了

通过上段分析,可以看出时间对于模型有效性的重要性。我想这也是高频交易开始流行一个很重要的原因。因为高频交易的模型,训练和盲测所需要的时间周期很短,那么模型背后的那个影响因素仍然存在的概率很高,而低频交易,训练和盲测所需要的时间可能需要半年甚至更长时间,很可能那个影响因素已经变化了。

不知不觉,写了这么多了,回头看,尽管为了这篇文章做了几天的准备,以至于这几天梦里都是概率的事,仍然写的非常混乱,有看不明白的朋友请留言我会一一解释。我本人并不是数学专业的,对于概率也仅仅是个人的片面理解,概率如何应用到金融交易中,目前市面上的书几乎没有,我是一本都没有找到,以上所写全部为个人的一次尝试,肯定有不少错误的地方,欢迎大家猛拍。