新闻详情
论程序化交易系统建设
作者:管理员    发布于:2017-06-25 15:23   
  在国际市场上,程序化交易已经比较完善,而且是一个十分重要的交易方式。虽然程序化交易在我国还只是处在萌芽阶段,但是随着国内资本市场的日趋成熟,随着投资者素质的不断提高,程序化交易将逐步成为国内市场的主流交易方式之一。因此,建立起一套成熟稳定的程序化交易系统,不仅是可行的,更是顺应行业发展、推动期货市场发挥自身应有的作用和功能所必需的。

  程序化交易系统建设之头寸管理

  在拥有了一个优秀的交易策略或者交易系统之后,如何在交易过程中增减仓位直接关系着策略进行中的资金曲线和策略的总收益与总风险大小。针对不同的交易策略和系统,设计个性化的交易头寸管理程序是我们研究的方向和目标。

  一般而言,头寸调整的基本目标在于:获取更大利润、减少风险度(盈利相对于亏损的大小)、尽量不减小或尽量更少地减小系统和策略的获胜概率。在调整头寸的过程中,最大的敌人不在于盈利是否减少(增加头寸盈利总会有所增加),相反地,最大的影响系统获利能力的敌人在于:重仓位的单笔亏损。所以,我们必须加入一个适当的标准:当仓位较重的时候,尽量避免遇到单日损失发生时刻。重仓位时最好不是损失发生时,重仓位恰好遇到损失的概率最小。

  一般的头寸管理系统,如等额加仓、不等加仓、橄榄加仓、金字塔加仓等策略都是非常初级和简单的加仓策略,这些策略的问题十分明显,比如:什么时候开始加仓?什么时候减仓?由于我们的策略和系统必然是一个右侧交易系统,所以重仓不能持有到系统末端,系统末端必然是一个短期的或大或小的亏损。很多仓位调整策略都是一个十分宽泛的、具有不确定性和主观性的仓位调整策略,所有的调整方式都是建立在主观判断的基础上。

  基于一般的仓位调整策略,我们将投资策略的信号分为两类:一类是连续型信号,一类是离散型信号。连续型信号表现为:当某个指标大于0做多、小于0做空时,则这样的信号有一个程度上的度量。离散型信号表现为:某个指标等于1时做多,等于-1时做空,等于0时观望,则这样的信号就是一种交叉型信号,本身不具备大多少的问题,即没有程度上的度量,这样的信号本身不具备调整仓位的“先天性优势”。

  一、与信号无关的主观性仓位调整

  与信号无关的仓位调整的基本前提是:无论是哪种交易策略和交易系统,其资金增长曲线必然追求的是光滑、增长两个目标,在资金获利的前提下,增仓或者减仓是对资金的极大程度利用和极大程度风险规避。下面笔者在明达系统04的基础上对品种的增仓、减仓进行具体分析。

  1.浮盈增仓

  浮盈增仓是正常的仓位调整策略,很多头寸管理方法中都极力推崇这样的策略。盈利之后加仓目的在于扩大利润,所谓的“让利润奔跑”理论就是建立在盈利增仓的基础上。这样的增仓方式其优势在于利润增长速度会很快,其劣势是增仓交易发生在信号已经达到了某种强度时,即新的交易发生在信号本身的腰部或者顶部,这样的增仓方式必然会迎来一个短期的亏损。浮盈增仓的效果在于:(1)累计收益明显增加;(2)资金回撤加大;(3)盈亏比率增加;(4)系统成功率减少;(5)仓位要求的资金量相对较小。

  沪胶盈利加仓累计收益

  \

  

  2.浮亏增仓

  浮亏增仓的出发点是:盈利连续发生和亏损连续发生的概率越来越小,即亏损之后出现盈利的概率增加。同时,浮亏增仓会降低持仓成本,在连续盈利概率减少的条件下,亏损之后的盈利会因为增仓使得接下来的获利增加。其优势在于重仓之后的盈利概率增加,相对劣势在于资金量要求很大,同时盈利能力会减小。浮亏增仓的效果在于:(1)累计收益增加幅度不大;(2)资金回撤较少;(3)盈亏比率增加;(4)系统成功率减少;(5)仓位要求的资金量相对较大。

  沪胶亏损增仓累计收益

  \

  

  盈利增仓与减仓对比

  

  \

  

  值得注意的是,浮盈增仓虽然相对资金量较小,但因为浮盈增仓其总的仓位大于浮盈减仓总的仓位,所以浮盈增仓的盈利较高。为了更好地评价两者的优劣之处,通过统计我们发现,浮盈减仓的仓位相对浮盈增仓的仓位总的倍数介于1.5—2.2之间,所以浮亏增仓时刻倍仓持有更能有效获利。

  浮盈增仓与亏损倍仓对比

  \

  

  3.同向增仓

  市场短期来看消息反映不足,在多头信号出现时上涨行情增仓,下跌行情减仓;在空头信号出现时上涨行情减仓,下跌行情增仓。方向性增仓与浮盈增仓十分相似,也会使利润最大化增长,当然也面临和浮盈增仓一样的问题。方向性增仓的效果在于:(1)累计收益增加幅度巨大;(2)资金回撤较大;(3)盈亏比率增加;(4)系统成功率减少;(5)仓位要求的资金量相对较大。

  总的来说,所有与信号无关的加仓、减仓方式得到的结果显示出的结论都十分相似,包括盈利增加、回撤加大,其中收益最大的依然是方向性增仓策略。


