算法交易系列研究之一

一、算法交易的概念


 

(一)什么是算法交易

 

    算法交易(Algorithmic Trading)是一种程序化交易方式,它将交易者和市场有机地联系起来。算法交易通常可以减少这两者之间的摩擦,或者说在一定程度上可以降低交易对市场造成的冲击。具体来说,交易者在金融市场中进行较大规模的交易时,规模较大的单笔交易对于流动性相对较差的市场具有强烈的冲击,从而会造成市场瞬间的剧烈波动。为了减少市场波动对交易所造成的不利影响,交易者通常会将需要进行交易的订单拆细,即将大规模交易拆分为若干小规模交易,并在合适的时机分别对其进行分散交易,从而降低相关交易成本——特别是冲击成本,使得整个交易过程中价格能够达到最优水平。如荀子《劝学》所言——“不积硅步,无以至千里;不积小流,无以成江海”,算法交易所体现的正是这样一种化整为零、积少成多的思想。


    算法交易是实现上述大单拆分并对拆分后的小单进行定时定量交易的一种程序化交易方式。其通过事先设定好的拆单策略与交易策略,并编制完成相关计算机自动化交易程序,通过连接交易系统的接口,利用计算机实现大规模交易的拆分、报价、下单、撤单等一系列动作,并在交易后对已完成交易进行分析和评估,从反馈中进一
步修正算法模型。


(二)为什么使用算法交易

    算法交易目前已在国内外被广泛应用,为什么要使用算法交易?我们认为大体有以下几个原因。


    首先,算法交易受到投资者追捧的主要原因,也正是其产生的根本目的,在于其可以减小市场摩擦,有效降低交易中的冲击成本,从而使得整个交易可以以最优价格完成。


    其次,算法交易可以提高交易执行的效率。伴随着大单拆分,不同的小单按照不同的价格进行动态成交,这些复杂而频繁的交易对于人工来说是非常繁琐的——一方面,交易员在进行交易时总是需要进行思考和判断的,这将有可能错过最佳的交易时机、增加等待风险或交易成本,而程序化交易的整个流程则仅需要计算机经过非常短暂的计算,就可以将指令发出,并且在这一过程中可以避免由于人的不理性而出现的一些非正常交易;另一方面,拆分后复杂的下单指令,特别是对于组合投资来说,容易使交易者手忙脚乱,而计算机程序化交易则可以在准确的时点对交易系统完成准确的下单指令,避免忙中出错。


    使用算法交易的另一个优点,特别是对于机构投资者而言,是它可以降低传统交易部门的人力成本,即只需要雇佣少量的交易员对整个算法交易过程进行监控和维护即可。


    最后,使用算法交易,对于大规模交易而言,是一种很好的隐蔽自己交易行为的方式。对于进行大规模交易的投资者,特别是机构投资者,一般情况下都希望能够将自己的交易行为隐蔽起来,从而避免对手根据自己的“套路”出牌。通过将大单拆细进行交易,类似于一片平静海面下暗涌着的激流,对手只能看到成交量的放大,但却看不出有少数人在大量买入或是卖出,整个交易过程表现出的仅仅是一种大众行为。


    当然,在隐蔽大规模交易方面仅仅依靠传统的算法交易还是不够的,这个过程可能还需要一些其他策略的配合,例如在细分的下单量上附加一些噪声、或者使用随机算法对大单进行拆分等,这里我们暂时不做过多讨论。


(三)谁在使用算法交易

    目前,国内外使用算法交易的投资者主要是各类机构投资者,包括基金公司、保险公司、养老金、投资银行以及各类资产管理机构。由于国内证券市场起步较晚,算法交易还没有大规模普及,但在海外发达金融市场,算法交易已成为一种成熟的证券交易模式。


    根据金融资讯公司Celent 的数据,2006 年全球股票交易中有20%是通过算法交易完成的,而2003 年时这一比例仅为14%,并且目前这一比例仍有上升趋势。经TIBCO亚太区及日本首席技术官Dan Ternes 统计,在美国衍生品市场上,90%以上的基金经理在建立投资组合时至少使用一次算法交易。目前美国使用算法交易较为广泛的机构投资者包括Citadel Investment Group、Citigroup、Credit Suisse First Boston、Deutsche Bank、Goldman Sachs、Morgan Stanley 、Susquehanna Investment Group、UBS 等。里昂证券(CLSA)亚太区首席信息官T.Rajah 认为,预计在未来10 年中,亚太和欧洲市场进行的证券交易中,大部分也将采用算法交易的方式进行。目前,东京证券交易所、香港联交所和新加坡交易所已经成为亚洲地区采用算法交易的主要市场。


    我国算法交易尚处于起步阶段,目前有约20家左右的公募基金运用了算法交易,主要以恒生电子、金仕达等国内一流金融软件服务商所提供的交易系统作为交易平台。

 

    一些券商也开发了自己的算法交易平台,但由于种种原因,没有进行大范围的推广和使用。


