经典的量化交易算法

经典的量化交易算法作者:徐Jebs来源:知乎加权平均价格算法(VMAP):以每一次交易的成交量为权重,一段时间内成交价格的加权平均值。该策略即利用历史成交量数据,将大段时间内的订单分割,成为动态发生的较小订单,目的是用接近成交量加权平均价格成交,从而以均价获利。该策略理论是以低于VWAP的价格买入或在以高于VMAP的价格卖出,则为好的交易。如图,在低于前一分钟的vmap时买入,高于…

大家好,又见面了,我是你们的朋友全栈君。

作者:徐Jebs             来源:知乎

加权平均价格算法(VMAP):以每一次交易的成交量为权重,一段时间内成交价格的加权平均值。该策略即利用历史成交量数据,将大段时间内的订单分割,成为动态发生的较小订单,目的是用接近成交量加权平均价格成交,从而以均价获利。该策略理论是以低于VWAP的价格买入或在以高于VMAP的价格卖出,则为好的交易。

如图,在低于前一分钟的vmap时买入,高于前一分钟vmap卖出。不考虑其他因素,这样的频繁交易产生利润也较为可观。

经典的量化交易算法

时间加权平均价格(TWAP):本算法与VMAP很相像,计算定单在提交之时至获得执行之间的时间加权平均价格。平均价格是指输入定单之时至市场收盘期间计算的平均价格,且该定单只有在条件被满足的情况下才会被执行。此方法可以应对成本冲击,拆分大额委托单,使得交易均价跟踪TWAP。目的是为了减小对市场的一次性冲击,如果一次的冲击太大,对下一次交易的成本必然是会产生影响。

另一方面,真实市场的成交量是在波动变化的,将所有的订单均匀分配到每个节点上显然是不够合理的。因为,建立了基于成交量变动预测的VWAP模型。不过,由于TWAP操作和理解起来非常简单,因此其对于流动性较好的市场和订单规模较小的交易仍然较为适用。

经典的量化交易算法

成交量加权平均价格算法(VWAP):基于成交量变动预测的模型,同样在做很多模型时,都以其为基础,指的是一段时间内证券价格按成交量加权的平均值,其中Pricet和Volumet分别是某个时点上证券的成交价格和成交量。

经典的量化交易算法

从TE的定义公式式可以看出两点:

(1)跟踪误差与成交量预测的关系非常紧密,预测结果的好坏直接影响到VWAP算法交易的结果。

(2)当某段时间的VPt超过市场真实VMt时,有可能造成订单无法全部成交,这样就会造成算法交易执行效率的下降,因此,更为常用的是被称为“带反馈的”VWAP算法交易策略。

所谓带反馈的VWAP算法交易策略,是指在原有VWAP跟踪的基础之上,将每个时段未成交的订单按比例分摊至后面的时间段中,这样可以有效提高成交比率。之前所讨论的TWAP策略也可以采用该类反馈技术,使执行效率大幅提升。

成交量加权平均价格优化算法(MVWAP):常见的一种对WMAP的改进策略是根据市场实时价格和VWAP市场的关系,对下单量的大小进行调整与控制,因此统一将这一类算法称为MVWAP。

当市场实时价格小于此时的VWAP市场时,在原有计划交易量的基础上进行放大,如果能够将放大的部分成交或部分成交,则有助于降低VWAP成交;反之,当市场实时价格大于此时的VWAP市场时,在原有计划交易量的基础上进行缩减,也有助于降低VWAP成交,从而达到控制交易成本的目的。

在MVWAP策略中,除了成交量的预测方式之外(通常也是按照历史成交量加权平均进行预测),同样很重要的是对于交易量放大或减小的定量控制。一种简单的办法是在市场实时价格低于或高于VWAP市场时,将下一时段的下单量按固定比例放大或缩小,那么这个比例参数就存在一个最优解的问题。如果考虑得更为复杂和细致,这个比例还可以是一个随价格偏差(市场实时价格与VWAP市场之差)变化的函数。

成交量固定百分比算法(VP):与VWAP策略类似,都是跟踪市场真实成交量的变化,从而制定相应的下单策略。所不同的是,VWAP是在确定某个交易日需要成交数量或成交金额的基础上,对该订单进行拆分交易;而VP则是确定一个固定的跟踪比例,根据市场真实的分段成交量,按照该固定比例进行下单。

例如,将某个交易日均分为48段,每段5分钟。根据预测成交量,按照10%的固定比例进行下单。这样的策略所带来的结果是,当所需要成交的订单金额较小时,可能会在交易时间结束之前就完成所有交易,从而造成对市场均价跟踪偏离的风险。该策略适用于规模较大、计划多个交易日完成的订单交易,此时若能选择合适的固定百分比,使得成交能够有效完成,则VP是一种可以较好跟踪市场均价的算法交易策略。

