程序化交易的书籍在市面上层出不穷,大多数打算进行程序化交易的朋友都会去阅读一两本或者更多。我敢肯定通过阅读大家会发现,这些书里面每一本都会提到交易模型的参数优化的问题。这是由于现代的计算机处理技术发展的同时也带来了一些困惑,程序化交易可以说是建立在计算机和通讯技术的基础之上的一种交易手段,如果没有这些基础设施,那么程序化交易也就不能存在。正是有了可以高速运行的CPU才使我们可以对参数进行优化。光凭技术手段并不足以解决所有交易的问题,这就是为什么说交易是一门艺术之所在,而我们使用机械的交易方法是为了尽可能的避免人为的判断和情绪对交易的不良影响,在我们没有形成自己的一套交易体系之前通过机械的方法来进行交易无疑可以少走很多弯路,把时间和金钱留给我们用来积累更多的经验,让我们首先确保在市场中生存,再去追求如何使交易变成艺术。因此作为一个力求以科学和规律的方法解决交易的问题的人,我试图通过本文来解决大家在程序化交易中参数优化这个矛盾的问题。
什么是参数优化
在这里首先我们介绍一下什么是参数优化,以便一些刚刚接触程序化交易的朋友阅读本文,已经了解这方面知识的朋友可以掠过本段。
对于一些模型来说会有一些参数,这些参数设置的主要含义可能是为模型提供一个周期,举个例子来说象n日均线上穿N日均线(n为短周期均线参数,N为长周期均线参数,一般短周期的移动平均要比长周期的变化要快,所以我们通过这两个不同周期的均线来制定交易计划),n和N参数的意义就是指定周期,一般来说参数的意义都与时间有关系(周期),但也有其他的用途。参数优化实际上就是利用计算机的处理能力对参数的各个值进行一次测试,找到盈利最大的那次值,如上面函数的n和N,我们利用系统的参数优化功能就可以把n(1~10),N(10~30)都测试一遍,找到最好的那个值。
参数优化的基本矛盾
参数优化的基本矛盾在于,我们选取出的最优的参数数值只是在我们历史数据上成立的,就是说我们是往回看用这个或这组参数能够获得最大的收益,但行情的发展却是无法完全预料的,我们可以找到历史上表现最好的参数,但是这个参数未必在未来是最好的。因为每种系统设置参数的用意不同,更有甚者可能历史上最好的参数在未来可能就是一组很糟糕的参数。比如一个参数的设置刚好让你抓住了一波大行情,在参数优化取到这样的值时很有可能对未来没有任何帮助。当然有些参数优化是由于减少了平均的亏损率使你的系统的效果更好,这种参数优化可能对未来会有一定意义,但也不是绝对的,因为行情的发展有其不可预知的一方面。
所以参数优化的基本矛盾在于历史统计结果和行情未来发展之间的矛盾。我写本文的主要目的就是为了在这样的问题面前,我们该如何处理,如何辩证的看待参数优化带来的利与弊,更重要的是提供一个方法让大家面对参数优化的时候知道该怎么办。
统计研究
为了研究这个问题,首先我对我自己使用的一个很成熟的模型的各个参数值进行了测试,并把一些关键的数据如收益率,交易次数进行了统计。首先介绍一下我的交易系统,我的交易系统是属于趋势跟随型的一个交易系统,跟所有趋势跟随型的交易系统有着同样的特点。就是趋势形成的时候进入头寸,当权益回吐一定程度的时候认为是是趋势结束了轧平头寸,胜率不高,但在趋势市中能够赚钱来弥补在盘整震荡市中必然要赔的钱。这个系统只有一个参数,其设置的目的是为了给系统中所使用的计算公式和技术指标提供周期。
这里需要提到的一点是,很多人说模型最好不要设置参数,做好了模型应该把参数固定在模型内部不再改变,我对这个观点持有不同的看法,我认为市场总是在变化的,而我们使用模型就是为了抓住这种变化中的规律,当然这种规律也是会变的,我给我自己的模型留有一个参数就是为了调节这种变化,比如使用均线系统,这几年因为这个品种总是大起大落,那么我们使用短一点的周期就可以了。因为行情变化的总是比均线走的快,不会总触发平仓或者开仓条件,但是过了几年发现这个品种不是那么活跃了,那么我们就应该调整参数把周期调长一些,以适应市场。而不是以一刀切的观点认为没有参数就不再面对参数优化的问题了。这个观点之所以错误,是他看到了参数优化的矛盾,而没有意识到我们做交易的最根本目的是什么。我们做交易最根本的目的是在于获取利润,而不是逃避仅仅一个参数优化的问题。不过这里还需要提醒的是,参数固然要设置,但是不能设置过多,设置最多两个足矣,自己必须搞清楚设置这个参数的意义是什么。参数设置过多一方面代表的是你的交易思想的不成熟,因为成熟的交易思想是抓住市场中本质的东西,而本质的东西并不需要太多的变量来对其进行描述;另一方面,过多的参数等于说给程序更大的灵活性,以适应更多情况的行情,但你在选择参数的时候会面对更大的困惑,因为多参数的模型经优化后的一组参数值很有可能是让你灵活的系统最符合历史行情的情况,这就是所谓的“参数拟合”。
下面我提供一个通过统计我的模型参数从1到120各个值的时候,盈利和交易次数的图表。为了保持数据来源的一致性,这里我们将这些值都在豆粕主力,2003年9月19日到2008年9月19日这段时间进行测试.
首先我们对参数与交易次数的结果进行研究,我们发现随着参数的增大,交易次数在不断的减小,而且在参数还比较小的时候交易次数减少的幅度比较大,而参数变得很大的时候如50以上的时候交易次数减小的幅度就变得很小了。这个统计结果有点像数学中的反比例函数Y=C/X,C为常数。如图3