(四)算法交易的基本流程

    算法交易的完整流程包括四步,分别是算法模型(策略)研究、交易系统的设计与开发、交易的执行与交易后分析。


1、算法模型(策略)研究

    算法交易的核心是研究并建立行之有效的冲击成本模型和时间风险模型,从而达到在实际交易过程中冲击成本和时间风险最小化的目的。但是由于冲击成本和时间风险是负相关的,即快速交易会减小由于等待带来的时间风险,但会增加相应的冲击成本;而将大单拆分后,如果拆得过细,则会面临较大的时间等待风险,不过也可以减小相应的冲击成本。因此,对于冲击成本和时间风险来说,总是有一个最优的权衡,而在整个算法交易过程中,算法研究部分就是需要相关研究人员通过定量分析建模,得到这样一个最优解。通过研究所得到的算法交易模型,可以为证券买卖指令提供核心的定量决策。


2、交易系统的设计与开发


    算法交易通过计算机程序自动判断下单价格及数量,执行相应模型参数对应的交易指令而提高交易绩效。因此,算法交易系统的构建和实施是算法交易完成的基础环节。特别是在电子化交易高度繁荣得今天,交易系统的执行速度和执行效率直接决定了算法交易绩效的好坏,所以系统设计也是算法交易执行过程中的关键一步。算法交易系统的设计中包括几个模块,分别是模型计算模块、订单管理模块、交易引擎模块和输入输出模块。其中,模型计算模块通过加载数据库中证券的历史数据,进行定量分析和算法模型建立;订单管理模块则对母订单拆分、子订单分配并下单进行管理;交易引擎是算法交易系统的核心,它通过协调模型计算模块和订单管理模块所提供的信息,为订单的最后提交和撤销做出决定;输入输出模块则负责实时数据接收、历史数据记录、订单的生成和输出,以及交易过程中相关数据的记录。算法交易系统在设计和开发完成之后,按照国内目前的情况,一般会部署在机构投资者本地独立的服务器或交易计算机上。


3、交易的执行

    当交易系统根据实时行情发出下单指令后,订单通过网络发送至交易所,并在交易所主机进行撮合,如果成交,则返回成交结果给交易系统;如果未成交,则返回相关信息,并由交易系统确认是否撤单或重新挂单等事宜。


4、交易后分析

    该环节主要分为两部分,一部分是对当日的交易数据进行记录及清算,一般由交易系统辅助完成;另一部分则是对当日交易的情况进行分析与绩效评估,对于算法交易而言,主要关注交易成本测量和交易表现评估。


    测量交易成本的目的是评价过去的交易表现,从而对未来交易策略的改进提供定量依据。通常来讲,在算法交易中,交易成本被定义为实际执行价格与基准价格(如经常使用的VWAP)的差。这一数值的最小化正是算法交易的主要目标之一。


    交易表现评估则是以对算法交易的好坏做出判断为目的的一种评估方式。利用上述交易测量成本的大小可以初步对交易情况做出评价。但是,这种基于基准分析的评估方法在较长的时间尺度下来看并不是完美的,它很难准确比较不同交易日不同股票交易之间的表现。举个简单的例子,在某次考试中,考生A 得了70 分,考生B 得了90 分,在没有其他信息作为支持的情况下,很难说考生B 比考生A 在学业方面更为优秀,或许从长期来看,考生A 的成绩处于所有学生的前10%,而考生B 的成绩处于所有学生的后30%。算法交易的评估也是如此,例如在某个交易日指数持续下跌,成交量不断放大,那么市场的VWAP 在行情界面上可能是一根加速下降的曲线,根据一般的算法交易策略所执行买入指令的VWAP成交此时很有可能高于VWAP市场,但这种情况下并不能断言算法交易模型出现了某些需要更正的错误,因为该类交易风险是系统性的,很难进行人为的控制。此时可以使用相对表现测量(RPM)对交易表现作出评估,其基本思想在于计算价格差于某次交易平均价格的交易数量,这里我们不作过多展开。


(五)算法交易成本分析

    交易成本包括可见成本和隐性成本。具体来说,可以分为七个部分,分别是佣金、交易税费、买卖价差、价格增长(降低)、冲击成本、时间成本和机会成本。好的算法交易在隐性交易成本方面可以做到有效控制,即可以将买卖差价、冲击成本、价格变动成本、时间成本、机会成本等隐性成本最小化。


    算法交易对交易成本控制的最主要部分是冲击成本。对于一个容量有限的市场来说,无法避免由于市场流动性短缺所带来的大规模交易冲击成本。为了减少市场冲击,投资者需要将订单拆分为较小的部分,分步、逐渐地进行交易操作。但是,这样会使交易价格面临上涨(下跌)所带来的时间风险,以及订单不能够及时完成所带来的机会成本。相反,快速的交易可以减少这些成本,但会带来较大的冲击成本。因此对于交易速度的合理权衡,是很多算法交易策略需要致力完成的主要目标。


    另外,由于股票价格波动、市场交易量变化等因素,类似的算法策略可能会在不同的市场环境下产生不同的交易成本和交易表现。因此,交易成本在一定程度上可以视为一个随机变量,对于不同的交易策略和市场环境,该随机变量可能有着不同的统计分布特征。算法交易策略的开发正是在确定可能影响交易成本、特别是冲击成本的


    许多因素基础之上,通过数量化的方法对这些因素进行分析和优化,从而得到最优交易策略的过程。

 


