本篇文章给大家谈谈期货交易模型测试,以及期货交易策略测试对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
可以在程序化模型测试结果中减去滑点因素的影响,设定比例是比较主观的。
假设检验的基本思想:
假设检验的统计思想是:概率很小的事件在一次试验中可以认为基本上是不会发生的,即小概率原理。例如,某一事件出现的概率是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的显著下拒绝无效的假设,那么可以认为这个因子仍然存在,如果无法拒绝了,则可以认为这个因子可能消失了或者至少没以前那么重要了
通过上段分析,可以看出时间对于模型有效性的重要性。我想这也是高频交易开始流行一个很重要的原因。因为高频交易的模型,训练和盲测所需要的时间周期很短,那么模型背后的那个影响因素仍然存在的概率很高,而低频交易,训练和盲测所需要的时间可能需要半年甚至更长时间,很可能那个影响因素已经变化了。
不知不觉,写了这么多了,回头看,尽管为了这篇文章做了几天的准备,以至于这几天梦里都是概率的事,仍然写的非常混乱,有看不明白的朋友请留言我会一一解释。我本人并不是数学专业的,对于概率也仅仅是个人的片面理解,概率如何应用到金融交易中,现在市面上的书几乎没有,我是一本都没有找到,以上所写全部为个人的一次尝试,肯定有不少错误的地方,欢迎大家猛拍。
期货程序化交易模型,目前国内程序化软件有文华与TB,西部汇市官方提供专来的程序化交易模型下载与程序化交易模型策略设计:
趋势类-程序化交易模型,要求信号及时,具有防震荡能力,可减少横盘时资金的回辙。
日内-程序化交易模型,要求信号及时,具有仓位与资金管理功能,每日交易次数合理,能长期稳定盈利于期货市场。
我们在程序化短线交易模型的设计中采用:1,确立趋势。2,回调点开仓。3。自动建立追综止盈与止损。我们以这种交易理念,成功的收益于市场,有们有实盘交易账单。日内模型有16个月份的效果测试,这样的模型才能投入实盘,通常测试两个月份或交易次数没有过百,并说明不了该程序化交易模型的稳定性,更多教学内容可搜索-西部汇市官方网站,查看更多关于程序化交易的更多内容。
程序化模型的选择与辨别如果有人告诉你他的程序化能在不长的时间内,让你的资金翻几番,那你要为他的言语或者他的程序打个折扣,但是如果对方又能拿出不错的图形或者非常漂亮的收盘测试结果放在你的面前,你又当如何说服自己是相信还是不相信?以下内容就是帮助你如何辨别好坏模型.
1、测试时间:一个好的程序化必须经得起时间周期的测试,如果一个程序化,结果很漂亮,周期却只有一两个月,不可信;
2、使用资金:很多人贴出来的漂亮测试结果,使用资金常常是80%或者其它百分比,但这些都是不合理的选择,因为金融市场资金管理很重要,在行情好时候,资金使用越高,收益越大,行情不好时,资金使用越高亏损越大,但我们无法去判断接下来的行情会如何,所以,历史测试的结果使用百分比的开仓方式是不合理,这也就是为什么,有时候会出现,资金使用率为80%是,测试结果是亏损的,而且使用率为40%时又是赢利的.
3、测试方式:开盘价和收盘价测试均有其不合理性,趋势模型一般以趋势逆转点为开仓信号,故较为准确的是:出现指令价位。
测试结果的分析:
a. 指令总数:也就是信号数,过高,说明震荡行情过滤不好,过低,说明风险大;如何判断信号数合理呢?那就只有不同的模型在同样的周期下的一个对比了.还有一个最简单的方式就是将 指令总数/有效交易天数 以日内短线为例,一般一个有效交易日的平均信号数在2-5之间(此数据仅供参考);
b. 利润率:总利润不用看,只看扣出最大利润的结果,必须为正,而且测试周期越长利润率应该越大,很多模型,测近期不错,测远期就不行,所以测试时应该尽量的去测能测到的最长周期.(当然因为行情关系也可能出现,长期比短期利润率低,但总体而言,周期越长利润率越高,才是好的模型的测试结果)
c. 正确率:其它条件都完全一样的情况下,正确率越高自然越好,但也不用为了看到一个高正确率的模型而心动,也不用因为你自己模型的正确率低而担心,一般的正确率能在45%左右,就不错了,因为程序化的本来意义就是赚大亏小,在震荡的时候正确率自然会低;
d. 最大亏损率:如果你是选择的固定手数,比如10手进行测试,你的最大亏损率最大应该不能超过10%,当然,如果你选择的测试手数多,最大亏损率可能有所提高.如果你选择的80%的资金使用率,可能亏损会更大,当然也会有亏损的不大的测试结果,这往往和你的测试周期中的行情的一定关系,所以不值得过于依赖;
e. 空仓时间:以日短线为例,空仓时间不能太高,太高,必然会错过大行情,当然,这一项不是最重要的,如果你空仓时间长,利润也高,错过就错过吧,错过不是过错,没赚到也不存在亏损的风险;
没什么可以走的捷径。如果你想通过软件自动根据你的系统生成交易提示,包括头寸比例,就必须学会该软件的语言,没捷径可走。我认为比较简单的语言是博易大师的,你可以自己看看,软件里有帮助,涉及到一些基本的指标编写教程,你可以学一下简单的语言。再复杂的模型都是根据简单语言组合成的。如果你想逐步自动交易,不仅软件能代替你判断,还可以自动交易的话,可以用用文华财经一键通2009,有交易模型编写功能,你编写以后还可以根据历史数据进行测试。另外一个软件是交易开拓者,也具有模型编写测试功能,甚至比文华我觉得更专业。
当然最主要的是你要静下心来学习一下这些语言。学不进去就想想,学会了编程,你的程序能给你赚多少钱。你总不会和钱过不去吧?走捷径的下场往往都是不好的,即使你让别人给你编,人家给你编错了,你也看不出来。还是自己掌握为好,以后要完善系统也很方便。
这是我的经验。我就是有了一个想法以后,想测试一下,自然就去研究指标,模型编写了。
关于期货交易模型测试和期货交易策略测试的介绍到此就结束了,不知道你从中找到你需要的信息了吗 ?如果你还想了解更多这方面的信息,记得收藏关注本站。
版权声明:本文内容由互联网用户自发贡献,本站不拥有所有权,不承担相关法律责任。如果发现本站有涉嫌抄袭的内容,欢迎发送邮件至举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。
标签: #期货交易模型测试
相关文章