Local EPUB Text
订单路由算法
·执行成本最小化;
·获取最优交易价格;
·最大限度地提高交易执行速度;
·交易痕迹最少化;
·交易规模最大化。
算法会选择合适的交易场所和恰当的市场条件,以实现执行成本最小化。交易场所的选择可以简化收费结构,选择合适的交易执行时间可以捕获买卖价差小的时段,以及减少或消除滑点,或者消除随后的冲击成本(稍后详述)。为了获取最优的交易价格,复杂的算法会进行短期的预测,以确保卖单能够在较高的市场价格时被执行,反之亦然。为了最大限度地给那些渴望捕捉目前市场状况的客户提升交易执行速度,该算法会寻求一个市场参与度较为适当且交易影响最小的交易场所。为了实现交易规模最大化和交易痕迹最少化,该算法会根据最新的科技进步以及投资者偏好,将订单分解为一系列小额订单或“子订单”。大规模交易对于持有大仓位或战略能力较强的基金尤为重要。最少的交易痕迹可使外部交易商对订单信息的察觉程度降低,并且可以阻止外部交易商试图推断订单的信息内容。
算法执行性能的测量通常与某些基准相关。这项基准可以是交易日尾盘的收盘价,也可以是每日开盘价、盘中高价与低价以及收盘价平均值,也可以是每日开盘价或其他更为复杂的指标,如一些常用的执行算法。
算法的某些基准以及每日收盘价是最为常用的算法基准。任何投资者都将日收盘价作为自己依据日交易数据建立预测模型的一个简单参考因素,通常在建立低频定量模型时也是如此。每日收盘价几乎是投资者在对日交易数据进行分析时常收集的数据,而且它通常也是成熟预测模型的预测对象。因此,一贯优于以日收盘价为基础的模型的算法在使用该类模型的交易员中存在着很高的需求,而且他们也愿意将算法中所获取收益的一部分支付给算法提供商。
然而,众所周知的是,交易商很难实现对收盘价的改进。与其他基准不同的是,收盘价是事先不知道的,想提前近似预测它们的唯一方法,就是采用短期价格预测模型。短期预测模型需要利用在第8~11章所探讨的高频交易模型,同时还需要深入了解高频交易的复杂性。因此,交易商通常将其他常用的算法基准作为合适的算法性能基准。
下面将对执行算法的每一个目标进行详细的探讨。
执行成本最小化
交易成本包括以下几个主要部分:
·经纪商佣金,包括固定佣金与可变佣金;
·交易费用;
·税费;
·买卖差价;
·滑点;
·机会成本;
·冲击成本。
获取最优交易价格
获取最优交易价格的核心准则就是“低买高卖”。由于自然价格的波动,价格趋势有时难以预测,从而需要采用高级短期预测模型来实现这一目的。
最优价格的执行会因为一些额外的因素变得更为复杂。考虑下面的例子:在上午9:00,一位客户想以当天交易日下午4:00的收盘价至多买入10000股IBM的股票。根据交易中产生的问题提出以下问题:
·鉴于市场的不确定性,当天下午4:00的股票执行价格是多少?
·客户所期望的执行交易规模要比正常规模交易大得多。订单是否应该被拆分为较小的订单?如果是的话,应该怎么拆分?
·如果客户的10000股订单被分解为更小的子订单,那么这些子订单进行交易执行的频率是多少?
·每一个买入交易(卖出交易)都会消耗报价方(买方)的部分流动性,由此产生的流动性缺口将导致后续子订单以不利价格成交。这种影响,被称为冲击成本,是否能够被消除或最小化?
·其他市场参与者可能观测到客户的交易痕迹,并决定以同样的方向进行交易,这会进一步导致价格向不利的方向变动。那么,可以实现交易痕迹最小化吗?
最大限度地提高执行速度
快速执行有利于捕捉当前市场状况。市价订单在流动性最大的市场中执行得最快。为了最大限度地提高市价订单的执行速度,投资者可以对各交易所进行调研,确定自己可用的流动性,然后以最大的流动性向交易所报送订单。然而,限价订单在流动性最低的情况下执行得最快。因此,限价订单最好在可用限价订单最少的市场上执行。图15-2描述了对多个交易所的流动性水平进行探询,以及如何为给定的订单或零碎的订单选择合适交易所的过程。
图15-2 最大限度地提高执行速度
如图15-2所示,有以下三个交易所:交易所1可用的报价方流动性为2000个交易单位(包括可以最好的报价进行交易的股票、合约等);交易所2可用的流动性为3000个交易单位;交易所3可用的流动性只有500个交易单位。为了实现交易痕迹最少化,交易员将会首先在交易所2进行3000个交易单位或更少的卖单委托。当订单等于或小于从交易所可获得的相匹配的流动性时,可以确保市场秩序不会波动,或者仅轻微地波动,从而使交易留下很少或不留下足迹。
在交易所2的账面流动资金用尽之后,市价订单交易商将转向下一个流动性最大的交易所:在我们的案例中,交易所1具有最高的买入价,报价方流动性等于2000个单位。然后交易商将在交易所1下单2000个单位或更少,然后进入交易所3,并在那里进行可用的流动性交易。
然而,希望执行限价买单的交易商将首先向交易所3发出限价订单,因为该交易最优买入价可获得的限价买单的总体规模最小。交易商接下来将在交易所1委托限价买单,交易所1是一个以最高买价买入限价订单量总体规模第二小的交易所。按这种观点,限价订单交易商可能会或者也可能不会向交易所2(目前是在买入限价订单方面最具有竞争力的交易所)报送限价订单。
选择交易所的基本原理是:向限价订单最少的交易所报送限价订单,并向限价订单最多的交易所报送市价订单。这样的操作确保了订单被快速执行的概率最高。这一过程被称为市场冲击成本算法。
交易痕迹最少化
除了可以实现交易执行速度最大化,市场冲击成本算法也同样可以最少化交易痕迹以及减少市价订单交易中的干扰因素。市场干扰的确切原因已在第5章进行了论述。市场干扰的动因可以解释如下:每个订单都是一个可靠的信号,因为它揭示了交易商对交易商资金的真实信念。因此,每个订单都载有关于交易商当前观点的信息。其他市场参与者也可能希望依据这些观点进行交易,从而不必知道下单行为以外的信息内容。委托与最优买卖报价订单规模一样的子订单规模时,不仅可以最大限度地减少由此产生的市场行情变化,而且还可以最大限度地减少各子订单信息的披露。
交易规模最大化
处理大量交易量的能力对投资者在其投资策略中部署大额资本至关重要。例如,一个大型养老基金为了成功地重新分配养老基金的头寸,需要具有购买和出售大量证券的能力,且无须承担太多的额外成本。为了最大化交易规模,大型交易商可以在处理每个订单时使用市价订单和限价订单的组合。为了做到这一点,一个寻求执行大买单的交易商可以通过轮询可用的最优卖价订单规模,或从最具流动性的交易所开始,配售等于或少于最低卖价时的流动性,直至用完所有可交易市场的账面流动性。随后,交易商可能转向限价订单,通过在各大交易所配售最优买价订单,从流动性最小的交易所开始,然后在各大交易所滚动交易,以此提高卖方的流动性。图15-3显示了该策略。
大多数研究人员按照以下顺序开发执行算法:
1.研究人员探讨发表和尚未发表的关于最优执行算法设计与实现领域的学术研究。一些交易商可能对使用已公开的研究持怀疑态度,担心市场已经利用已知的研究进行相关的套利活动。实际上,算法参数的变化可能导致算法结果输出完全不同,但其结果仍是有用的。
2.研究人员用Matab或R中的计量经济学语言来模拟算法,然后将代码转化为更快的编程语言,如C++或优化的Java。
图15-3 交易规模最大化执行算法的实现
3.该算法使用对算法或订单交易产生的价格变动的假设和预测,对历史记录数据进行测试。
4.如果上一步能够得到令人满意的执行计划、价格、成本和风险结果,该算法就会投入实际应用中,它能凭借报价接收如FIX、ITCH、OUCH、FAST等语言发送实现实时通信。
分解大订单是交易商所采取的必要手段。1995年Chan和Lakonishok的研究显示,如果一次性执行一个标准的机构订单规模,它大约占日交易量的60%,即使可能,也会导致执行困难,成本昂贵。然后,在一定时间段内一次执行较小的“子订单”。
根据Gathera、Schied和Synko(2012)的研究,算法执行可以分解成三个不同的层次,如图15-4所示。
第一层,可以描述为宏观交易商,让我们解答以下问题:
·如何分解订单,算法分解订单的背后机制是什么?
·当用算法进行交易时,算法多久以及在一天中的什么时间提交子订单?
·算法应该交易多大的订单规模,子订单的规模应该多大?
·算法应该交易多长时间:算法的范围是多少,什么时候算法停止?
图15-4 算法执行层次
资料来源:Gathera,Schied and Synko(2012).
第二层,可以描述为微观交易商,它定义每个子订单的额外特征。特别地,微观交易商负责决定是否将子订单作为限价订单或市价订单执行;对于限价订单,要设定什么样的价格。
第三层,智能下单方法,决定向哪些交易所报送子订单。
在过去两年中,在开发最优执行数学解决方案方面取得了重大进展。宏微观交易商的决定,并且智能下单方法都可以非常精确地定制给定的市场条件。最优执行解决方案可分为静态和动态策略组。静态策略是在交易前确定的:它是基于过去的市场情况。成交量加权平均价格(VWAP)是静态策略的一个例子。相比之下,动态策略在执行过程中进行确定并改进,因此动态策略取决于当今的市场条件。无风险对冲是动态策略的一个例子。首先,动态策略似乎总是优于静态策略,因为动态策略会响应当前的市场状况,而静态策略则不会。在现实中,某些静态策略表现不错,但只是在特定的市场假设下表现良好。
通常使用基准测试来比较静态策略和动态策略的性能,如以下简单指标:
·平均实际价格比较了不同算法下每单位收到订单交易的实际价格:
式中,Pj为分解订单或子订单的实际价格;Vj为子订单j的大小。
·预售价格P0是在订单j委托时的市场价格。
·交易后价格Pj,post是由交易流量引起的临时流动性影响消失后的证券价格。为了确定Pj,post,2005年,Amgren等人对ΔP进行了关于Δt的回归,指出在时间Δtpost上,ΔPt对Δt的依赖性不再具有统计学意义。然后,时间tpost的价格P即Pj,post。
·总交易量V=∑Vj,可以用于处理大交易量相对于可用流动性的算法比较。在这种情况下,一些算法可能比其他算法更好。
·类似地,调整的成交量交易规模为V/VDaiy,其中VDaiy是特定交易日的总交易量,它可以用来比较算法利用可用流动性的能力。
另外,用于评估执行算法性能的通用基准还包括其他常见执行算法类型,如时间加权平均价格(TWAP)、成交量百分比(POV)、冲击成本(MI)、成交量加权平均价格(VWAP)、执行落差以及各种日内价格基准等,这些将会在本章的后续章节中讨论。
根据Kisse和Gantz(2005)的观点,订单执行基准可分为三大类:盘前交易、盘中交易、盘后交易。表15-1对这一分类进行了总结。
表15-1 订单执行基准
资料来源:Kisse and Gantz(2005).
盘前交易类别包括执行前已知如下基准:
·交易决策价格,交易商或投资组合经理决定的有利交易价格;
·前一交易日的收盘价,可以作为日常交易商的基准;
·每日开盘价;
·到达价格,执行经纪商收到订单时的价格。
盘中交易包括以下基准:
·VWAP,通过日内价格确定。
·TWAP,也是在全天的价格基础上确定。
·日均开盘价、最高价、最低价和近期平均价格(OHLC)。
盘后交易包括未来收盘价,价格未知。
时间加权平均价格
时间加权平均价格(TWAP)试图通过将大订单分解成相同大小的小订单来隐藏订单流,然后以相等的时间间隔报送。在数学上,TWAP在每个预定时间单位上执行的订单量是固定的,为每个订单的1/T。
由此产生的TWAP价格是在常规单位时间间隔内样本价格的算术平均值:
TWAP算法如图15-5所示。当交易商选择使用TWAP执行订单规模为S的大订单时,交易商还需要决定子订单或者分解订单的执行总数量N,然后订单的S/N以每T/N时间报送给市场,直到订单规模为S的所有订单都成交。订单分解的总量N和订单执行市场价格T最好使用特定于交易证券的特征来确定。这些特征可能包括整个交易日的成交量的历史变化、执行开始时的市场深度以及许多其他变量。最重要的在于将订单分解为足够小的订单,如此一来,每个子订单都可以不被察觉地报送给市场,而订单足够大或者交易足够频繁,整个大订单就可以在合理的时间T内交易完毕。TWAP订单流如图15-6所示,每个子订单都绘制为箭头。
图15-5 TWAP过程
图15-6 TWAP订单流
成交量加权平均价格
成交量加权平均价格(VWAP)算法目前是最流行的执行方法之一。VWAP的原理很简单:当成交量较高时,子订单较大;成交量较低时,子订单较小。较高的成交量可能会提供更大的匹配订单池,从而更快地实现更高的成本效益。
为了确定执行时间表,VWAP算法使用了日成交量变动的历史平均值图,如图15-7所示。该图是利用前一个月股票交易数据的计算绘制的:VWAP图显示的是过去交易月份中每个交易日每隔15分钟(或其他持续时间)间隔的平均成交量。根据VWAP图,子订单的大小确定如下:在整个交易期间,总订单大小S按照该时间段历史上观测到的成交量VWAP比例进行划分,如式(15-4)所示。图15-8绘出了VWAP算法。
图15-7 期货历史平均成交量
图15-8 VWAP过程
基准VWAP的价格可以确定如下:
VWAP图完全基于历史数据,不能准确反映市场状况。即使如此,一般来说,VWAP算法可以实现有效利用日内流动性的子订单的分配。VWAP算法的相对有效性是基于日内成交量的持续性的:特定的市场有自己的日内数量变化,从这个月到下个月小量波动。例如,图15-9显示了Eurobund期货的小时VWAP图,使用2009年4月和2010年4月的数据计算。虽然2009~2010年Eurobund期货的平均每小时交易量都有所增长,但VWAP图的形状仍然基本相同:在欧洲和美国开盘交易时段成交量上涨,随后,美国午餐时间交投平稳,成交量稳定,最后尾盘成交量飙升。
图15-9 日成交量分布的持久性,Eurobund期货(FGBL)POV
根据美国联合商品期货交易委员会和证券交易委员会2010年就闪电崩盘的原因进行的报告,2010年5月6日,正是POV算法造成了市场的混乱。调查发现,POV算法在前一分钟设定的交易量为9%,而“重要的大型交易算法”提交了41亿美元的电子迷你合约,所以市场价格首次出现大幅波动。图15-10说明了POV背后的算法。和TWAP和VWAP一样,POV算法以规律的时间间隔向交易所提交子订单。与TWAP和VWAP不同,每个POV子订单的大小是动态确定的,并在之前预定的时间段内(如10分钟)被设定为成交量的固定百分比。执行算法直到整个大订单全部成交才会进入下一阶段。上一期用于计算POV子订单的交易量应排除由POV算法自己产生的交易量:
然而,美国联合商品期货交易委员会和证券交易委员会报告中没有提及大型交易算法中,POV算法是否能够解释自身产生交易量的原因,也未能解释自己的交易量会导致子订单呈指数级增长的原因,以及说明可能导致闪电崩盘的危机程度。
当被正确编程时,与TWAP和VWAP相比,POV具有一个明显的优势:POV能够动态调整以呈现市场状况、即时响应流动性变化等事件。
图15-10 POV过程