二、算法交易的发展

(一)国外发展情况

    算法交易作为一种特殊的程序化交易,起源于海外市场程序化交易的兴起。

 

    20 世纪70 年代,纽约交易所(NYSE)引入订单传送及成交回报系统(Designated Order Turnaround,简称DOT),并且很快又推出了超级订单传送及成交回报系统(SuperDOT)。这意味着手工下单的方式开始被电子化的潮流所改变。早期的手工下单、单据流转、撮合等整个流程大约需要数分钟的时间,而计算机程序化报单的出现,使得整个周期缩短至秒量级。


    程序化交易(Program Trading)的正式出现是在1975 年,美国股票市场在当年推出了股票组合转让与交易,交易方式是投资者通过计算机实现一篮子股票的一次性自动交易。这种自动化的交易方式马上引起了市场的广泛关注。在后来的整个十余年中,程序化交易高度繁荣,很多投资者感到程序化交易确实在速度和自动化判断方面对交易产生了正向绩效,还有一些投资者在程序化交易的初期尝到了甜头。套利交易在那个时期就是一种非常流行的利用程序化交易赚钱的方法。例如投资者可以利用计算机在期、现货出现较大价差时,在几乎没有时间差的情况下同时买入一篮子股票并做空相应的股指期货,当价差回归至平衡点附近时再同时对期现货进行平仓,从而稳定赚取少量的价差。在美国金融市场电子化初步发展的阶段,一些投资者抓住先机,仅仅利用如此简单的套利方式就赚取了大量美金。不过与此同时,程序化交易也引来了很多争议,一些人对计算机程序化自动套利的模式提出了质疑,认为这种交易方式有失市场公平,还有一些人怀疑计算机程序化交易系统的稳定性,认为进行程序化交易存在很大的风险。但是无论如何,程序化交易在20 世纪80 年代取得了飞速的发展,也正是这样快速的发展为算法交易的出现奠定了基础。


    20 世纪90 年代,电子化交易在两个方面取得了突破性进展。一方面,电子化交易大规模进入外汇交易领域,几乎所有的外汇操盘手都开始运用计算机指令进行交易下单和相关操作;另一方面就是算法交易的大规模发展。由于计算机可以进行同时性的多指令交易,大规模投资组合订单的拆分并按设定时间进行交易成为可能。David Leinweber 作为加州伯克利大学的一名金融学教授,在政府项目的资助下,于1989 年提出了第一个算法交易模型,称为Market Mind。与此同时,美国股票市场的百分位报价改革将每股的最小变动价位由1/16 美元改为0.01 美元,竞价价差的缩小使得市场流动性有所降低,算法交易此时得到了市场的广泛关注。随后十年中,各大金融机构开始相继开发这一交易利器,算法交易快速成为金融市场主流的交易方式之一。


    在算法交易出现的初期,其被认为将会成为机构投资者交易的主流方式。由于规模的限制,大家都认为这种交易方式是中小投资者所无法参与的。但是在21 世纪以来,特别是在欧美等金融市场较为发达的地区,很多大型金融软件服务机构开发的交易平台开始提供这样一种交易模式,使得中小型投资者也开始进入算法交易领域,在相对有限的交易规模中可以降低自己的交易成本。


    目前,算法交易已在全球金融市场被广泛使用。除了传统的VWAP、TWAP 等一些模型,越来越多新型、复杂的模型加入到算法交易策略的阵营,机构投资者也大规模开展了相关的研究工作,以在与对手的竞争中尽可能多地缩减交易方面的成本。另一方面,在算法不断成熟的情况下,速度成为了当前制约算法交易进一步发展的主要因素之一。因此,各大交易系统开发商也在绞尽脑汁为系统的设计、开发、部署实施进行优化,从而使得算法交易的效率能够得到进一步的提高。