执行落差交易策略(IS):是以执行落差为决策基础的一种算法交易策略。执行落差被定义为目标交易资产组合与实际成交资产组合在交易金额上的差异。IS策略的目标是执行落差最小化,或者说是在综合考虑冲击成本和市场风险后,通过需找寻找最优解来跟踪价格基准的一种策略。假设目标交易价格为P0,实际交易价格为P,则IS策略的最终目标为

为了达到这个目的,IS的基本流程如下:

(1)确定目标交易价格P0,作为交易基准,这个价格可以是到达价、开盘价、一日收盘价等。再设定一个容忍价格Pr,作为交易的边界条件。

(2)当市场实际价格低于或高于P0时,按一定的策略下单进行买入或卖出交易。

(3)当市场实际价格高于或低于Pr时,不进行买入或卖出交易。

(4)当市场实际价格处于P0和Pr之间时,可以按照介于积极和消极交易策略之的策略进行交易。

使用IS的优点包括:

(1)IS策略较为全面地分析了交易成本的各个部分,在冲击成本、时间风险、价格增长等因素之间取得了较好的平衡,更加符合最优交易操作的目标。

(2)IS策略根据目标价格对交易过程的优化,更加符合投资决策的过程。

(3)IS策略多用于组合交易,而对于组合交易来说该算法能够利用交易清单上股票间的相关性更好地控制风险。

Step算法:实际是一种对价格进行分层成交的策略,目标是在买入(卖出)交易中尽可能地压低(提升)成交均价。简单来讲,Step就是在不同的价格区间进行不同成交量比例的配臵。例如在VWAP或TWAP策略中,通常按照预测成交量的一定比例k进行实际下单。假设在开市前预计要买入某支前收盘价为20元的股票,则对其进行成交量分层设定:

经典的量化交易算法

开盘后在VWAP或TWAP的基础之上,当价格在19至21元浮动时,按预测成交量的10%进行成交;当价格超过21元时则不做任何交易;当价格小于等于19元时,按预测成交量的30%买入。

更为激进的一种是称为Aggressive Step的策略,这种策略在价格低于最优交易区域边界时会将所有市场上的订单统统吃掉。

具体来说,Aggressive Step策略同样在买入(卖出)交易中进行分层,例如在上述交易方案中,前两个区域的策略不变,当价格小于等于19元时,不管市价跌到多少,都按19元的限价报单成交,直至价格回升至19元以上或拟交易订单全部完成。不过这种策略不容易对交易量进行控制,并且容易造成价格异动,增加证券交易的隐性成本。

Sniffers算法:Sniffers搜寻者算法是一类策略的统称。通常该策略会开发一些较为复杂的算法去监控盘口和成交数据,以发现市场参与者中是否存在其他的算法交易者。

例如通过少量的试探性下单,结合一定的算法和成交情况去判断有没有订单是通过算法交易而成交的。如果有其他的算法交易参与者,则通过计算判断,跟随这些算法交易或通过相反的操作,能否以较大的概率获取绝对收益。如果获利概率较大,则通过有针对性的算法交易策略进行下单。

该策略与传统的算法交易不同,不以执行订单为主要目的,而是以获利为主,属于算法交易中较为高级的一种策略,适用于算法交易已经大规模普及的市场。我国市场无论是从交易制度,还是从算法交易的普及程度来看,目前都还暂时难以运用该类策略。

盘口策略:国外目前很多较为高级的算法交易策略对数据的要求都已不仅仅限于成交量和成交价两个指标,而更多关注的是市场微观结构,特别是盘口中出现的一些重要信息。

举一个最简单的算法例子,称之为盯住盘口策略(PEG),该策略随时根据目标股票的盘口情况进行下单。PEG首先会实时监测盘口中的最低卖出价格或最高买入价格,并按照一定的策略(或比例)下达买入限价指令或卖出限价指令。

如果交易指令未能完成,并且市场价格开始偏离限价指令的价格,则对上述订单进行撤单,并且根据最新的盘口信息重新发出相应的限价指令;如果交易指令全部完成,继续按照上述策略(比例)发出买入限价指令或卖出限价指令,直至订单全部完成或交易时间结束。

该策略的优点在于对市场的冲击可以做出较好的定量控制,而缺点在于跟踪市场均价容易出现偏离,并且每个交易日的成交量不可控。

W&P策略:Workand Pounce策略,简称W&P策略,是在一般算法交易策略的基础之上,通过市场盘口及流动性情况对算法交易进行进一步优化的一种策略。

具体来说,当执行某种算法交易策略时,系统会将拆分后的订单在一定的时间按一定的价格进行挂单。此时如果跟踪盘口数据,会发现所提交的下单价格有可能是主动成交(例如在VWAP策略中就有出现这种机会)。在这种情况下,可以观察相应价格的盘口是否具有较大数额的挂单,即观察市场在一定的价格范围内是否有多余的流动性存在。如果存在这种流动性,则可以放大交易数量,将市场流动性横扫一空,或仅留存少量残余流动性。

W&P策略适合于有大量订单需要在短期内完成的情况,使用该策略能够有效提高执行效率,但同样对于价格的跟踪可能将产生相对较大的偏差,增加了交易成本的不确定性。

