程序化交易行业研究:从流动性中掘金(下)


程序化交易的优点及引发的争论 

    程序化交易在一定程度上颠覆了传统的交易思维,改变了市场微观结构,之所以能够如此迅速的发展,其所具有的传统交易方式不能替代的优点主要有以下几方面: 

    1.使复杂理论和实际交易有机结合变为现实。当今的金融市场,简单的技术分析和指标计算已经不能满足交易决策的需要。大量历史(时序)数据分析和复杂模型被引入以发现市场的规律和交易机会。人们通过计算机程序监测市场情况,对数据进行实时分析,然后由各种统计和量化算法帮助交易决策。人们通过历史数据或随机模拟的市场情况来测试交易策略效果。最终测试好的策略以程序的形式植入交易者自行开发或者是由软件提供商所提供的交易平台中进行交易。 

2.高频交易。如前所述程序化交易的一个重要组成部分是高频交易。高频交易策略通过计算机程序在短时间内对金融产品进行反复买/卖,对速度和精度要求很高。这类策略不可能通过手工完成。

 

    3.交易指令优化执行。券商为了赢取更多的客户订单已经开发出了大量交易执行算法。这些算法很大程度优化了交易指令的执行,相比直接下单不仅可以获得更好的成交价格、更快的成交速度,还可以尽量少的影响市场。另外随着交易策略的复杂化,比如某些套利策略涉及到一篮子股票的同时买/卖,手工完成的风险很大,而算法则可以很轻松完成,而且保证准确性。 

    4.客观性。程序化交易不受情绪的影响是最有纪律性的交易员,可以保证交易按照预先制定好的策略被执行。这样的好处是可以将策略和执行严格分离而互不影响。 

    然而任何事物都有两面性,随着程序化交易对传统交易方式的冲击越来越大,反对的声音也逐渐产生。争论的焦点主要集中在两方面: 

    1.市场的公平性。随着程序化交易特别是高频交易的出现,市场越来越多的体现出了对速度的诉求。谁拥有性能最好的计算机、最快的网络链接,甚至是离交易所近的办公楼都会给交易带来优势。面对这种偏离价值投资的趋势愈演愈烈,有人提出这是对普通投资者的不公平。 

    2.市场的有效性和交易秩序。从市场监管者的角度讲,一方面希望市场活跃,另一方面又希望市场有良好的交易秩序和有效性,希望价格有平稳而透明。程序化交易确实大幅提高了交易量,但同时可能给市场带来了更大波动。另外部分程序化的交易策略完全是通过市场规则的漏洞达到盈利的目的,制造人为的价格,使得价格没有反映出真实的市场情况。比如基于佣金返还的交易策略就是一个例子。 

尽管人们对于诸如程序化交易到底对市场的波动率和微观结构产生了怎样的影响意见不一,有一点是可以肯定的,那就是程序化交易给金融市场增加了不稳定性。最好的例子莫过于今年56日上演的Flash Crash美国道琼斯指数不到半小时的时间暴跌700点,之后又戏剧性的反弹600点。美国股市暂时性的蒸发了1万亿美元,创造了道琼斯指数单日日内下跌的最高纪录。

对于造成此次事件的原因美国证券监管机构展开了广泛的调查并有了一些初步的结果,事情的大致过程如下: 