(二)国内发展情况

    算法交易在国内尚处于萌芽阶段。


    随着计算机及网络技术在我国的快速发展,程序化交易在过去几年中悄然兴起,粗略来看可以将其分为两类,一类是通过交易所接口实现数据的实时传输,整个建模、计算、下单流程可以通过自行编写程序完成;另一类则需要借助于成熟的程序化交易平台,如以机构投资者为主要客户的金仕达、恒生系列交易系统;以及文华财经、金字塔、交易开拓者、金钱豹等一系列大众化的程序化交易软件。不过目前来看,程序化交易在中国还主要集中在传统的套利交易和投机交易方面,算法交易的参与数量屈指可数。


    算法交易的出现除了依赖于先进的计算机及网络技术以外,更多地是由于市场大规模交易数量的增加而引起的。随着我国机构投资者数量的逐步增加,算法交易的潜在用户也已经形成了相当庞大的规模。金仕达、恒生等金融交易软件提供商也都开发了自己的算法交易系统,并已经在国内机构投资者中逐步推广。从目前国内算法交易使用的情况来看,我国算法交易用户的数量和参与比例在未来一段时间仍有广阔的提升空间。算法交易的大范围推广除了有利于投资者控制交易成本以外,也将使得国内金融市场的微观结构变得更加合理。

 


三、算法交易策略简介

    算法交易的核心在于交易策略的构建,好的算法交易策略能够有效控制交易成本,实现交易价格的最优化。接下来我们就简单介绍一下市场上最为常见的一些算法交易策略。


(一)TWAP策略

    TWAP(Time Weighted Average Price),时间加权平均价格算法,是最为简单的一种传统算法交易策略。该模型将交易时间进行均匀分割,并在每个分割节点上将均匀拆分的订单进行提交。例如,A 股市场一个交易日的交易时间为4 小时,即240 分钟。首先将这240 分钟均匀分为N 份(或将240 分钟中的某一部分均匀分割),如240份。TWAP 策略会将该交易日需要执行的订单均匀分配在这240 个节点上去执行,从而使得交易均价跟踪TWAP

算法交易系列研究之一

    TWAP 策略设计的目的是在使交易对市场影响最小化的同时提供一个较低的平均成交价格,从而达到减小交易成本的目的。在分时成交量无法准确估计的情况下,该模型还是较好地实现了算法交易的基本目标。但是TWAP 遇到比较大的问题是,在订单规模很大的情况下,均匀分配到每个节点上的下单量仍然较为可观,仍有可能对市场造成一定的冲击。另一方面,真实市场的成交量是在波动变化的,将所有的订单均匀分配到每个节点上显然是不够合理的。因此,人们很快建立了基于成交量变动预测的VWAP 模型。不过,由于TWAP 操作和理解起来非常简单,因此其对于流动性较好的市场和订单规模较小的交易仍然较为适用。


(二)VWAP策略

    VWAP(Volume Weighted Average Price),成交量加权平均价格算法,是目前市场上最为流行的算法交易策略之一,也是很多其它算法交易模型的原型。首先定义VWAP,它是一段时间内证券价格按成交量加权的平均值

 

算法交易系列研究之一

    其中 price 和 volume 分别是某个时点上证券的成交价格和成交量。


    VWAP 算法交易策略的目的就是尽可能地使订单拆分所成交的VWAP成交盯住市场的VWAP市场。从VWAP 的定义(2)式来看,若希望能够跟住VWAP市场,则需要将拆分订单按照市场真实的成交量分时按比例进行提交,这就需要对市场分时成交量进行预测。通常来说,VWAP 策略会使用过去M 个交易日分段成交量的加权平均值作为预
测成交量,这里就要涉及到M 和权数的确定,这里我们暂不进行深入探讨。更为严格地说,假设需要在某段时间买入一定数量的股票,采用算法交易将这段时间分为N 部分,并预测每部分时间的成交比例(占所需成交量)为 vp ,而市场真实的分段成交比例(占市场真实成交量)为 vm ,市场在每个时点的真实成交价格为 P ,则可以定义跟踪误差

算法交易系列研究之一

    从TE 的定义(3)式可以看出两点:1、跟踪误差与成交量预测的关系非常紧密,预测结果的好坏直接影响到VWAP 算法交易的结果。2、当某段时间的 vp 超过市场真实 vm 时,有可能造成订单无法全部成交,这样就会造成算法交易执行效率的下降,因此,更为常用的是被称为“带反馈的”VWAP 算法交易策略。

 

    所谓带反馈的VWAP 算法交易策略,是指在原有VWAP 跟踪的基础之上,将每个时段未成交的订单按比例分摊至后面的时间段中,这样可以有效提高成交比率。之前所讨论的TWAP 策略也可以采用该类反馈技术,使执行效率大幅提升。

 