增仓策略对比

  

  \

  

  浮盈增仓的意义在于当浮动盈利达到某个幅度的时候增加仓位,也是追求利润的极大程度增长,但是其加仓程度较小,具有一定程度的保守性,即只有当盈利达到某个幅度时才加仓。这种加仓策略会减少资金占用量,同时降低风险,但同时也减小了收益。

  无论采用何种加仓方式,上述仓位调整策略都与交易策略本身给出的信号无关,这是一种相对主观的加仓方式,其最终的结果均能增加总的收益,但同时也要承担相应的风险。因此,根据投资者本身对风险和利润的追求,来设计个性化的策略是非常必要的头寸调整方式。

  二、与信号相关的客观性仓位调整

  1.连续型信号增仓

  连续型信号增仓在于连续交易信号的策略本身具有仓位调整的“先天性优势”,从连续型信号的所在区间分布情况可以知道信号本身的强弱问题,所以这种情况下的加仓显得比较容易。不同的连续型信号具有不同的仓位调整方式,其实对于连续型信号而言,其仓位变化本身就包含在了交易策略的内部,属于内部附带的头寸调整方式。一般来说,这时候的仓位调整属于客观性的仓位变动,若结合主观性的仓位调整方式,就可以进一步改变资金曲线的走向和幅度。

  2.离散型信号增仓

  相对于连续型信号,离散型信号本身不具备信号的强弱度问题,其加仓除了采用主观性加仓方法以外,另一种方式就是变离散型信号为连续型信号。这种方式在一定程度上具有操作上的不变性,因为不是所有的离散型交易策略变换为连续型交易策略都可行,或者即使可行也比较难以掌握。大多数离散型交易策略给出的信号都能变换为相对应的连续型交易信号。

  总的来说,基于信号相关的加仓策略较为复杂,依赖于信号的采集与系统自身的胜率和回撤,并且研究分析也较为困难;与信号无关的仓位调整则更倾向于资金管理的范畴,在实际交易中为投资者所常用。

  

  程序化交易系统建设之发展策略

  

  程序化交易一般的定义为“在指定模型参数的约束下,按照模型给出的指令自动买入和卖出特定数量的证券或证券组合的交易行为”。程序化交易出现于上世纪70年代初的金融市场,其标志性事件是纽约证券交易所推出的指定交易循环系统,由此专业投资经理可以通过计算机与交易所联机,来实现投资组合的一次性买卖。纽约证券交易所把程序化交易定义为市值在100万美元以上、股票个数在15只以上的一揽子股票组合买卖交易,在实际操作中这意味着所有的程序化交易都是在计算机的辅助下完成的。自诞生以来,程序化交易得到了长足发展,被广泛应用于股票与期货的跨市场指数套利交易中。在现今的国际市场上,股票和衍生品市场的程序化交易占全部交易活动的70%。

  程序化交易与传统的手工交易的主要区别包括:(1)程序化交易是电脑自动下单,可以同时对多个商品发出买卖指令,交易速度快;手工交易由于人的反应速度有限,无法发出过多的买卖指令。(2)程序化交易一般策略是跟随市场波动的交易,交易更客观、更理性;而手工交易经常需要对未来进行主观预测和判断,较为感性。(3)程序化交易对买卖时机的判断基准是价格与量;手工交易往往还要参考基本面分析。(4)程序化交易是严格按照程序化交易模型进行交易,对交易员的能力要求和依赖性相对较低;手工交易则刚好相反。(5)程序化交易对交易模型设计人员素质要求高,对网络硬件环境要求高;手工交易对硬件环境要求一般。

  从国际市场的历史来看,程序化交易的兴起和发展是必然的,它对投资者乃至整个期货市场都能够起到有益的促进作用。程序化交易系统使交易决策的过程更加程序化、公开化、理性化,投资者可以从由情绪支配的处于模糊状态的选择过程转变为定量的数值化的选择过程。这样不仅可以遏制由于贪婪或者恐惧等心理因素带来的非理性操作,在整个市场的层面也可以在一定程度上避免众多投资者由于受到谣传或者暂时的价格波动带来恐慌的群体效应。此外,程序化交易系统的建立需要投资者对整个市场情况,对具体品种的供需基本面以及技术层面甚至资金风险控制等各方面都有充足的了解。所以,建立起一套成熟的程序化交易系统可以避免投资者的盲目投机心理,使投资者向更专业化的方向成长。同时,程序化交易系统往往都需要带有严格的止损措施,这样可以获得比主观交易更小的资金回撤比例,减小投资者的风险敞口。

  对于通常采取组合投资策略的机构投资者来说,当投资组合中的品种数量越来越多的时候,传统的人工分析将难以满足要求,程序化交易则成为唯一的选择。另外从整个期货市场的角度来看,程序化交易的存在不仅活跃了市场,为交易提供了充足的流动性,同时还可以提高信息的使用效率,使市场价格发现的功能得到更好发挥,而且一些基于金融市场、期货市场基本原理的策略的实现使得期货市场能够更好地发挥出本身应起的作用和功能。比如程序化交易中的套利部分,无论是期现套利还是跨期、跨市套利,都会及时发现相对价差的不合理部分并予以纠正,这就有效避免了价格被哄抬从而误导一般投资者的情况出现,充分体现出期货市场发现价格的作用。另外在某些投资策略中,程序化交易强大的计算和机会捕捉功能也使得其成为保障策略实施的唯一选择。比如目前运行平稳的股指期货,它的一个主要功能就是为证券投资者提供风险规避。机构投资者的股票投资组合中往往有数十上百个股票,然而要计算出其一揽子的总风险系数、与股票指数的拟合程度以及应购入的股指合约数额以达到避险目的,这一繁琐复杂的套保过程势必需要通过计算机经过预先设好的程序和算法来完成。再如,对大量使用高杠杆的对冲基金而言,市场上的投资机会稍纵即逝,如果采用传统的手工下单,就可能错失大量的操作良机。由此可见,随着金融期货市场的逐步完善和壮大,程序化交易所能发挥的作用和功能也将愈加明显和重要。

  国内程序化交易系统发展现状

  和国际上日趋完善的程序化交易系统相比较,国内的程序化交易系统的建立和运行还只是处在一个相对初期的起步阶段。其特征可以由以下几点来概括:一是国内市场正在逐步走向成熟,大部分投资者对程序化交易普遍缺乏认识。二是由于程序化交易在国内普及面不广,与之相关的法规以及监管都不够详尽和明确。三是对于使用程序化交易的投资者,进入衍生品市场的限制较多。四是目前国内比较成熟的程序化软件平台较少,投资者使用较多的是交易开拓者与文华财经,一些投资公司自己开发了专用的软件平台一般都秘不示人。五是市场上缺乏数量化投资产品,整体的投资组合管理研究水平不高。六是金融创新不足,程序化套利和风险对冲缺乏完善的产品链条来进行操作。

  虽然国内市场目前仍然以手工交易为主,但部分先知先觉的投资者以及投资机构已经开始使用程序化交易,整个市场的数量化管理观念已经有所改善。不过国内程序化交易系统仍有很多的缺陷:一是软件系统基于客户端设计,大部分程序化交易软件运行速度缓慢,造成下单时滑点较大,公式系统大都类似分析家语言,不能实现复杂的交易策略。二是程序化交易软件缺少风险管理模块,一般均为人工监视交易风险。三是大部分投资者交易思想是按照传统技术指标进行机械交易,策略缺乏严谨性。四是一般投资者均无详尽的大型历史行情数据库,策略无法做到接近真实历史的回测,策略使用起来不确定性大。五是参与群体以资金较小的散户为主,一般很难做到多品种多策略的组合操作,稳定盈利难度大,缺少示范效应,不利于程序化交易的推广。总体而言,国内的程序化交易一般被认为是手工操作的延伸,仅仅是解决下单问题,普通的投资者没有能力也没有条件进行历史数据的挖掘进而升华自己的交易思想,现有的交易软件也难以满足大资金客户的程序化交易需求。

  程序化交易在发达国家市场已经相当普遍,已成为市场的主要交易方式。随着中国市场的成熟,随着投资者素质的不断提高,程序化交易必然会逐步壮大,进而成为国内的主流交易方式。

  程序化交易系统的建设

  程序化交易系统的建设从时间和发展的阶段上来看,可以分为三个步骤:

  1.前期的准备工作

  程序化交易系统并非仅仅只是一个电脑加上一个可行的策略,它的建立工作远比人们脑海里那种简单的模型搭建要复杂很多。对于前期准备工作而言,就包括了人员配置和硬件配置两个方面的内容。程序化交易系统,作为一个相对独立的体系,需要各方面专业人员的配合。例如首先需要高级软件工程师来完成对交易行情服务器和策略的开发,这样可以保证行情和交易的平台能够为策略的实施提供最大便利,为客户提供最个性化的服务。其次需要金融工程师,可以基于一定的策略思想来进行建模、数据分析以及编写程序。再次还需要系统工程师,对整个交易系统环境提供网络管理和软硬件方面的支持。此外,风险控制的成员也必不可少,需要对交易产品的资金账户、盈亏风险进行监控和管理。就硬件而言,从交易必需的行情服务器、交易服务器,到交易数据库、专门面对测试以及开发的终端,还有必要的网络设备等等,都需要大量的前期投入。

  2.中期的策略研究

  对一个程序化交易系统而言,成熟而稳定的交易策略可以说是整个系统的灵魂所在。为了得到一个成功的交易策略,一般而言要经过以下几道环节:

  首先,进行模型的设计。从类型上而言,需要确定是单边投机交易还是套利交易;从时间区段而言,需要确定是日内短线,还是长线趋势;就品种数量而言,要确定是交易一个品种,还是跨品种、跨市交易或者是在期现之间进行交易。而当进入具体模型设计的时候,需要考虑各方面的因素和参数,比如交易模型面对的投资者类型,尤其是投资者的交易习惯和风险偏好,还有模型进场和出场的点位,模型的使用周期和交易的仓位比例等。一般而言,主要的策略类型有以下几种:一是久期平均,是指使用久期作为衡量指标来确定某组合投资的合理价格区域,从而通过低买高卖来实现收益。二是组合保险,可以通过对给定价值的底值逐步提升的操作策略,阶段性地稳固已取得的收益,处于下跌市时,对投资组合最小价值可以起到保护作用;当价格上涨时,该组合也同样可以跟涨盈利。三是指数套利,是指投资者同时交易股指期货合约和相对应的一揽子股票的交易策略,当理论期货价格和实际期货价格间的差额足够大时就可获取套利收益。四是数量化交易,是指基本面分析投资方式的自动化,利用计算机分析各项基本面数据,选择投资组合的资产配置,并通过建立相应的数学模型来预测组合的未来变化。

  其次,当一个策略模型基本成型之后,就需要对这个交易模型进行历史数据的检验。在检验过程中,为了尽量拟合真实情况,交易时的交易成本也需要考虑在内。检验后,需要计算出各种数据指标并进行分析统计。比如整个交易策略盈利情况、交易的胜率、盈亏比、最大的连续盈利次数、最大的连续亏损次数、最大资金回撤比例等等,根据这些指标结果,对模型的设计思路,对一些交易细节的处理以及各个相关参数进行调整和优化。

  最后,在模拟测试和调整令人满意后,仍然不能直接投入使用,还需要进行实盘跟踪的检验,以考察模型在实际交易环境下运行效果的稳定性和可行性。有很多问题在进行历史测算的时候可能被忽略,只有在实盘测试的时候才会暴露出来,有时甚至历史测算和实盘测试的结果会截然不同。这主要是因为,历史数据的带入和实盘交易有一定的区别,比如对市场的冲击和盘口的影响就是历史数据检验的时候无法体现的。此外,在历史测算中,所有的开仓或者平仓指令都是按可成交来计算的,而在实盘操作时,有可能会出现各种各样的问题影响成交,比如下单时突然出现对手盘不足或者大幅的滑价导致交易失败等。

  3.后期的针对性产品开发以及客户的维护

  在一个交易模型经过了以上几个步骤之后,如果仍然有良好而稳定的收益率、较小的风险和资金回撤,那么这个模型基本上就可以算是成熟了。然而就一个交易系统而言,或者对一个程序化交易团队而言,只依靠一个单一的策略模型是远远不够的。我们都知道,为了规避系统风险,一个行之有效的方法就是将投资分散到不同的方向,交易策略也是如此,利用几个基于不同原理、不同周期、不同资金配比的策略组合,就会在风险控制上有很好的表现。针对不同的客户群体,由于他们的资金状况不同,或者说风险偏好不同,因此所提供的交易策略也应该不同,应提供相应的有针对性的策略产品。由于程序化交易兼有客观量化分析、高效下单以及风险管理功能,程序化交易系统可以依据强大的数据库,建立多品种、全方位的各种交易策略模型,其市场可以覆盖所有商品期货、金融期货乃至股票市场,收益率可以由稳定无风险的较低收益调至高风险高收益。此外,也可以根据客户自身的需求,根据他们的投资习惯和持仓规模,甚至是他们自己的交易策略来量身订做一些程序化交易模型,从而达到为专业化客户提供专业化服务的目标。

  由此可知,程序化交易系统的建立并非只是一个简单的策略加上平台的搭建,其中涵盖了包括技术、风控、研发、交易等各方面的内容,而产品开发后的推广、针对专门客户群体进行合理的培训指导、有针对性的产品设计以及合作经营等也是一个成熟完善的程序化交易系统不可或缺的组成部分。

  程序化交易系统建设时应注意的问题

  由于国内对于金融领域的严格监管,程序化交易系统的建立的目的是要促进期货市场在整个金融体系中发挥应有的作用和功能,因此程序化交易系统首先要做到合规,在策略构思和模型建立的过程中要严格杜绝任何违规行为出现。

  在模型的设计中,应该清醒地认识到每个交易模型都有其适用的范围。即使某个模型在历史测试和实盘测试中效果理想,或者在实际操盘中已经取得良好效果,但未来市场的走势不可能完全重复历史,也没人可以准确预期,因此在实际操作的时候,应根据实际品种、实际的经济环境乃至基本面的具体信息来选择合适的模型,并随时根据宏观、微观等各种因素的变化对模型参数进行相应调整,以达到最佳效果。

  就具体策略而言,止损是必要的。程序化交易不能被“神话化”,它是不可能做到确保盈利的。因此,需要在每次交易的时候都做好严格的止损设置,尤其是当系统进行全自动交易时更是如此,这样才能将风险控制在一个较低的合理水平。此外,在设计模型的时候,不用盲目地追求过高的胜率,有很多成功的投资策略,胜率都只有30%—40%。

  此外,程序化交易产品的后期推广、培训教育、维护和升级等方面也都是程序化产品运作成功的关键要素。