算法交易(一)
TWAP (Time Weighted Average Price)
时间加权平均价格算法:使我的建仓成本和某段区间内的时间加权平均价格相吻合。
简单理解来说:在指定时间段,100万股,比如接下去3个小时购买,每间隔10分钟买一次,3个小时可以建仓18次,总体的数量,除以18次,可以得出每一次交易的数量1000000/18 = 55555。
通过拆分,每间隔10分钟发一笔委托,不同分割节点均匀分拆,和市场实际的成交情况没关系的。
建仓速率是匀速的。
有些大的机构会加一些随机的因素在里面,均匀的拆分,很容易发现,这样很可能暴露意图,每次数量加一个随机数,这样能隐藏我们建仓的目的,多了一些不确定性,比如恒生PTrade每笔委托时间在某个范围内随机,以及每笔委托数量在某个范围内随机。
两个局限性:市场成交量是波动变化的,均匀分配固定的数量是不够合理的,盘中冲击比较大。
如果订单比较大,每次的数量数量还是比较大的。
TWAP是等时间间隔下等量的单,由于TWAP 操作和理解起来非常简单,因此其对于流动性较好的市场和订单规模较小的交易仍然较为适用。
VWAP (Volume Weighted Average Price)
成交量加权平均价格算法:VWAP策略即是一种拆分大额委托单,在约定时间段内分批执行,以期使得最终买入或卖出成交均价尽量接近该段时间内整个市场成交均价的算法交易策略。
计算历史每一段时间平均历史成交量,比如说过去20天,每一分钟的分布会计算出来,这样我们可以得到过去20天,每分钟的成交量是多少。
分布可以画出来。
每一个时间段的成交量比例在这段时间内总成交量的占比,这个占比作为我这时点的成交量拆分的比例。
每时刻发出的委托数量是基于历史的平均成交量,与当前市场价格、成交量无关。
VWAP算法的核心即时最小化与市场实时VWAP之间的差异。使得真实交易的执行价格尽可能的接近VWAP基准价格,从而较少市场冲击成本。因此VWAP策略一般不直接对交易的冲击成本建模,而是注重日内交易量分布的预测。
其中
表示第i次价格按照成交量加权时的权重。
VWAP策略在实现过程中主要分为两步,一是如何合理准确的对即将委托的大额订单进行拆分,二是对拆分后的订单进行下单委托。
假设投资者选择在一天的交易时间运行VWAP策略,预计委托的总量为V,将该交易日的交易时间划分成N个相等时间长度的间隔,即分N次进行股票的买入卖出操作,然后通过历史数据确定在每个时间段内应当委托的数量:
假设每笔订单委托都能达到成交的效果,成交价格相对应的当前市场均价:
如果每个划分后的时间内,市场真实的成交量为:
那么由VWAP策略的目的—最小化策略VWAP价格成交价与市场VWAP的差异,则可以用如下的最优化问题来描述:
约束条件是:
求解上述最优化问题,可知当:
最优化问题的可以取最小值
也就是说,如果投资者能够预测市场每个时间段的成交量占交易当日总成交量的权重,则投资者严格按照这个权重来拆分委托单,分段分时的进行,最终的成交均价会等于市场的成交均价。
将大额度的订单拆分成数量不全相等的订单后,需要重新考虑具体到每一笔分配后的交易额度。正如前文所述,我们的模型是建立在假设投资者每一笔交易都能以市场均价成交的基础上,而在实盘操作过程中,我们不可能实现这一的假设,每个下单间隔内的时机的成交价格都会跟真实的市场均价存在不同程度的差异,为了尽可能的控制这样的差异,我们采取分配到当前下单间隔内的子单进行进一步的拆分。
这里的拆分,我们采取平均拆分,其实就是TWAP拆单方式,比如在10:10-11:30买入10万股国盛金控(002670),采用的下单间隔为5分钟,假如在10:45-10:50内通过VWAP方法计算出来的委托数量是2000股,那么在这5分钟内,每一分钟下单400股。执行的其实是一个等时间间隔下单策略(称为TWAP,这样得到的成交均价和全市场成交均价会有差异)
传统的VWAP策略(也称历史VWAP策略)是利用股票连续多天历史成交数据的均值来估算日内成交量分布的。具体来说,假定t日第i个时间段的市场成交量为:
传统VWAP策略在t日前对其预测方法为:
其中参考周期k可以由投资者在运行VWAP策略时预先设定,通常取一个月的数据(20交易日),得到t日日内交易量的预测值之后,即可确定t日第i个时间段的下单比例:
每次下单量就是:
下单的时候是市价指令还是限价指令
如果采用市价委托方式,可以有效的控制最终成本均价与市场均价之前的偏差,也能够在一定程度上提高委托成交的效率,避免限价单长时间挂单不能成交的风险,但也会造成价格的波动将处于不可控的状态。
如果采用限价委托方式,合理的报价可以控制成本价格在一定范围内,防止市场价格的急剧变化带来的波动风险,但也存在一定的无法及时成交的风险。
理论上,价格差异幅度较大时,最科学合理的决策时下限价委托单,反之当价格幅度小时,限价委托单的期望收益会减少,投资者占优的策略是下市价单。
还有个问题就是,之前我们将一天划分成N个时间段,每个时间段都是市场均价成交,但是真实的交易中根本无法做到这一点,每个时间段内的实际成交价和市场均价都会有部分偏差。为了控制偏差的幅度,我们需要对每个时间段分配到的委托单进一步拆分。
当然,在隐蔽大规模交易方面仅仅依靠传统的算法交易还是不够的,这个过程可能还需要一些其他策略的配合,例如在细分的下单量上附加一些噪声、或者使用随机算法对大单进行拆分等。
测量交易成本的目的是评价过去的交易表现,从而对未来交易策略的改进提供定量依据。通常来讲,在算法交易中,交易成本被定义为实际执行价格与基准价格(如经常使用的VWAP)的差。
冲击成本和交易成本的平衡。算法交易对交易成本控制的最主要部分是冲击成本。对于一个容量有限的市场来说,无法避免由于市场流动性短缺所带来的大规模交易冲击成本。为了减少市场冲击,投资者需要将订单拆分为较小的部分,分步、逐渐地进行交易操作。但是,这样会使交易价格面临上涨(下跌)所带来的时间风险,以及订单不能够及时完成所带来的机会成本。相反,快速的交易可以减少这些成本,但会带来较大的冲击成本。因此对于交易速度的合理权衡,是很多算法交易策略需要致力完成的主要目标。
传统的VWAP算法的劣势,传统的VWAP算法是通过预测市场交易量分布在最小化市场冲击成本,同时使得整个交易获得VWAP算法的平均成交价格。但是这个算法还是有两个弊端,一个是这种策略属于完全被动,完全静态的策略,即在策略开始执行之前,已经完成了所有策略中的决策(何时下单,下单量多少),投资者只需要在设定的交易时间内执行策略即可,没有将市场的最新信息如成交量变化,价格变化等考虑在内。这样就使得这种策略不能更好的适应市场的变化,尤其是出现异常时的大幅波动时,因此就无法获得更好的交易价格。第二种是该策略完全依赖于对日内交易量分布的预测,如果预测不准确,出现了较大的偏差,那么该策略的执行效果也就会大幅度的降低。