(三)MVWAP策略


    MVWAP(Modified Volume Weighted Average Price),成交量加权平均价格优化算法。其实VWAP 有很多优化和改进的算法,但是最为常见的一种策略是根据市场实时价格和VWAP(市场)的关系,对下单量的大小进行调整与控制,因此我们统一将这一类算法称为MVWAP。


    当市场实时价格小于此时的VWAP(市场)时,在原有计划交易量的基础上进行放大,如果能够将放大的部分成交或部分成交,则有助于降低VWAP(成交);反之,当市场实时价格大于此时的VWAP(市场)时,在原有计划交易量的基础上进行缩减,也有助于降低VWAP(成交),从而达到控制交易成本的目的。


    在MVWAP 策略中,除了成交量的预测方式之外(通常也是按照历史成交量加权平均进行预测),同样很重要的是对于交易量放大或减小的定量控制。一种简单的办法是在市场实时价格低于或高于VWAP(市场)时,将下一时段的下单量按固定比例放大或缩小,那么这个比例参数就存在一个最优解的问题。如果考虑得更为复杂和细致,这个比例还可以是一个随价格偏差(市场实时价格与VWAP市场之差)变化的函数。由于这里只是对各交易策略做一个简要的介绍,量化处理的细节我们暂不进行深入讨论。


(四)VP策略


    VP(Volume Participation),固定百分比成交策略,与VWAP 策略类似,都是跟踪市场真实成交量的变化,从而制定相应的下单策略。所不同的是,VWAP 是在确定某个交易日需要成交数量或成交金额的基础上,对该订单进行拆分交易;而VP 则是确定一个固定的跟踪比例,根据市场真实的分段成交量,按照该固定比例进行下单。

 

    例如,将某个交易日均分为48 段,每段5 分钟。根据预测成交量,按照10%的固定比例进行下单。这样的策略所带来的结果是,当所需要成交的订单金额较小时,可能会在交易时间结束之前就完成所有交易,从而造成对市场均价跟踪偏离的风险。因此我们认为,该策略适用于规模较大、计划多个交易日完成的订单交易,此时若能选择合适的固定百分比,使得成交能够有效完成,则VP 是一种可以较好跟踪市场均价的算法交易策略。


(五)IS策略


    IS(Implementation Shortfall),执行落差交易策略,是以执行落差为决策基础的一种算法交易策略。执行落差被定义为目标交易资产组合与实际成交资产组合在交易金额上的差异。IS 策略的目标是执行落差最小化,或者说是在综合考虑冲击成本和市场风险后,通过需找寻找最优解来跟踪价格基准的一种策略。假设目标交易价格为P0 ,实际交易价格为P ,则IS 策略的最终目标为

 算法交易系列研究之一

    为了达到这个目的,目前无论是投资界还是学术界,已经衍生出了各种各样复杂的模型,我们在这里不做详细讨论,只对IS 的基本流程做简要介绍:
1、确定目标交易价格P0 ,作为交易基准,这个价格可以是到达价、开盘价、前一日收盘价等。再设定一个容忍价格 Pr ,作为交易的边界条件。
2、当市场实际价格低于或高于P0 时,按一定的策略下单进行买入或卖出交易。
3、当市场实际价格高于或低于r P 时,不进行买入或卖出交易。
4、当市场实际价格处于P0 和 Pr 之间时,可以按照介于积极和消极交易策略之间的策略进行交易。


    使用IS 的优点包括:


1、IS 策略较为全面地分析了交易成本的各个部分,在冲击成本、时间风险、价格增长等因素之间取得了较好的平衡,更加符合最优交易操作的目标。
2、IS 策略根据目标价格对交易过程的优化,更加符合投资决策的过程。
3、IS 策略多用于组合交易,而对于组合交易来说该算法能够利用交易清单上股票间的相关性更好地控制风险。


(六)Step策略

    Step 策略实际是一种对价格进行分层成交的策略,目标是在买入(卖出)交易中尽可能地压低(提升)成交均价。简单来讲,Step 就是在不同的价格区间进行不同成交量比例的配臵。例如在VWAP 或TWAP 策略中,通常按照预测成交量的一定比例k 进行实际下单。假设在开市前预计要买入某支前收盘价为20 元的股票,则对其进行成交量分层设定:
算法交易系列研究之一

 

    开盘后在VWAP 或TWAP 的基础之上,当价格在19 至21 元浮动时,按预测成交量的10%进行成交;当价格超过21 元时则不做任何交易;当价格小于等于19 元时,按预测成交量的30%买入。


    更为激进的一种是称为Aggressive Step 的策略,这种策略在价格低于最优交易区域边界时会将所有市场上的订单统统吃掉。具体来说,Aggressive Step 策略同样在买入(卖出)交易中进行分层,例如在上述交易方案中,前两个区域的策略不变,当价格小于等于19 元时,不管市价跌到多少,都按19 元的限价报单成交,直至价格回升至19 元以上或拟交易订单全部完成。不过这种策略不容易对交易量进行控制,并且容易造成价格异动,增加证券交易的隐形成本。

 