Hidden策略:Hidden隐藏交易策略实际上是一种主动成交型算法交易策略。对于传统的TWAP、VWAP等策略,由于下单时往往是按市价下单,因此可能会夹杂有主动成交和被动成交两种交易。

但是当被动挂单和撤单次数较多的时候,特别是在较为发达的金融市场中,算法交易者甚至算法交易策略本身容易被其他竞争对手观察和监测到,从而使得竞争对手可以针对算法本身开发出具有针对性的策略。

Hidden策略就是这样一种反侦察的算法交易策略——当市场盘口中出现了希望成交价位的委托单,并且达到一定数量时,则主动出击将委托单吃掉;否则伺机而动,直到满足条件的机会出现为止。

总体上来说,Hidden策略也是一种对原有算法交易策略进行再优化的策略,其主要运用在欧美等较为发达的金融市场上,在隐藏自己的行动的同时也付出一部分跟踪市场均价准确性的代价。

Guerrilla游击队策略:也是在一些原有算法交易策略的基础之上进行进一步优化的一种策略,其目的同 Hidden策略一样,都是为了隐藏自己的策略和交易行为。

不同的是,Hidden是在主、被动成交及下单数量方面进行考虑,而Guerrilla的出发点仅仅是下单数量。通过一定的随机算法,Guerrilla策略会将每个时段应该提交的订单数量进一步打散成为不同尺寸的部分,从而使得其他竞争对手在交易明细中不容易看出算法交易者和相应算法的存在。

其他策略:除了上述介绍的一些常用算法交易策略以外,在国外市场上目前还存在非常多的策略,例如仅VWAP一种基础的算法交易策略就可以衍生出几十种甚至上百种策略;再例如在国外做市商制度的存在下,市场上还有一批基于该交易制度的常用算法交易策略,如Guaranteed VWAP、SOR策略等。

———————————————————————————-

推荐阅读:

1.一个量化策略师的自白(好文强烈推荐)

2.股票期货经典的量化交易策略都在这里了!(源码)

3.期货/股票数据大全查询(历史/实时/Tick/财务等)

4.当真躺着赚钱?量化交易的十大难题

5.从量化到高频交易,不可不读的五本书

6.如何有效的规避量化交易中的滑点?

 

 

 

 

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/153191.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • Ubuntu 18.04换国内源 中科大源 阿里源 163源 清华源

    Ubuntu 18.04换国内源 中科大源 阿里源 163源 清华源国内有很多Ubuntu的镜像源,包括阿里的、网易的,还有很多教育网的源,比如:清华源、中科大源。我们这里以中科大的源为例讲解如何修改Ubuntu18.04里面默认的源。编辑/etc/apt/sources.list文件,在文件最前面添加以下条目(操作前请做好相应备份):##中科大源debhttps://mirrors.ustc.edu.cn/ubuntu/bionic…

  • putty 报server unexpectedly closed network connection错误

    putty 报server unexpectedly closed network connection错误由于IP变了,再用putty访问组内的服务器时,竟然总是出错,报serverunexpectedlyclosednetworkconnection错误。查了下防火墙设置,原来里面指定了allow的IP端,真的是晕死了,改好,一试,果然OK了

    2022年10月20日
  • opencv人脸识别训练「建议收藏」

    opencv人脸识别训练「建议收藏」一开始我运用人脸库训练出一个xml文件,后来新增人脸时候需要将新人继续拿来训练,需要将训练的特征信息加在原来xml文件里面。如果程序不关闭是可以将新人特征信息加到xml文件里的。比如,原来的xml文件为face.xml;现在采集了一些人脸,需要将这些人脸的特征信息提取加入到face.cml;然后下次load这个face.xml进行人脸识别。现在就是怎么将这些人脸加入原来的xml文件呢?这个是全

  • ios-anchorPoint、position理解[通俗易懂]

    ios-anchorPoint、position理解[通俗易懂]anchorPoint(锚点)是layer的一个属性,下面我们来看看其对view的影响,本文主要通过图片方式展现:锚点用单位坐标来描述也就是图层的相对坐标。在苹果文档中说明左下是(0,0),右上是(1,1),经过试验这个是错的,实际上:图层左上角是{0,0},右下角是{1,1},取值范围不限。单位坐标的意思是指以视图长款为单位来计算,坐标系展示如下:默认一个视图的锚

  • 【转载】.NET 框架浅析

    【转载】.NET 框架浅析

    2021年11月20日
  • 栈与队列的区别_栈和队列

    栈与队列的区别_栈和队列1、队列先进先出,栈先进后出。2、对插入和删除操作的"限定"不同。栈是限定只能在表的一端进行插入和删除操作的线性表。   队列是限定只能在表的一端进行插入和在另一端进行删除操作的线性表。  3、遍历数据速度不同。栈只能从头部取数据,也就最先放入的需要遍历整个栈最后才能取出来,而且在遍历数据的时候还得为数据开辟临时空间,保持数据在遍历前的一致性。队列则不同,它基于地址指针…

    2022年10月27日

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号