1.当天希腊政府对于缓解债务危机的一系列举措造成了市民在雅典暴动,负面消息加剧了人们对于欧洲经济状况传导到美国的担忧。 

    2.在东部时间下午2点半左右,某基金率先卖出价值超过40亿美金的E-mini S&P期货,其中一部分买家即为程序化高频交易者。这笔交易事后被证明也是通过程序化交易实现的,执行算法的目标为卖出前一分钟交易量的9%,无论时机和价格。 

    3.十分钟之后,之前买入这些合约的高频交易者又在彼此之间大量卖出。比如 24244秒左右,价值1.25亿美金的E-mini SP六月合约被卖出;25毫秒之后价值超过1亿美金的ETF再次被卖出。 

    4.在这个过程中,无数的指数和ETF以及他们的衍生品被计算机程序反复定价并执行相应的交易,天量的订单和交易信息超出了NYSE交易系统的负荷,很多信息被放入队列中没有及时发送到统一的对外价格/交易信息发布平台(CQS)。当这些信息最终被发出时时间戳标却记为发出时间,与交易实际发生时间存在延迟。 

    5.延迟的价格信息使得NYSE的买方竞价高于其他交易所,根据Reg NMS的规定,交易必须按照最好价格执行,于是越来越多的卖单被路由到NYSE,进一步加剧了这种效果。 

    6.与此同时部分市场参与者发现了数据延迟现象,在不知道具体原因的情况下为了安全起见,给出了非常高的卖价和非常低的买价(比如1美分)。这种报价一旦成交,市场便进入了底部。这也是埃森哲等股票在 5分钟左右的时间市值损失99%变为1美分的原因。

    总之,造成这次事件的原因是多方面的,有客观因素也有人为因素。比如特殊的市场环境(欧债危机、一开始的超大卖单)、NYSE系统的负荷有限等,但程序化交易几乎在各个环节都扮演了一定角色: 

    1.面对市场的大量卖单,各种程序化交易策略对指数、ETF和其他衍生品进行重新定价并发出订单捕捉交易机会。而这一切都只发生在 20毫秒左右的时间里,基本上是信息通过网络从芝加哥传到纽约所需要的时间。 

    2.某些特定算法会不断地在市场中发送订单之后迅速撤回以检测流动性等信息,这些订单进一步增加了交易所的系统负荷。 

    3.后期市场大幅下跌触发大量Stop Order,天量订单瞬间得到执行形成链式反应。值得注意的是股市不仅在短时间内大幅下跌,而且在之后很快得到反弹。这说明此次事件是事故并非基本面所致。事实上,类似的小规模的Crash其实早有发生,只是由于规模较小没有引起人们的关注和重视。Natex公司对0610年个股的详细交易数据进行了分析,统计了发现近5年来类似事件发生的频率。他们参照Flash Crash的特点对小规模Crash做了统一定义:对于市场迅速走低的情况,他们的定义是在 1.5秒之内成交价连续10次递减,并且价格变化超过0.8%;类似的对于市场迅速拉高的情况,他们的定义是在1.5秒内成交价连续10次递增,并且价格变化超过0.8%07年以来这种小规模 Crash发生的频率明显提升,这与市场隐含波动率的形态如出一辙。

    从上面的分析中可以看出程序化交易对市场安全造成隐患的一大原因是速度太快,很容易形成连锁反应。此次事件之后不久,美国官方就宣布准备启用新的更严格的交易限制手段(Circuit Breaker)以减少类似事件发生的可能。新的限制规定:对于限制范围内的股票,在任何5分钟的时段内,只要其价格变动超过10%该股票就要停止交易5分钟。该限制目前仍在试运行阶段,会在6个月的时间逐渐应用于在NYSE交易的S&P 500Russell 1000中的所有股票。

典型算法/策略举例

    这里选取了几个比较典型的执行算法和程序化交易策略进行讨论。执行算法发展到今天历经了三个阶段:1.基准算法;2.定制算法;3.用于发现潜在流动性的算法。

    第一代算法很简单,追逐的主要是执行价格。这类算法的目标就是匹配人们常用的参考均价,比如VWAPTWAP,即交易量加权平均价格和按时间的平均价格。VWAP的实现方式是:将交易日平均分成若干个时间段(原则上越细越好),然后利用历史数据拟合出交易量在各个时间段的分布,比如一个简单的方法是对过去 N个交易日的分布信息取平均。执行时按照每个时段交易量所占比例分别执行。

第二代算法相比第一代体现出了定制化的需求。一方面它不再是单单寻求执行价格,有时也会考虑交易量方面的因素。另一方面它力图寻求相比 VWAPTWAP更好的价格。比如交易量参与(Volume Participation)策略就是保证在某个时间范围内完成市场交易总量指定比例的交易,并不考虑执行价格和市场影响。实际上前面提到的Flash  Crash发生初期,基金的大量卖单就是通过类似算法执行的。这里主要讨论两个比较常见的算法:Arrival PriceSniper。 