(七)Sniffers策略


    Sniffers 策略是一类策略的统称。通常该策略会开发一些较为复杂的算法去监控盘口和成交数据,以发现市场参与者中是否存在其他的算法交易者。例如通过少量的试探性下单,结合一定的算法和成交情况去判断有没有订单是通过算法交易而成交的。如果有其他的算法交易参与者,则通过计算判断,跟随这些算法交易或通过相反的操作,能否以较大的概率获取绝对收益。如果获利概率较大,则通过有针对性的算法交易策略进行下单。该策略与传统的算法交易不同,不以执行订单为主要目的,而是以获利为主,属于算法交易中较为高级的一种策略,适用于算法交易已经大规模普及的市场。我国市场无论是从交易制度,还是从算法交易的普及程度来看,目前都还暂时难以运用该类策略。


(八)盘口策略

    国外目前很多较为高级的算法交易策略对数据的要求都已不仅仅限于成交量和成交价两个指标,而更多关注的是市场微观结构,特别是盘口中出现的一些重要信息。

 

    举一个最简单的算法例子,称之为盯住盘口策略(PEG),该策略随时根据目标股票的盘口情况进行下单。PEG 首先会实时监测盘口中的最低卖出价格或最高买入价格,并按照一定的策略(或比例)下达买入限价指令或卖出限价指令。如果交易指令未能完成,并且市场价格开始偏离限价指令的价格,则对上述订单进行撤单,并且根据最新的盘口信息重新发出相应的限价指令;如果交易指令全部完成,继续按照上述策略(比例)发出买入限价指令或卖出限价指令,直至订单全部完成或交易时间结束。该策略的优点在于对市场的冲击可以做出较好的定量控制,而缺点在于跟踪市场均价容易出现偏离,并且每个交易日的成交量不可控。


(九)W&P策略


    Work and Pounce 策略,简称W&P 策略,是在一般算法交易策略的基础之上,通过市场盘口及流动性情况对算法交易进行进一步优化的一种策略。具体来讲,当执行某种算法交易策略时,系统会将拆分后的订单在一定的时间按一定的价格进行挂单。

 

    此时如果跟踪盘口数据,会发现所提交的下单价格有可能是主动成交(例如在VWAP策略中就有出现这种机会)。在这种情况下,可以观察相应价格的盘口是否具有较大数额的挂单,即观察市场在一定的价格范围内是否有多余的流动性存在。如果存在这种流动性,则可以放大交易数量,将市场流动性横扫一空,或仅留存少量残余流动性。


    W&P 策略适合于有大量订单需要在短期内完成的情况,使用该策略能够有效提高执行效率,但同样对于价格的跟踪可能将产生相对较大的偏差,增加了交易成本的不确定性。从W&P 策略衍生出的策略还包括LMX Hydra、Options Work and Pounce 等,主要关注点都是市场多余的流动性,这里我们不再进行逐一介绍。


(十)Hidden策略

    Hidden 策略实际上是一种主动成交型算法交易策略。对于传统的TWAP、VWAP 等策略,由于下单时往往是按市价下单,因此可能会夹杂有主动成交和被动成交两种交易。但是当被动挂单和撤单次数较多的时候,特别是在较为发达的金融市场中,算法交易者甚至算法交易策略本身容易被其他竞争对手观察和监测到,从而使得竞争对手可以针对算法本身开发出具有针对性的策略。Hidden 策略就是这样一种反侦察的算法交易策略——当市场盘口中出现了希望成交价位的委托单,并且达到一定数量时,则主动出击将委托单吃掉;否则伺机而动,直到满足条件的机会出现为止。总体上来说,Hidden 策略也是一种对原有算法交易策略进行再优化的策略,其主要运用在欧美等较为发达的金融市场上,在隐藏自己的行动的同时也付出一部分跟踪市场均价准确性的代价。


(十一)Guerrilla策略

    Guerrilla 也是在一些原有算法交易策略的基础之上进行进一步优化的一种策略,其目的同Hidden 策略一样,都是为了隐藏自己的策略和交易行为。不同的是,Hidden 是在主、被动成交及下单数量方面进行考虑,而Guerrilla 的出发点仅仅是下单数量。通过一定的随机算法,Guerrilla 策略会将每个时段应该提交的订单数量
进一步打散成为不同尺寸的部分,从而使得其他竞争对手在交易明细中不容易看出算法交易者和相应算法的存在。


(十二)其他策略

    除了上述介绍的一些常用算法交易策略以外,在国外市场上目前还存在非常多的策略,例如仅VWAP 一种基础的算法交易策略就可以衍生出几十种甚至上百种策略;再例如在国外做市商制度的存在下,市场上还有一批基于该交易制度的常用算法交易策略,如Guaranteed VWAP、SOR 策略等,我们在本篇报告中不逐一介绍。总而言之,很多算法交易策略在使用一段时间后往往由于信息的泄露或者市场微观结构的改变而不再适用,投资者就需要继续开发新的策略。因此,各种算法交易策略总是如雨后春笋一般在市场上出现,然后消失,轮回。但无论如何,各类算法交易策略的出现都是为了对交易成本进行有效控制,因此,这类交易策略在计算机和网络技术突飞猛进的今天,将会越来越多地占领整个市场的交易份额,目前来看这是一个不会改变的大趋势。因此,各种各样新的策略也需要不断被开发,不断去适应新的市场环境。我们的算法交易系列报告也会在回顾传统交易策略的同时,不断开发新的策略,从而使投资者能够紧跟市场的步伐,有效、合理地控制交易成本。

 


