谈起Trade Execution,不得不提的就是Algorithmic Trading(算法交易)。毕竟随着Markowitz的“Diversification is the only free lunch”深入人心,投资组合所含的资产数量越来越大;同时交易频率随着计算机软硬件的不断升级而越来越快,依靠算法自动交易的方式已经愈发普及。说到底,Trade Execution的目标都是优化Market Impact,所以这就和上一篇讲述的概念和模型无缝链接了起来。
Order Book
交易即是买卖,但又不是简单的一手交钱一手交货的双边买卖。交易有着隐藏的第三方,即所谓的market maker(做市商)。实际交易时,买方和卖方都会提供自己的买入和卖出价格,这些价格被做市商记录于order book中,并且做市商会用自己的存货资产在相应价格买入或卖出,使得双边都能顺利完成交易。order book即是一连串limit order,这些limit order静静地躺在order book里,此时他们对市场索取了流动性。直到排在他们身前的limit order由于价格达到了市场临界的价格而被执行,他们便成了下一单即将成交的market order,与此同时他们向市场提供了流动性。
从上一篇我们已经知道,Market Impact是指交易执行后价格相比于未执行交易前价格的变化。而Market impact可以进一步被分为暂时性impact的和永久性impact,我们在这里进一步举例阐释为什么执行交易会对资产价格造成暂时性impact的和永久性impact。
假设我们需要以market order的方式卖出A资产200股,此时市场原先的均衡被打破,卖出的market order亟需流动性,而order book里的buy limit order会被激活,他们填补了market order的即时需求,释放出流动性来达到新的市场均衡。卖出的order会逐级清空order book里等待的buy limit order(bid price不断降低),但由于market order的特性这一切在一瞬间完成。假设之后没有新的市场交易发生,做市商们会逐渐在order book里挂上新的buy limit order,bid price会一点点回升。一图胜千言:
图中可以看出market impact可以分解为暂时性impact和永久性impact。研究表明,暂时性impact一般正比于交易体量的平方根,而永久性impact一般正比于交易体量。
假设我们不需要即刻成交,而是可以分批次分时段卖出A资产200股(不妨假设我们分两次,一次使用market order卖出100股)。那么market impact会变成如下模式:
如此看来,将交易拆分执行成子交易似乎能显著缩小暂时性impact,进而缩减整个market impact,这么做有益无害。但其实拆分执行背后有着隐藏的代价,那就是有效执行价格的不确定性增加了,而减少的暂时性impact实际就在弥补这样的不确定性。每做一笔子交易我们都消耗了order book的流动性,需要耐心等待market maker重新挂单回补流动性,子交易越多,流动性回补所需要的等待时间就越长,价格的不确定性就越高。
Optimal Execution
交易的执行往往是在如下两个极端之间取舍:
- 将所有交易在一瞬间完成,这样market impact很高,但交易所带来alpha得以保留
- 将交易无限拆分成极小的子交易慢慢执行,这样market impact很小,但price movement risk和opportunity cost很高,交易所带来的alpha可能被削弱。
我们需要在两个极端之间拿捏一个最优解,兼顾market impact, price movement risk和opportunity cost。数学上我们可以定义这个最优化问题如下:
其中代表一个交易流程,即多少股在时间t被交易。代表交易者的风险厌恶程度,或者是一个alpha signal的时效性。如果无限大,即alpha signal时效性极高,则我们按照情形1执行交易;如果是0,即alpha signal的效用保持恒定,则我们按照情形2执行交易。
具体C(x_t)的表达方式我们在上一篇提到过,即是用market impact模型来模拟。我们可以用大量market impact影响因子的回归模型来表示,但归根结底,永久性impact和交易体量以及价格波动率成正比,暂时性impact和交易体量的平方根(Almgren的paper推算出是3/5次方)以及价格波动率成正比。
交易的目的是为了获取超额收益,所以我们可以把交易成本的最优化问题整合到portfolio optimization的最优化问题的架构里:
其实更精细的表达式除了传统的第一项mean variance optimization和第二项transaction cost之外,还应该有第三项,即最终仓位w和被交易的仓位x之间的协方差:
Algorithmic Trading
自动交易的算法是各家的镇店之宝,不会轻易示人以真面目。但是万变不离其宗,交易算法无非是要优化风险均衡下的transaction cost,进而产生一个可行的交易流程。而且交易算法千变万化,很难说孰优孰劣,根据交易背后的策略,即投资者的动机和风格的不同,会有不同的交易算法与之相匹配。
VWAP和TWAP
VWAP(Volume Weighted Average Price)是最常见的交易算法,它的模型就是资产的交易流程和该资产日内不同时段的交易总体量相匹配,把自己的交易流程做成该资产交易总流程的一个分形。例如股票资产的日内交易量总是呈现U型,即开盘和尾盘时交易量大,中间交易量平淡;那么我们在自动交易该资产时也会将大部分交易部署在两端,中间交易量较少。
TWAP(Time Weighted Average Price)和VWAP很类似,只是将交易流程按时间等比例分配。如果在一小时内需分三次总共交易300股,那么TWAP的交易流程便是在:20,:40和:60分钟分别交易100股。将VWAP和TWAP于portfolio construction做一个不成熟的类比,VWAP相当于纯被动的Market cap weighted而TWAP则直接相当于equal weighted。
VWAP现在的作用大多是作为benchmark和其他交易算法比较,但这并不代表VWAP不会直接在实际交易中被采用。如果交易策略满足如下要求,那么VWAP仍然能交出很好的答卷:
- 交易策略的alpha在整个交易过程中不会decay
- 当个人交易的体量契合整体交易的体量时,market impact能被最小化
- 待交易体量固定
第三项要求说的是我们在执行VWAP交易算法前必须清楚地知道我们到底要交易多少体量,而当完成VWAP算法后这些体量将全部被交易。如果这一点不能确定,我们可以使用所谓的participation ratio的交易算法。这种算法和VWAP的区别在于它会实时监测市场上刚发生的交易量,然后按比例提交自己的交易流程;而VWAP则需要提前预估市场交易量。这种实时监测的代价是我们不能预先知道我们最终能完成的交易量。
Arrival Price
VWAP是一个简化的模型,它完全忽略了交易策略背后的alpha signal的属性。因此它是一种“被动”的自动交易算法,就像market cap weighted portfolio construction。Arrival Price Strategy(或者称为implementation shortfall strategy)是一种“主动”的自动交易算法,就像mean-variance optimized portfolio construction。
交易策略满足如下条件是,使用Arrival Price的效果会较为理想
- 交易策略有positive alpha且alpha会随着时间衰减
- 交易者自身为risk averse且惩罚系数已知
- 当交易被拆解地越小,market impact越小
具体的模型就是我们之前提到的,交易的越快,就会越高,而 会越低,反之亦然。随着transaction cost的变化我们可以画出的efficient frontier。如果我们假设资产价格的时序变化服从Brownian Motion,那么该模型的最优解是
其他
除了上述两种主流的交易算法,还有许多不胜枚举。比如因为大量market impact计算会基于当日收盘价,所以有的交易算法会将绝大部分交易量留到关市前最后一刻执行,这样交易的有效执行价格会十分接近收盘价,由此计算出的market impact将会很小。
市场的结构也有多种变体。通常我们接触的交易所有着一定的交易准则,数据有着很高的透明度。但一些broker dealer会组建自己的dark pool,这种dark pool可以跨交易所实现买卖,但很多order相关的数据会被隐藏起来。dark pool有自身的规则,也有与之相适应的交易算法。