为什么要引入TWAP和 VWAP?
为了评估策略的资金容量,我们对M.trade模块里买入点和卖出点这两个参数进行了更丰富的扩展,支持了策略能够按更丰富的算法交易价格(WAP)进行撮合。
如果资金是10万的话,那么在开盘买入基本上没有什么问题,如果资金量是300万、或者1000万呢?开盘如果只买入几只股票的话,本身的交易行为就会改变市场状态,冲击成本巨大。因此我们支持了算法交易里TWAP和VWAP。
TWAP (Time Weighted Average Price),时间加权平均价格算法,是一种最简单的传统算法交易策略。TWAP模型设计的目的是使交易对市场影响减小的同时提供一个较低的平均成交价格,从而达到减小交易成本的目的。在分时成交量无法准确估计的情况下,该模型可以较好地实现算法交易的基本目的。
VWAP (Volume Weighted Average Price), 成交量加权平均价格。VWAP策略即是一种拆分大额委托单,在约定时间段内分批执行,以期使得最终买入或卖出成交均价尽量接近该段时间内整个市场成交均价的算法交易策略。
上述两种方式是最常用的算法交易执行方式。其实在我们实际交易的过程中也会发现,如果是一笔较大的订单,我们肯定不会直接全部下单,而是把订单进行拆分,逐渐成交。因此如果我们在回测的过程中也可以使用TWAP和VWAP的价格进行撮合,最直接的目的就是能够检验我们策略的资金容量,如果按照TWAP和VWAP进行撮合以后,收益率变动不大,那我们对策略的资金容量会有很大信心,即策略不再是只能管理几十万,管理上百万、上千万是没有问题的。
我们在stockranker模板策略的基础上,用多组WAP价格进行回测,并和默认回测价格做了一个对比,回测结果如下表所示:
买点 | 卖点 | 夏普比率 | 年化收益 | 总收益 | 最大回撤 |
---|---|---|---|---|---|
open | close | 1.91 | 108.29% | 314.1% | 47.39% |
twap_1 | twap_8 | 1.87 | 110.21% | 321.51% | 46.48% |
twap_2 | twap_7 | 1.7 | 97.49% | 273.53% | 45.07% |
twap_3 | twap_6 | 1.78 | 101.26% | 287.48% | 43.16% |
twap_4 | twap_5 | 1.83 | 98.75% | 278.14% | 43.11% |
twap_9 | twap_10 | 1.72 | 86.66% | 234.89% | 40.13% |
vwap_1 | vwap_8 | 1.87 | 110.77% | 323.69% | 45.46 |