四、展望

    从欧美发达金融市场的发展来看,自算法交易推出的二十余年来,该领域的研究一直受到相关机构投资者的重视。算法交易的使用者从大型机构投资者,到中小型机构投资者,到个人投资者,以迅雷不及掩耳之势在整个市场上蔓延开来。当然,这样的发展速度同样也是以欧美先进的计算机及网络技术为依托和支撑的。另一方面,各类投资者也确实通过算法交易在大规模的证券交易中尝到了甜头,使得市场的非系统风险得到了进一步控制。也正是对交易成本的有效控制,使得市场形成一定的正反馈机制,进而推动了算法交易的不断发展。


    近几年来,我国股票市场中也有一些机构投资者逐渐加入到了算法交易的队伍中,并且成功地对交易成本进行了定量控制。但是我国目前整个市场的算法交易参与比例还很低,因此,在算法交易全球化的趋势下,预计我国未来几年算法交易将迎来飞速的发展。


    从算法交易的发展方向上来看,主要热点将集中在软件和硬件两个方面。软件方面主要是指算法交易策略的研究和开发。由于全球金融市场有效性的逐步提高,各类交易策略有效性的持续时间总体上都存在缩短的趋势。因此,新策略的开发将始终是算法交易研究领域的重点,并且在大量算法交易策略被市场了解和熟悉后,策略的开发也存在复杂化的趋势,这也体现了新策略开发的难点。另一方面,从硬件的角度来看,在当今的电子化交易市场中,几百个毫秒的落后就有可能导致交易策略的失效,因此计算机执行速度和网络传输速度的提高也必将成为算法交易的主要攻关目标。

 

    最后,我们认为算法交易在未来的发展可能主要会面临几点问题。第一点是交易速度。算法交易的误差跟踪,以及对于时间风险的控制,在很大程度上取决于交易速度的快慢。在电子化交易高度发达的今天,绝对速度很重要,但竞争对手间的相对速度有时更成为交易成败的关键。第二点是网络安全。对于大规模订单的电子化交易,以及考虑到交易部门分工的复杂性,网络的安全性问题显得尤为突出,这也是非系统风险的一个层面,需要引起相关技术人员的重视。第三点是市场制度制约,包括有关部门对程序化交易行为的相关管理条例,以及对交易制度和交易费用的制定,可能将会在一定程度上影响程序化交易的发展进程和发展速度。

转载于:https://www.cnblogs.com/timlong/p/6701441.html

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/429419.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Spring3系列7- 自动扫描组件或Bean

原文地址 http://www.cnblogs.com/leiOOlei/p/3547589.html 一、 Spring Auto Scanning Components —— 自动扫描组件     1. Declares Components Manually——手动配置component 2. Auto Components Scanning——自动扫描组件 3…

CI Weekly #17 | flow.ci 支持 Java 构建以及 Docker/DevOps 实践分享

这周一,我们迫不及待写下了最新的 changelog —— 项目语言新增「Java」。创建 Java 项目工作流和其它语言项目配置很相似,flow.ci 提供了默认的 Java 项目构建流程模版,快去试试吧~ 最近 flow.ci 2017 招聘计划正式启动&#xff…

python选取tensor某一维_Pytorch的Tensor操作(1)

类型推断torch.randn():随机初始化a.type():返回类型type():返回基本类型isinstance() :检查类型cuda会影响数据类型标量维度(dimention)为0的标量标量的shape:返回类型为【】(空的list),返回长度也为0a.di…

201521123014 《Java程序设计》第8周学习总结

201521123014 《Java程序设计》第8周学习总结 1. 本周学习总结 1.1 以你喜欢的方式(思维导图或其他)归纳总结集合与泛型相关内容。 泛型(编写的代码可被不同类型的对象所重用) Java中一个集合可以放任何类型的对象,因为…

【4.0】jdbcTemplate

1.什么是jdbcTemplate? 2.使用jdbcTemplate 3.crud操作 参考博文:http://blog.csdn.net/u014800380/article/details/64125653 4.采用配置文件的方式使用jdbcTemplate 参考博文:http://suyanzhu.blog.51cto.com/8050189/1563219/ 参考博文原文&#x…

基于MODBUS协议的单片机与(串口屏)触摸屏通信(图文)

基于MODBUS协议的单片机与(串口屏)触摸屏通信(图文) 导读:触摸屏能够直观、生动地显示运行参数和运行状态,而且通过触摸屏画面可以直接修改系统运行参数,人机交互性好。触摸屏和单片机通信,需要根据触摸屏采用的通信协议为单片机编…

