1,交易成本:
交易成本分成两类,一类是显性成本,包括佣金(包括券商佣金,交易经手费和监管费),过户费(上交所收取),印花税(国家收取)。这部分费用具有相对刚性,类似于固定成本,难以通过主动管理改变,因为这些费用都是一定要收的。一类叫做隐含成本,包含买卖的价差、冲击成本、择时成本、机会成本,这些成本类似于可变的成本,我们可以通过人为的干预,或者交易的方法去进行管理或者是控制。
2,名词解释:
冲击成本:我们发出的委托或者是指令导致股票价格变动,向我们不利的方向变动,直观来说就是我们例如去购买某一只股票,比如我们买100万股,如果我们直接下一笔100万股的委托,那我们将对市场造成很大的冲击,像这样的我们交易导致成交价格变化所引起的成本,我们叫做冲击成本。
择时成本,我有可能进行拆单,我拆单的过程中,原来的1分钟变成一个小时,一方面有可能导致我的股票的价格可能会自行的有些变动,这些价格变动的过程中,股票价格有可能往我们不利的方向变动,那我的建仓成本就上升了,这就是择时成本。
机会成本,比如我买100万股,我只买了10万股,还有90万股么有成交,那么价格上涨的话,那么没有成交的90万股,那么就损失了上涨的机会,那么这就是机会成本。
如果所示:
择时成本和机会成本我们统称为交易风险,这个冲击成本随着建仓的时间或者说我们拆单拆的越细,随着建仓时间的推移,建仓时间拉长,我的建仓成本呈下降的趋势,这个交易风险随着时间的拉长,我的建仓交易的风险越来越大,我们必须在交易风险和冲击成本之间有一个取舍,交易风险和冲击成本加总起来我们叫做交易成本,其实总的交易成本随着建仓时间的增长一般是先下降,然后上升。
3,什么是算法交易
我们可以给算法交易一个比较明确的定义,算法交易是什么呢?根据一些特定的交易计划,我们根据计算机来制定下单的时机,下单的价格还有下单的数量。像一些大额的交易拆分成小额的交易,然后提高订单的执行效率和隐蔽性,可以一方面降低对市场的冲击的 成本,另外一方面也可以减少交易的风险,像这类的方法我们就称之为算法。
4,算法交易目的
我们通过一些算法交易,目的是寻找一些建仓成本比较低的点位。算法的目标主要有:(1)交易成本最小化,如降低市场冲击成本;(2)成本均价贴近目标价格,如市场成交均价;(3)隐藏下单意图;(4)其他非技术原因,如节约人力成本、提高下单效率、保障指令准确实现等。
投资者之所以选择算法交易这一方式,也是基于其希望交易不会对市场产生太大冲击的目的,另一方面也希望交易不会因为时间的问题导致了价格变化成本增加。因此来说,算法交易研究的核心,是在平衡交易成本问题与交易风险问题的前提下,找出最为合适的方式来解决投资问题。
算法交易的目的就是找到如下图中的黄色线条与曲线的交点。
5,算法交易优劣势
相比于传统的人工交易,算法交易在多方面具备独有的优势。首先,算法交易能够最小化对市场造成的冲击,从而能减小交易中的成本。优秀的算法在设计之初就为了实现冲击成本和等待风险之间的平衡。其次,算法交易也能够提高交易的执行速度,借助于计算机的快速计算能力,算法交易下单具备更快的委托速度。相对于人工来说,算法交易的时间判断可以忽略,程序化的委托比人为的手动委托更容易成交到即时价格。第三,算法交易一方面能够较少人力成本,节省人力资源,另一方面也能避免掉人的非理性因素的干扰。通过计算机委托下单,能够减少传统方式上对交易员的人力投入,这样就能从根本根本上杜绝掉人的非理性因素影响,坚持始终如一的标准从而能获得更高的收益。再次,算法交易能保证执行复杂的交易和投资策略。相对于传统交易模式,程序化交易能更加精准的委托,更加细致地确定委托单的价格,时间以及数量。
劣势:
算法交易能够通过减少大额订单对市场造成的冲击,实现降低交易成本,控制交易风险的目的。另一方面,算法交易的策略实施所带来的频繁操作,会导致订单规模的变小以及撤单所占比例的加大,从而促使交易系统后台所处理的订单数量增加。因此也促使着开发新的交易系统后台(包括经纪商柜台系统以及交易所撮合系统),新平台要能够处理大量的客户订单流。
6,算法交易应用场景
1,私募机构、个人客户,账户建仓,批量买入;2,私募机构、个人客户、账户调仓,同时批量卖出、买入;3,上市公司,回购股份用于股权激励或员工持股计划;4,上市公司股东(如个人股东、PE公司)股份解禁,卖出;5,价值投资基金重仓单票。
7,算法交易产生
有这么几个因素,一个是电子化成交的发展,另外一个因素是美国市场最小报价从1/16或者1/32的美元调整到1美分,这样一方面改变了市场的微观结构,把最小价差一下缩小了7、8成,这样也遏制了做市商交易的优势逐步的丧失,整个市场的流动性有所下降,因为市场流动性下单,那对于建仓的市场的冲击成本有很大的上升,那对于上个世纪末的时候,美国的一些机构或者大的交易者开始研究算法交易,设法通过一些拆单的方法去降低建仓的成本。算法交易在欧美一些成熟的市场,占比还是比较大的。但在我们国内还有印度还是逐步成熟的市场,比例还是比较低。
一般来讲,新开发的算法交易的实现大致分为以下步骤,交易前利用市场上可获得的信息信息或数据进行预处理,算法交易的实盘运行和算法运行结束后对运行效果的综合研究。
8,算法交易分类
算法交易分为几类,一类是被动型的算法交易,比如说TWAP和VWAP还有VP(交易量参与度),基本上是根据历史数据进行分析,然后关注冲击成本。此外还有主动性的算法交易,在被动的算法上添加了一些主动调整,他会兼顾冲击成本和交易风险之间的关系,这里包括IS(执行差额算法),MVWAP,Market-At-Open,前两类算法主要关注降低冲击成本或者市场成本。而流动性算法是探查还有隐藏流动性,隐藏建仓意图,国外用的比较多,国内用到比较少。还有一类是综合型算法,目前在市场上占据主要地位的是被动型算法交易。此文介绍比较典型的TWAP和VWAP算法。
9,TWAP算法:
TWAP通过算法的拆分,使我的建仓成本和某段区间内的时间加权平均价格相吻合。理解还是比较简单的。指定时间段,100万股,比如接下去3个小时购买,每间隔10分钟买一次,3个小时可以建仓18次,总体的数量,除以18次,可以得出每一次交易的数量1000000/18 = 55555。通过拆分,每间隔10分钟发一笔委托,不同分割节点均匀分拆,和市场实际的成交情况没关系的。建仓速率是匀速的。有些大的机构会加一些随机的因素在里面,均匀的拆分,很容易发现,这样很可能暴露意图,每次数量加一个随机数,这样能隐藏我们建仓的目的,多了一些不确定性,比如恒生PTrade每笔委托时间在某个范围内随机,以及每笔委托数量在某个范围内随机。两个局限性:市场成交量是波动变化的,均匀分配固定的数量是不够合理的,盘中冲击比较大。如果订单比较大,每次的数量数量还是比较大的。优点就是比较简单,操作上也比较简单,这种算法就适用于流动性比较好的或者说规模比较小的交易。为了改进局限性,市场是也退出了VWAP算法。
10,VWAP算法:
计算历史每一段时间平均历史成交量,比如说过去20天,每一分钟的分布会计算出来,这样我们可以得到过去20天,每分钟的成交量是多少。分布可以画出来。每一个时间段的成交量比例在这段时间内总成交量的占比,这个占比作为我这时点的成交量拆分的比例。每时刻发出的委托数量是基于历史的平均成交量,与当前市场价格、成交量无关。也有一些改进的方式,有一个改进的算法,根据市场最新价格和实时VWAp之间关系可以调整下单的数量,AIM算法,当市场最新价小于实时的VWAP的时候,他就放大交易量,最新价>实时VWAP,缩小。带反馈机制的VWAP,就是根据成交情况,比如市价单,就成交了,比如限价单,那就是对于一些没有成交的股票,那他可以将没有成交的股票分摊到后面的时间段。
VWAP算法的核心即时最小化与市场实时VWAP之间的差异。使得真实交易的执行价格尽可能的接近VWAP基准价格,从而较少市场冲击成本。因此VWAP策略一般不直接对交易的冲击成本建模,而是注重日内交易量分布的预测。
具体来讲,如果投资者选择在一天的交易时间运行VWAP策略,并将该交易日的交易时间划分成N个相等时间长度的间隔,即分N次进行股票的买入卖出操作,假定个时间间隔内对应的委托单成交价格为即时的市场均价,对应成交数量为,则该投资者当天的VWAP成交均价为:
其中,表示第i次价格按照成交量加权时的权重。VWAP算法的表现方式是对大额的委托单进行拆分,在预先设定好的的时间段里面分批分量的下单,以期达到最终买入或卖出时的成交均价VWAP尽可能的接近该时间内整个市场的VWAP这一基准。
一般在交易软件上,算法交易包括几个参数,股票代码,数量,策略执行时间,买卖方向,买卖价位,下单间隔,自动撤补等。比如在10:10-11:10之间买一价买入60000(浦发银行)10万股,下单间隔为5分钟,可以允许在60秒内未成交的委托自动撤补。
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算法的平均成交价格。但是这个算法还是有两个弊端,一个是这种策略属于完全被动,完全静态的策略,即在策略开始执行之前,已经完成了所有策略中的决策(何时下单,下单量多少),投资者只需要在设定的交易时间内执行策略即可,没有将市场的最新信息如成交量变化,价格变化等考虑在内。这样就使得这种策略不能更好的适应市场的变化,尤其是出现异常时的大幅波动时,因此就无法获得更好的交易价格。第二种是该策略完全依赖于对日内交易量分布的预测,如果预测不准确,出现了较大的偏差,那么该策略的执行效果也就会大幅度的降低。
附录:
价格冲击成本有两种计算方法,一种是绝对值计算法,一种是相对值计算法,比如说vwap算法,就是跟市场成交量的vwap价格做比较。
绝对冲击成本计算方法:设分别表示股票在时刻限价订单簿中的多个卖出价格,且,分别表示所对应的数量;分别表示股票i在t时刻限价订单簿中的多个买入价格,其中,分别表示所对应的数量,则在t时刻买入Q金额股票的价格冲击指数为:
其中:,(若K不存在,则用空值表示)
卖出Q金额股票i的价格冲击指数为:
其中,( 若K不存在,则用空值表示)
相对冲击成本计算方法:
来源:
《改进型成交量预测的VWAP算法交易策略动态模型设计与实证研究》
《国信算法交易文档》
《上海证券交易所市场质量报告》