对程序化趋势交易系统的应用研究
程序化交易系统是透过电脑,将交易策略的逻辑与参数在电脑程序运算后,将交易策略系统化。当趋势确立时,发出多空讯号锁定市场中的价量模式,并且有效掌握价格变化的趋势,让投资人不论在上涨或下跌的市场行情中,能轻松抓住趋势波段,进而赚取波段获利。程序化交易的操作方式不求绩效第一、赚取夸张利润,只求长期稳健的获利,于市场中成长并达到财富累积的复利效果。经过长时期操作,年获利率可保持在一定水准之上。
一、程序化交易和交易系统的介绍
程序化交易(Program Trading)的定义有多种,较为市场化的定义是指根据一定的交易模型和规则生成买卖信号,由计算机自动执行买卖指令的交易过程。程序化交易的优点体现在交易效率高、有助于克服人性弱点、便于交易中的风险管理、能把握市场中的潜在机会等方面。国外程序化交易的应用领域非常广泛,主要有组合管理、套利交易、趋势交易及其他量化策略等。统计显示,程序化交易在纽交所交易量中占比一直稳定在30%左右,程序化交易是国际市场常用的交易方式。
程序化交易的前提是设计好系统交易的方法,并由计算机自动执行。交易系统即是对系统交易方法的描述,两者在本质上是一致的。国外有许多关于交易系统方面的书籍,如范·撒普(2001)的《通向金融王国的自由之路》中,对交易系统的设计理念和实现步骤展开讨论。佩里·考夫曼(2005)的《New Trading Systems and Methods》,探索将神经网络和模糊逻辑运用于交易系统中。国内关于交易系统的专著尚不多,其中波涛(1998)的《系统交易方法》公认为经典之作,书中完整地阐述了交易系统的理念和设计流程。马博(2008)在《从亏损到赢利》中记录了作者在投资实战中逐渐走向系统交易者的修炼过程。
根据波涛(1998)对交易系统的描述,交易系统是完整的交易规则体系。一套设计良好的交易系统,必须对投资决策的各个相关环节做出相应明确的规定,同时还必须符合使用者的心理特征、投资对象的统计特征以及投资资金的风险特征。一个交易系统的设计过程通常包括:交易策略的提出、交易对象的筛选、交易策略的系统化、交易系统的统计检验、交易系统的优化、交易系统的外推检验、交易系统的实战检验、交易系统的监测与维护。
交易系统是一套规则体系,而非仅仅是买卖点的判断,因而完善的交易系统应该包括稳健的交易策略设计、参数优化、动态的风险管理、下单管理等方面。著名的海龟交易法则是交易系统设计的典范,在海龟交易系统中,一个完整交易系统的基本构成包括:市场-买卖什么;头寸规模-买卖多少;入市-何时买卖;止损-何时退出亏损的头寸;止盈-何时退出赢利的头寸;策略-如何买卖。
二、运用和设计技术指标时应注重指标原理
技术分析的三大假设是市场行为反映一切、价格沿趋势变动、历史会重演。使用技术指标的基础正是基于技术分析的假设前提,是根据市场已反映的信息的统计规律或进行数据挖掘,设计相关的技术指标,在历史重演时来指导操作。
常用的传统技术指标有:MA移动平均线、MACD平滑异同移动平均线、BIAS乖离率、KDJ随机指标、CCI顺势指标、RSI相对强弱指标、W&R威廉指标、BOLL布林带等等。
除此之外,市场上的技术指标可谓五花八门、数不胜数,一些复杂的统计类模型,如马尔可夫链模型、ARIMA、灰色模型和神经网络等也被运用到汇价预测上来。
实际上,并没有十全十美的技术指标,在使用和设计技术指标时,必须先了解指标的设计原理及其适用范围,在使用时才能心中有数。
三、基于线性回归的趋势跟踪交易系统在外汇中的应用
在使用和设计技术指标时,必须了解其原理。类似地,在进行程序化交易时,交易策略的思想是核心。如按不同的交易策略思想可对交易方法大致分为:趋势跟踪、震荡交易、套利交易、日内短线和超短线交易、形态分析交易和波段交易等。
因此,基于不同交易思路设计的交易模型并不是普遍适用的。使用一个基于简单线性回归方程的技术指标来进行趋势跟踪交易,引用的技术指标代码如下:
买线:EMA(C,3);
卖线:EMA(SLOPE(C,21)*20+C,55);
该指标着重考虑了某些Fibonacci数列对应的周期数,如3、21、55周期行情的权重,引用一元线性回归直线方程的概念作为趋势的参考值,这一指标类似于趋势线的思想,只不过这里的趋势线根据21周期内不同的数据而一直变化,并且卖线是对上述预测值做了55个周期的指数移动平均。当买线上穿卖线时为买入信号,当买线下穿卖线为卖出信号。当日的趋势预测值为当日收盘价加上根据21周期拟合直线得出的上一交易周期的涨跌幅。
接下来,根据该技术指标确定的买卖点,来进行交易系统测试和程序化交易。这时需要使用支持交易系统测试的软件平台,还需要把技术指标改造成交易系统。这里我们选择金字塔决策交易系统软件进行测试。
四、上述交易系统存在的问题和改进
虽然从总体上升的累积收益率曲线和24倍的利润率来看,上述交易系统似乎表现不错。但从多角度评估上述交易系统时,会发现存在诸多问题。除了交易系统要保证最基本的正的利润率外,还有几项指标是需要关注的。如胜率、均盈利/均亏损、最大回撤等。一般情况下,较优秀的交易系统的收益曲线平滑且回撤小于20%,(均盈利/均亏损)*胜率接近或大于1,均盈利/均亏损大于2符合亏小盈大的交易原则。
单从数据上看,上述交易系统利润率较高,均盈利/均亏损较好。但胜率较低,最大连亏幅度和最大回撤都较大。并且,在实际程序化交易中,还有诸多细节需要注意。
1、参数选择。上述测试结果是根据历史数据,且在最优参数选择下的结果。如上述交易系统采用最糟糕的参数(5,60,0)设置,对应的利润率仅为58.16%。基于历史数据的最优参数(1,30,2)也并不一定适用于未来的交易数据。从累计收益曲线可以看出,历史最优参数在最近两个月的表现并不好,而如果只是测试期指上市至两个月前即2010/01/27的数据,则(均盈利/均亏损)*胜率的数值高达1.15。因此在实际操作中,需要结合交易系统的原理和行情特点,参照历史数据的表现,动态地调整适合的参数。
2、保证金。上述交易系统中采用满仓一次性进出是不合理的。在外汇交易中,在控制仓位的同时,还需要预留保证金以备保证金追加和弥补亏损。目前大多数的软件在测试交易系统时,没有考虑保证金不足被强行平仓的情况。如在初始保证金18%,持有期最大涨幅10%的情况下,空头持有者应持有20%以上的资金来弥补亏损和追加保证金。当出现最大回撤幅度时,若仓位较轻,则总资产的最大连亏损幅度会相应减少。因此,在交易系统中建仓的仓位需要控制,切忌满仓操作。
3、止损和资金管理。止损在成熟的交易系统中是不可或缺的元素,止损点位的判断方法有多种,最简单的是与开仓价相比,损失率达N%进行止损。另外,在趋势逐渐明朗时,采取分批建仓的策略也是较为稳健的操作,如海龟交易系统中根据波动幅度来确定分批建仓点。
4、滑点。滑点是指下单的点位和最后成交的点位的差额,造成滑点的原因可能是网络延迟,也可能是下单时行情波动剧烈,此时为了迅速成交,则限价指令中需要跳几个最小变动点来下单。如果交易次数过多,滑点产生的累加成本将会直接影响到最终利润率。
5、合约展期。上述交易测试的对象是外汇连续合约,交易策略也没有日内平仓。因此在主力合约移仓换月时,持有的头寸需要展期,具体的展期时点选择可根据历史价差的分布特性来确定。当然,也可以在交易系统中加入到平仓的指令,在新主力合约上市后再启用交易系统。
五、总结
为了使交易系统更贴近实际应用,对上述交易系统略做改进。首先,每次开仓的仓位控制在50%;考虑5个最小变动单位的滑点,即开多单时的价格加1个点,开空单时的价格减1个点;分别加入多头和空头止损的指令,当浮动亏损超过2%后进行平仓。
通过对比两次的测试报告可以发现,在控制仓位和加入止损指令后,虽然利润率大幅减少至275%,但最大回撤比下降到20%以内。考虑滑点因素后,胜率有所下降,利润率也受到影响。
从胜率和最近测试效果来看,上述交易系统表现一般。但通过交易系统的测试可以得出如下结论:交易思路或交易策略的原理是程序化交易的关键,胜率低的交易系统不一定收益率低,尤其是趋势类的跟踪系统。
交易系统中的参数设置直接影响到最终盈利水平,因为没有任何一组参数适合所有的交易品种和时间周期,因此参数需要根据市场变化而加以修正。另外,在程序化交易中,需要与风险管理和资金管理相互结合,才能达到风险与收益的平衡。
最后,程序化交易只是交易的辅助手段,投资者才是交易的主体,投资者应加深对市场和自身的了解,才能找到适合自己的制胜法宝。
本文地址:http://www.ea666.cn/fxschool/experience/44132.html