Arrival Price  VWAPTWAP算法虽然可以基本保证最终的执行均价基本符合市场均价,但无法产生额外Alpha。很多时候市场参与者希望获得的不是市场均价而是下单时刻的市场价格(因为他们下单时很可能已经加入了择时的考虑)。Arrival Price算法就是为了适应这种需要而产生的。虽然不同算法提供商有不同的实现方法(甚至名字),但本质上都是相同的。这种算法的基本思路是对市场参与者的风险承受力和所期望的收益(更好的执行价格)之间的均衡。所以该算法一般都有一个风险偏好参数供使用者指定,

    一般来说有保守、适中和激进三种模式。这里的风险是指订单有可能不能被执行。下单人的风险承受度越高算法的执行时间就越长,换句话说只等待 的价格去执行,但风险是可能错过合适的执行时机甚至干脆不能被执行。相反下单人的风险承受度越低,该订单就会越快的被执行。相应的,所得到的执行价格也可能不够理想。一般来说该算法会预先计算出一条交易量的执行轨迹,具体执行时按照轨迹所规定的交易量分时处理。

    Sniper 该算法的中文翻译是狙击手,顾名思义该算法所做的事就像一名狙击手,首先将原始订单隐藏起来并监测市场状态。一旦有满足下单人指定的价格,该算法就会尽力去抢占流动性执行该订单。算法的本质是不把order显示在交易所的Book上,而是等到时机出现在下单。比如某位交易员想以$6的价格购买某只股票,最通常的做法是下一个$6的限价单;另一种做法是通过Sniper算法执行。限价单有两种明显的弊端:1.当该订单出现后,其他同样想购买这只股票的人可能会抬高价格抢先购买,从而降低该交易员订单被执行的可能;2.当该订单出现后,卖家可能会认为在$6价格处有大量买单而提高卖价,这样也不利于该交易员订单的执行。而Sniper接到该订单则暂时持有而不发送,这样交易所并不显示该订单。随着市场的波动一旦有 $6或更好的卖单出现, Sniper就立刻下单来争取得到执行。

    第三代算法主要是帮助寻找市场中的潜在流动性并加以执行。如果说前两代算法还是在已知的市场信息中寻求机会提高执行效率的话,第三代算法则是探索未知的市场信息并寻找潜在机会。第三代算法也是程序化交易多方博弈充分体现的一个领域之一,这里讨论一下基于佣金返还的程序化交易策略

    为了吸引交易量,目前几乎美国所有的交易所都实行佣金返还制度,即任何券商只要带入新的订单并得到执行,该券商会获得每股1/4美分的佣金返还。一种程序化交易策略就是鉴于该制度发展起来的,而且很好的体现了挖掘潜在流动性和多方博弈的特点。该策略首先持续监测市场的订单情况,当发现某种特定模式出现时,比如某只股票在$20成交100股,之后又快速出现500股在$20成交,该策略的隐含流动性检测算法会认定这可能是某个大的冰山订单(当然也未必总是正确的,所以有风险存在),购买还将继续。基于这种假设,该策略会以$20.01的价格下买单购买100股该股票。由于之前100股和500股该股票分别在$20被执行,如果有人愿意继续卖出该股票,则$20.01的买单将率先被执行。如果这笔买单发生,该策略则立刻掉头以 $20.01(同之前的买价)下卖单卖掉这100股。这时新的成交价格已经从$20上升到$20.01,原先一直在$20隐藏的大买单也看到了价格的上升。为了防止价格进一步走高,原始大买单有很高的概率会以$20.01买入这100股。总的算下来佣金返还策略在$20.01处买入100股,之后以同样的价格卖出。但是由于这两次交易都是运行该策略的公司带入的,他们将获得 $1/4*2 = $0.5的利润。利润虽小但是一切只发生在几十毫秒之间,并且每个交易日有成千上万的类似机会。

程序化交易在国内的发展前景

    国内证券市场只有20年的历史,相比欧美以及亚太其他发达地区市场成熟度还有很大差距,不仅如此,国内市场的一些特性也使程序化交易在国内发展受到限制

    首先,国内的交易场所比较单一,股票只在交易所进行交易。而国外的情况则是大量的流动性存在于交易所以外,比如大大小小的暗池、ECN等。即使同一只股票也会在多个交易所交易,目前NYSE股票只有25%左右的交易量是通过NYSE执行的。国外很多执行算法就是为这种条件量身定做的,比如各种智能路由算法,而在国内这些算法都没了用武之地。

    其次,国内市场的T+1交割制度使得大量日内交易策略不能得以实施,高频交易策略更是无从谈起。除此以外,股票市场不允许卖空、缺乏做市商制度、可供交易的产品简单、交易指令不够完善等,都不利于程序化交易策略的开展。

    尽管如此,我们还是看好程序化交易在国内的发展前景。自今年4月沪深300股指期货被正式推出以来,大量的程序化套利策略纷纷出炉并创造出惊人的交易量。沪深300股指期货月交易额和标普指数期货(包括普通合约和迷你合约)的月交易额对比来看,基本上国内的股指期货交易额已经和标普指数在同一水平。标普指数期货是面向整个市场的,而股指期货国内目前并没有对机构投资者开放,可以想象未来市场全面开放后国内的市场潜力有多大。结合目前国内的情况,我们认为程序化交易有望得到大力发展的几个原因: 

    1.股指期货和ETF的套利交易需要更多的算法支持,因为类似的交易策略都涉及到一篮子股票的交易执行,有效的算法可以很大程度上降低执行风险。 

    2.国内券商对执行算法的服务很少。目前国内的股票市场,机构投资者都是通过券商提供的市场直连通道(Direct Market Access)直接下单交易,而券商并没有提供规模化的算法附加服务,未来还有广阔的发展空间。 

    3.其他潜在市场。其他市场比如商品期货、权证等同样实行 T+0交割制度,也是程序化交易的潜在市场。事实上,目前已经有不少从事短线交易(趋势跟踪、反转)的投资者开发出各种程序化交易平台和策略,只是专业化和规模化有待提高。 

4.人才优势。程序化交易通常需要有扎实数理基础和过硬编程能力的人才,而国内这方面有很好的人才储备,越来越多的国外量化基金来华开办分公司并在当地雇佣人才从事算法策略研究和开发也证明了这点。

国内相关服务提供情况与产业态势

从完成程序化交易的过程来看,这条产业链大体分为跑道租赁--模型提供--代写服务--系统销售--机房托管等,其中跑道租赁和机房托管主要提供交易网络与硬件的运维服务,低延迟交换机等特种设备比较适合此类交易。总得来说与传统运营商、IDC类似,在此无需赘述。

主流的两大程序化交易平台:MT5MetaTrade 5)和交易开拓者, 国内目前在期货、股指期货、外汇上采用程序化交易平台的较多,而债券、股市等由于标的分散,需要更多的人工干预和判断,因此较少采用。