【转】C#之继承

C#之继承 一.继承的类型  在面向对象的编程中,有两种截然不同继承类型:实现继承和接口继承  1.实现继承和接口继承  *实现继承:表示一个类型派生于基类型,它拥有该基类型的所有成员字段和函数。在实现继承中,派生…

java 学习计划_Java学习计划范例

Java学习计划范例Java学习计划好的计划是成功的一半,今天是在创新思维的第一节课,在这门课程的开始,一个有策略的、有目的性的计划是非常必要的,为了在以后的学习中能够达到最好的.效果,"坚持"是一把雕刻刀&…

SQL Server 2012自动备份

SQL 2012和2008一样,都可以做维护计划,来对数据库进行自动的备份。 现在做这样一个数据库维护的计划,每天0点对数据库进行差异备份,每周日0点对数据库进行完全备份,并且每天晚上10点删除一次过期备份(两个星…

mysql查逻辑表的分片规则_MySQL(19) Mycat分片(分库分表)配置

一、前言本文将基于主从复制,读写分离的环境基础上进行一个简单的分片(分库分表)配置二、Mycat分片配置mycat分片主要在scheam.xml,rule.xml这2个表中配置① scheam.xml:配置逻辑表以及对应使用的分片规则select user()这里小编主要对t_user表…

JS取消浏览器文本选中的方法

一 、问题的出现 今天在使用Easy-UI 的messager.alert()方法时候出现浏览器文本被选中,不知道其中是什么原因,如下图所示。 二 、解决思路 我最后的思路时在弹出消息框的同时,取消浏览器文本的选择,最后查找资料编写如下方法。  …

linux 脚本 java_Linux 通过脚本执行Java程序

由于要统计不同的IP,代码中应用了HashSet来存放IP地址。上述Java程序是在Windows下编写的,如果在Linux服务器上运行,只需要把上面文件的路径和文件更换了就可以了。2.编写好java程序后,将java程序打成jar文件(环境Linux)我将上述测…

Java开启/关闭tomcat服务器

© 版权声明:本文为博主原创文章,转载请注明出处 通过java代码实现Tomcat的开启与关闭 1.项目结构 2.CallTomcat.java package com.calltomcat.test;import java.io.BufferedReader; import java.io.IOException; import java.io.InputStreamReader;…

5、如何快速找到多个字典中的公共键(key) 6 如何让字典保持有序 7 如何实现用户的历史记录功能(最多n条)...

5、如何快速找到多个字典中的公共键(key) from random import randint,sample #随机取数 # a sample("ABCDEF",randint(5,6)) # print(a) # b1 {x:randint(1,4) for x in sample("ABCDEF",randint(3,6))} # b2 {x:randint(1,4) for x in sample("A…

KVM虚拟化技术之使用Qemu-kvm创建和管理虚拟机

一 .KVM 简介 KVM (名称来自英语: Kernel-basedVirtual Machine 的缩写,即基于内核的虚拟机) , 是一种用于Linux内核中的虚拟化基础设施,可以将Linux内核转化为一个hypervisor。KVM在2007年2月被导入Li…

python 如何在一个for循环中遍历两个列表

是我在看《笨方法学python》过程中发现有一行代码看不懂——“ for sentence in snippet, phrase:”,所以研究了半天,感觉挺有收获的。所以就放在博客上分享给大家了。 直入主题: 为了不耽误大家时间,如果知道以下为两段代码为什么…

画王八java代码参数_java画乌龟源代码-郭遥航.doc

java画乌龟源代码-郭遥航.doc /*JAVA基本功小练习用java语言描述小王八用鼠标可以拖动小乌龟进行移动选中乌龟时可以显示小乌龟的腹面*/importjava.awt.*;importjavax.swing.*;importjava.awt.event.MouseMotionListener;importjava.awt.event.MouseListener;importjava.awt.ev…

java服务注册中心有哪些_Spring Cloud服务注册中心简述

概念当一个大型系统拥有很多服务时,往往需要一个服务注册中心来管理这些服务,它可以提供如下功能:登记每个服务提供的功能检测每个服务是否可用,不可用的服务剔除服务间互相调用时,通过服务注册中心很容易找到目标服务…

JavaScript原生对象及扩展

来源于 https://segmentfault.com/a/1190000002634958 内置对象与原生对象 内置(Build-in)对象与原生(Naitve)对象的区别在于:前者总是在引擎初始化阶段就被创建好的对象,是后者的一个子集;而后…

实例化Java对象_Java面向对象基础之对象实例化

1、实例化对象的过程可以分为两部分,例如下面代码:Person per new Person();该代码分为两部分:第一,声明对象:Personper,这部分是在栈内存中声明的,与数组一样,数组名称及时保存在占内存之中,只是开闭了真内存,对象是…