算法交易其实主要是用在基金公司、券商量化比较多。例如我已经选好股,要大量买入,但是单凭交易员的操作海量单而且要完成买入100万股这些的操作是有点的困难的。那么这时候怎样解决拆单,防止冲击成本的问题呢?只有依靠算法交易了,现在市面上的流行算法交易有两种,第一种是VWAP,一种是TWAP。但是每种算法交易也有它的坏处,就是很容给人看出操作手法(如果策略比较简单的情况下),所以这种需要不断优化。

VWAP是Volume Weighted Average Price 的缩写,译为成交量加权平均价。VWAP策略即是一种拆分大额委托单,在约定时间段内分批执行,以期使得最终买入或卖出成交均价尽量接近该段时间内整个市场成交均价的算法交易策略。

VWAP策略的内容。VWAP策略包含宏观和微观两个层面的内容。宏观层面要解决如何拆分大额委托单的问题,需要投资者对股票的日内成交量做出预测,我们建议按两分钟的时间长度来拆分订单。微观层面要确定是用限价单还是市价单来发出交易指令,考虑到VWAP是一种被动跟踪市场均价的策略,我们建议采用市价委托方式,一方面有利于控制最终成交均价与市场均价之间的偏差,另一方面也可以提高委托成交的效率,避免限价单长时间挂单不能成交的风险。
             
           按照传统的VWAP策略,只是一种被动型的策略,而且在这个策略当中,最重要有以下的因素:历史成交量,未来的成交量预测、市场动态总成交量,拆单的时间段(就是总共要将总单拆分成多少单分别以怎样的时间频率交易)

 

宏观拆单VWAP
             假设投资者要在2011年10月10日当天以市场均价买入某只股票100万股,宏观策略可以告诉投资者如何拆分这100万股的委托单,在当天什么时间下多少单。市场通行的做法是采取等时长下单,例如,每5分钟下一笔单,这样原来的100万股委托单将被拆分成笔小额委托单,分时执行。

 

其中V为拆分前委托单的总量。很显然,当时,上式取最小值0,也就是说如果投资者能够准确预测市场每个时间段的成交量占当日成交量的比例,那么投资者按这个比例拆分委托单,分时成交,那么最后总的成交均价将于市场成交均价相当。因此,拆单策略的一个关键在于对日内成交量的预测。

 

但是这种方法的一个缺陷是,根据历史交易来预测未来的预测交易量。所以他们对VWAP预测成交量比例有了一个动态的改进,就是利用动态的成交量来做一个预测。例如说,根据前两分钟的成交量来预测未来两分钟的成交量。

这种策略有效降低成交成本。在检测VWAP策略是否有效的时候,他们引入了一个指标。绝对值平均值偏差,

 

除个别股票外,VWAP-D与市场均价的偏差都小于VWAP-B,这主要得益于其对日内成交量预测的实时动态调整。另外,股票市值越大,其股价与成交量的波动性也就越小,VWAP策略执行的效果也就越好,与市场均价的偏差也就越小。总体上来看,大盘股要好于中盘股,中盘股要好于小盘股,但之间的差距并不明显,这主要是由于我们的验证过程目前还未涉及资金量大小,如果考虑到资金的冲击成本,大盘股与小盘股之间的这种差距将会拉大、

对于一个策略来说,MAPE越小,策略效果越好,越大,卖出价格越高。
                  当然VWAP也可以设计成为主动策略而非被动。下次也会分享一下其他策略。

