河北稳升软件科技有限公司量化云如何解决在程序化交易中参数优化的问题程序化交易的书籍在市面上层出不穷,大多数打算进行程序化交易的朋友都会去阅读一两本或者更多。我敢肯定通过阅读大家会发现,这些书里面每一本都会提到交易模型的参数优化的问题。这是由于现代的计算机处理技术发展的同时也带来了一些困惑,程序化交易可以说是建立在计算机和通讯技术的基础之上的一种交易手段,如果没有这些基础设施,那么程序化交易也就不能存在。正是有了可以高速运行的CPU才使我们可以对参数进行优化。光凭技术手段并不足以解决所有交易的问题,这就是为什么说交易是一门艺术之所在,而我们使用机械的交易方法是为了尽可能的避免人为的判断和情绪对交易的不良影响,在我们没有形成自己的一套交易体系之前通过机械的方法来进行交易无疑可以少走很多弯路,把时间和金钱留给我们用来积累更多的经验,让我们首先确保在市场中生存,再去追求如何使交易变成艺术。因此作为一个力求以科学和规律的方法解决交易的问题的人,我试图通过本文来解决大家在程序化交易中参数优化这个矛盾的问题。什么是参数优化在这里首先我们介绍一下什么是参数优化,以便一些刚刚接触程序化交易的朋友阅读本文,已经了解这方面知识的朋友可以掠过本段。对于一些模型来说会有一些参数,这些参数设置的主要含义可能是为模型提供一个周期,举个例子来说象n日均线上穿N日均线(n为短周期均线参数,N为长周期均线参数,一般短周期的移动平均要比长周期的变化要快,所以我们通过这两个不同周期的均线来制定交易计划),n和N参数的意义就是指定周期,一般来说参数的意义都与时间有关系(周期),但也有其他的用途。参数优化实际上就是利用计算机的处理能河北稳升软件科技有限公司量化云力对参数的各个值进行一次测试,找到盈利最大的那次值,如上面函数的n和N,我们利用系统的参数优化功能就可以把n(1~10),N(10~30)都测试一遍,找到最好的那个值。参数优化的基本矛盾参数优化的基本矛盾在于,我们选取出的最优的参数数值只是在我们历史数据上成立的,就是说我们是往回看用这个或这组参数能够获得最大的收益,但行情的发展却是无法完全预料的,我们可以找到历史上表现最好的参数,但是这个参数未必在未来是最好的。因为每种系统设置参数的用意不同,更有甚者可能历史上最好的参数在未来可能就是一组很糟糕的参数。比如一个参数的设置刚好让你抓住了一波大行情,在参数优化取到这样的值时很有可能对未来没有任何帮助。当然有些参数优化是由于减少了平均的亏损率使你的系统的效果更好,这种参数优化可能对未来会有一定意义,但也不是绝对的,因为行情的发展有其不可预知的一方面。所以参数优化的基本矛盾在于历史统计结果和行情未来发展之间的矛盾。我写本文的主要目的就是为了在这样的问题面前,我们该如何处理,如何辩证的看待参数优化带来的利与弊,更重要的是提供一个方法让大家面对参数优化的时候知道该怎么办。统计研究为了研究这个问题,首先我对我自己使用的一个很成熟的模型的各个参数值进行了测试,并把一些关键的数据如收益率,交易次数进行了统计。首先介绍一下我的交易系统,我的交易系统是属于趋势跟随型的一个交易系统,跟所有趋势跟随型的交易系统有着同样的特点。就是趋势形成的时候进入头寸,当权益回吐一定程度的时候认为是是趋势结束了轧平头寸,胜率不高,但在趋势市中能够赚钱来弥补在盘整震荡市中必然要赔的钱。这个系统只有一个参数,其设置的目的是为了给系统中所使用的计算公式和河北稳升软件科技有限公司量化云技术指标提供周期。这里需要提到的一点是,很多人说模型最好不要设置参数,做好了模型应该把参数固定在模型内部不再改变,我对这个观点持有不同的看法,我认为市场总是在变化的,而我们使用模型就是为了抓住这种变化中的规律,当然这种规律也是会变的,我给我自己的模型留有一个参数就是为了调节这种变化,比如使用均线系统,这几年因为这个品种总是大起大落,那么我们使用短一点的周期就可以了。因为行情变化的总是比均线走的快,不会总触发平仓或者开仓条件,但是过了几年发现这个品种不是那么活跃了,那么我们就应该调整参数把周期调长一些,以适应市场。而不是以一刀切的观点认为没有参数就不再面对参数优化的问题了。这个观点之所以错误,是他看到了参数优化的矛盾,而没有意识到我们做交易的最根本目的是什么。我们做交易最根本的目的是在于获取利润,而不是逃避仅仅一个参数优化的问题。不过这里还需要提醒的是,参数固然要设置,但是不能设置过多,设置最多两个足矣,自己必须搞清楚设置这个参数的意义是什么。参数设置过多一方面代表的是你的交易思想的不成熟,因为成熟的交易思想是抓住市场中本质的东西,而本质的东西并不需要太多的变量来对其进行描述;另一方面,过多的参数等于说给程序更大的灵活性,以适应更多情况的行情,但你在选择参数的时候会面对更大的困惑,因为多参数的模型经优化后的一组参数值很有可能是让你灵活的系统最符合历史行情的情况,这就是所谓的“参数拟合”。下面我提供一个通过统计我的模型参数从1到120各个值的时候,盈利和交易次数的图表。为了保持数据来源的一致性,这里我们将这些值都在豆粕主力(由文华系统提供的主力连续数据)2003年9月19日到2008年9月19日这段时间进行测试(测试系统为文华mytrader2008)。我们可以发现图1和图3两条曲线非常的相似,我们可以通过回归分析计算出河北稳升软件科技有限公司量化云你的交易系统的这条关系曲线,但是其实没有多大的必要。这里主要说说为什么会形成这样形状的一条曲线。首先我们使用的系统是趋势跟随型的系统,我们设定的参数的含义是周期的长短,当我们选取的参数较小的时候,系统中使用的周期(如移动平均)较短,所以系统也较为灵敏产生的信号也就多,当参数较大的时候,系统中使用的周期较长,所以系统所产生的信号也少。当系统在周期较短比较敏感的时候,每调增一些周期所降低的交易次数,要大于在周期较长的时候。这就是为什么这条曲线是这样的原因。之所以我做了参数与交易次数关系统计,一方面是因为这是我们选取系统的一个参照,因为交易次数多所带来的交易费用也就多,有些人的性格希望系统能多提供一些信号,有些人希望系统的信号不要太多;另一方面我发现绝大多数参数为时间周期的趋势跟随系统的交易次数与参数之间的关系都符合这样的一个规律,所以大家以后在对自己系统进行研究的时候就不用统计交易次数了,节省了大家的时间。大家只用知道这种以时间周期为参数的趋势跟随系统的交易次数会随着参数增加而减小,而且在参数比较小的时候减少幅度大,参数比较大的时候减少幅度小,当你在在考虑选取交易次数大的参数还是交易次数小的参数的时候就只用比较这两个参数的大小就知道他们交易次数上的变化了。接下来通过观察图2我们发现,参数值使模型能够盈利的情况大多集中在一段连续的参数范围内,如我的这个系统的在3~14之间,82~95之间,最优的参数是11(见图2)。我们管这些能够使模型盈利并且连续的参数值所构成的一段区间叫做参数有效域,对于豆粕过去5年的数据来说我们模型的参数有效域是3~14,82~95。一般来说总是会有一段连续的参数构成有效域,这是由于有效的系统是必须能够抓住某个特定市场的本质特性,而这个特性是一个比较稳定的状态,不是经常发生变化的。而如果出现参数设为3能盈利,4就是亏损,5又能盈利,6就得亏损……这样的情况,要么说河北稳升软件科技有限公司量化云明市场不稳定,要么就更加可能是你的系统有问题。我们定义了参数有效域了之后,下面就要来解决最重要的问题,如何选择参数,如何对待最优化的参数。通过我上面的统计我们发现11是这个系统在豆粕过去5年中最优的参数,那么,现在的问题就是11这个最优的参数我们到底可不可以用呢?我们观察发现11是在我们的参数有效域中的,这说明如果我们选择11作为我们的参数,虽然以后11可能不是能够使我们获得最大收益的参数,但是至少它肯定还是会落到参数有效域中间的。因为参数有效域代表的是这个系统是如何抓住某一个特定市场的特性的,而市场的特性变动是需要很长的时间,相对稳定的,所以对于一个模型的参数有效域来说也是相对稳定的,不会说今年我们模型测试的参数有效域是10~20,明年就会变成20~30了,即使变动,其变化幅度也不会很大,可能象今年参数有效域是10~20,明年可能是9~19。参数有效域代表的是这个模型对这个市场盈利概率的分布的把握,跟这个市场的本身属性有关,它只会随着市场本身属性的变动而变动。所以这就是说参数有效域中的参数是这个市场的普遍特性的代表。所以我们可以选取11为参数,因为即使其不能在以后是最优的参数,这个是我们决定不了的问题,但11在参数有效域中的事实也证明其还是一个能够抓住这个市场规律能够带来利润的参数。我们选取11可以即享受它成为未来最优参数的很大可能性,又不至于因为设置个别参数可能导致的系统亏损的情况,因为我们知道在这个区间中的参数值大部分都可以抓住市场的主要脉搏,而市场要变化是很漫长的过程,我们有充足的时间去反应这个变化,当然这是在你意识到程序化交易并不是一劳永逸的时候。假如说上面我们测试的结果最优的参数值不是11而是23的话,那么我们就不能选取这个值,可以把这个值作为一个偶然,刚好参数为某个值的时候使系统抓住了几次行情,而不具有普遍意义。对于这种不在参数有效域中的最优化的结果,我们坚决不河北稳升软件科技有限公司量化云能选取。另外在有效域边界的最优化结果也不能选取,如上面有效域是3~14,如果14是最优值,我们也尽可能的不选择它,因为参数值抓住市场规律的过程也是逐渐增加到达最佳再慢慢减小到亏损的过程,在有效域两边的盈利状况应该小于在中间的那些参数值。如果出现了在参数有效值边界的最优参数,很有可能也是因为刚好抓住了过去的几次大行情,在选用的时候除非你确定知道它的意义,否则还是选择次优的在参数有效值中间的那些参数比较可靠。总结以上就是我根据实践和研究发现的关于参数优化的以及该如何处理参数优化普遍性与偶然矛盾的方法,还有很多问题有待于进一步研究和推敲,欢迎有想法的朋友来跟我切磋交流,或者指正本文中的不足之处。总结一下本文,参数优化并不是一无是处,正确的用好参数优化可以给你带来额外的收益,并且可以让你更加了解市场的本质把握市场本质的变化。在趋势跟随型模型中如果参数代表的是周期长短,那么参数与交易次数的关系为反比例关系,即参数值增大交易次数减少,并且在参数较小的时候,参数变化所引起的交易次数变化幅度要比参数较大时候要大。我们在决定是否选取最优参数之前,先应该确定参数有效域,哪些连续在一起的参数都能够盈利,有效域才是代表的是市场的本质特性的标志。之后我们再看最优的那个参数是否在有效域中,如果不在那么应该果断舍弃,如果在有效域的边界,那么根据情况考虑,如果在有效域中那么可以选用。