VWAP算法(成交量加权平均价)的更多相关文章

  1. 股票——成交量加权平均价VWAP

    成交量加权平均价是将多笔交易的价格按各自的成交量加权而算出的平均价,若是计算某一证券在某交易日的VWAP,将当日成交总值除以总成交量即可.VWAP可作为交易定价的一种方法,亦可作为衡量机构投资者或交易 ...

  2. 用numpy计算成交量加权平均价格(VWAP),并实现读写文件

    VWAP(Volume-Weighted Average Price,成交量加权平均价格)是一个非常重要的经济学量,它代表着金融资产的“平均”价格.某个价格的成交量越高,该价格所占的权重就越大.VWA ...

  3. 我是如何一步步编码完成万仓网ERP系统的(十三)库存 2.加权平均价

    https://www.cnblogs.com/smh188/p/11533668.html(我是如何一步步编码完成万仓网ERP系统的(一)系统架构) https://www.cnblogs.com/ ...

  4. 负载均衡算法WeightedRoundRobin(加权轮询)简介及算法实现

    Nginx的负载均衡默认算法是加权轮询算法,本文简单介绍算法的逻辑,并给出算法的Java实现版本. 本文参考了Nginx的负载均衡 - 加权轮询 (Weighted Round Robin).     ...

  5. 负载均衡算法: 简单轮询算法, 平滑加权轮询, 一致性hash算法, 随机轮询, 加权随机轮询, 最小活跃数算法(基于dubbo) java代码实现

    直接上干活 /** * @version 1.0.0 * @@menu <p> * @date 2020/11/17 16:28 */ public class LoadBlance { ...

  6. 量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python)(转)

    量化交易中VWAP/TWAP算法的基本原理和简单源码实现(C++和python) 原文地址:http://blog.csdn.net/u012234115/article/details/728300 ...

  7. 数据分析侠A的成长故事

    数据分析侠A的成长故事 面包君  同学A:22岁,男,大四准备实习,计算机专业,迷茫期 作为一个很普通的即将迈入职场的他来说,看到周边的同学都找了技术开发的岗位,顿觉自己很迷茫,因为自己不是那么喜欢钻 ...

  8. python的random模块及加权随机算法的python实现

    random是用于生成随机数的,我们可以利用它随机生成数字或者选择字符串. random.seed(x)改变随机数生成器的种子seed. 一般不必特别去设定seed,Python会自动选择seed. ...

  9. 算法练习_图的连通性问题(JAVA)

    一.问题 1.问题描述: 有n个点(1...n),输入整数对(8,9),表示8,9点之间存在相互的连接关系. 动态连通性问题--编写一段程序过滤掉所以无意义的整数对,即为在不破坏图连通性的前提下,以最 ...

随机推荐

  1. 使用SLF4J和LOGBACK (一 : 基本使用)

    1.SLF4J是什么? slf4j是一个日志门面,它不是具体的日志实现框架,而是提供了通用的日志接口,按个人理解来说,是通过接口实现多态,来满足应用在不同日志框架间切换的需求. 例如在程序中我们需要记 ...

  2. shelve模块(超级好用~!)

    ''' python中的shelve模块,可以提供一些简单的数据操作 他和python中的dbm很相似. 区别如下: 都是以键值对的形式保存数据,不过在shelve模块中, key必须为字符串,而值可 ...

  3. 非常漂亮js动态球型云标签特效代码

    <%@ page contentType="text/html;charset=UTF-8" language="java" import="j ...

  4. 在linux下使用debugfs恢复rm删除的文件

    原理主要是删除的文件并没有实际上从硬盘上摸去,只是inode索引删除了相关的信息,因此只要找到刚删除文件的block上,就可以恢复已经删除的文件. 以下方法在ext3的文件系统上测试通过,ext2的没 ...

  5. 详解华为交换机iStack特性

    iStack特性的产品支持 iStack也就是我们平时所说的“堆叠”,但是华为交换机的iStack功能与其他厂商的交换机堆叠功能相比又有许多不同.在最新的Sx700大系中,只有S2700.S3700. ...

  6. Ceph在OpenStack中的地位

    对Ceph在OpenStack中的价值进行简要介绍,并且对Ceph和Swift进行对比. 对于一个IaaS系统,涉及到存储的部分主要是块存储服务模块.对象存储服务模块.镜像管理模块和计算服务模块.具体 ...

  7. 排除maven jar冲突 maven tomcat插件启动报错 filter转换异常

    最近在搞一个ssm+shiro的整合 用的maven tomcat插件 启动的时候报错,提示 maven org.springframework.web.filter.CharacterEncodin ...

  8. 【转】JAVA 并发性和多线程 -- 读感 (二 线程间通讯,共享内存的机制)

    原文地址:https://www.cnblogs.com/edenpans/p/6020113.html 参考文章:http://ifeve.com/java-concurrency-thread-d ...

  9. Tkinter Frame(框架)

       Tkinter Frame(框架): 框架构件在某种友好的方式进行分组和组织的其他部件的过程中是非常重要的.它就像一个容器,这是负责安排其他部件的位置   框架构件在某种友好的方式进行分组和组织 ...

  10. Linux配置Oracle 11g自动启动

    http://www.cnblogs.com/edwardcmh/archive/2012/05/11/2495671.html 安装完毕Oracle 11g每次都得手动启动 | 停止数据库(dbst ...