DRL-VWAP算法

news/2024/6/17 21:04:52 标签: 算法, 金融

在这里插入图片描述

摘要

在量化策略的交易端,为了更好的扩大策略的资金容量必须要考虑策略冲击陈本的降低。本文梳理了传统 VWAP 存在的诸多弊端,主要在于对于日内交易信息的缺失与忽略市场行情的影响。本文梳理了传统VWAP 算法存在的主要弊端,并改写了传统 VWAP 算法的公式,运用 DRL 的方式综合考虑交易量份额、行情信息、个股信息之间的互动,给出最优的子区间成交份额不仅要求策略的VWAP 买入价格与市场 VWAP 价格相一致,而且还要使得买入的总体价格处于目标交易区间的较低位置

在面对策略执行中的冲击成本问题,本文提出了DRL-VWAP算法,在传统 VWAP 算法的基础上,引入了动态冲击成本控制与冲击成本交易成本权衡机制,以更好实现对市场 VWAP 的跟踪与最终策略交易成本的降低。

意义

在实盘交易中,当资金量增大时冲击成本是一个非常现实的问题,可能会制约策略的资金量与收益能力。 VWAP 策略是缓解冲击成本的传统办法,但是仍有机动性不强以及无法合理降低交易成本的问题。本文把VWAP 策略转换为一类动态规划与控制的问题,企图再次运用强化学习方法做出改进,以求降低强化学习等一系列机器中高频算法交易过程中因为资金容量增大而产生的冲击成本的问题,在实盘交易过程中具有重要意义。

冲击成本

冲击成本,又称价格冲击成本、流动性成本,是指一定数量的委托订单迅速成交时对价格的影响,是套利成本套利成败与否的关键因素之一。更通俗的说法就是在迅速大规模地买进或者卖出证券,未能按照预定价位成交,从而多付出的成本就被称作冲击成本,一般在大机构中容易出现冲击成本过高的问题。举例而言,机构投资者看好了A股市场的某个标的资产,希望尽快建仓入场,但是市面上的以锚定价格挂的卖单并不多(当资金量足够大的时候,在一个单一价位的卖单供不应求几乎是必然的)。因此为了达到预期的仓位,大机构不得不承受更高价格的卖单完成全部的成交,由此比预期的建仓成本高的部分就是冲击成本。随着量化策略在市场上的资金规模越来越大,冲击成本也成了量化投资机构不得不考虑的严峻问题。原因在于,一量化交易策略在扩大资金容量的过程中非常容易造成实盘的买入成本大于预期成本,造成策略失效;二量化交易策略偏向相对高频的自动化交易把我稍纵即逝的交易机会,对交易的速度有着更高的要求,与此同时,瞬时的卖单数量可能小于买单时那么冲击成本就不可避免,因此许多量化交易策略必须评估策略执行时可能的冲击成本同时在收益与冲击成本做平衡。

简言之,一个直观的多头方的例子,当以约定价格期望成交的买单量大于市场上该价格总共所有的买单量时,期望买入成交量的剩余部分如果还期望成交那么就不再可能以该价格成交了,而往往是高于期望价格的价格,此时的多出的价差就是多头方需要额外支付的买入成本,也称作冲击成本。因此冲击成本和策略的资金量以及交易的频率息息相关

VWAP算法

VWAP(交易量加权平均价格)是指在一段时间内的证券的均价,也就是总的成交金额除以成交量。VWAP 代表的是证券在一个时间段内的市场平均价格。

VWAP 算法(成交量加权)是在量化投资领域的交易端是最早也是最经典的拆单算法,其基本思想就是通过将较大的交易单拆分成交小的交易单逐笔交易匹配市场真实的成交量分布,从而减少冲击成本,获得和市场一直的 VWAP 价格。以买入交易为例,其主要原理是,通过将大单分解为小单逐笔买入的方式,尽量使得资产的买入的VWAP 与市场的VWAP 之间的偏差最小,不会给交易带来额外的冲击成本。传统的VWAP算法,通过移动平均方法预测模型交易日的成交量分布,不考虑资产当日的盘内情况与市场整体情况,另外在买入算法的研究上,除了尽量降低VWAP 偏差,还可以加入一些交易增强的手段,进一步压低交易成本,因此传统的VWAP 算法也亟需改进来进一步适应更高频率与更大金额的交易。

  • VWAP 价格(以开盘后半小时的成交量加权为例)与开盘价格虽然单日会有偏离波动,但是纵观全年合计下来,这样的偏离实际上是非常小的

决定因素

一是日内成交量分布的预测,二是日内VWAP 价格的预测,两者都决定了最终的买入 VWAP 是否能够与市场VWAP偏离较小。

日内成交量分布的预测

  • 一个是拆分法,将影响日内成交量的因素分成共性与单独分别做预测。将日内的交易量分解为两个部分平均水平与特殊波动,平均水平代表了来自市场整体成交量波动给资产成交量带来的基准水平,而特殊波动反映了个股的自身因素带来的成交量波动,于是使用了 ARMA(1,1)和 SETAR模型分别对两部分进行预测,最终在 CAC40指数上应用,比传统 VWAP 策略减少了 7%的跟踪误差
  • 第二类,是预测模型上的创新,Alvim 使用 15 分钟成交量结合了支持向量机(SVM)以及偏最小二乘(PLS)方法预测日内成交量在开盘交易降低了 17.4%收盘交易降低了 45.66%的与传统 VWAP 相比的跟踪误差[22]。季怡轩等(2021)提出了局部波动模型,在处理高频数据与交易量较低波动的情形下具有一定优势基于模型的改进的方法比较少,同时也少有应用深度强化学习的方法的改进VWAP[23].

现有的缺点(价格不变性,日内静态性)

  • 传统VVWAP 假定了子区间的交易价格是不变的。价格是十分难以预测的因素,尤其是日内的时段价格,本身就具有较大的噪音,较难被准确预测。因此传统的方法往往是简单而奏效的,就使用时段左侧的时刻 VWAP 价格。但是如果换一个角度去考虑价格,或许可以从交易增强的方式给出合理的交易操作。比如,时段的涨跌趋势往往比瞬时的价格点更好预测。后文会围绕这点给出传统 VWAP 的优化算法
  • 其次,传统 VWAP 对于成交量的分布的预测是在日内的静态,换言之,在交易日之前,交易时日的成交量分布预测与划分依据被设计好了,所有的交易量预测只是基于了前几日的区间成交量信息,而忽视了交易当日实时的日内走势与市场的整体环境。这使得传统 VWAP 算法并不够灵活,不能够依照当日的个股与市场环境调整成交量的分布。这样的成交量分布预测很难保证和市场一致。因此,必须运用日内的个股与市场信息动态地考虑市场子区间成交量分布的预测,这也是后文的改进算法提出的出发点。

综上所述,现有的 VWAP 算法改进方法大多没有考虑交易当日的盘口情况,另外也少有应用在金融时间序列中预测效果较好的深度学习,更没有能够体现市场与个体间交互的强化学习方法。和先前大多数研究,市场和个股自身特征都是影响其交易日 VWAP 价格的重要因素,

步骤

  • 第一步,依据需要完成交易的总区间划分子区间;
  • 第二步,预测交易资产在每个子区间内的市场交易量分布;
  • 第三步,依据成交量不同子区间的不同分布分配每个子区间的订单数量:
  • 第四步,在每个交易的子区间执行交易单。

具体修改

本文针对传统VWAP在交易机动性,预测成交量分布准确性中的弊端结合了 DRL 算法提出了动态的 DRL-VWAP 算法

1、不仅利用了交易当日的实时市场与个股信息帮助判断交易子区间成交量份额,追踪市场 VWAP 价格,控制冲击成本,

  • 依据实时的市场整体环境与个股走势,给出下个子区间最优的成交量份额,由此生成动态预测的子区间成交量。

2、还引入了价差惩罚,尽量在价格下降趋势的子区间分配较多成交量,达到交易增强、控制买入成本的目的

  • 引入子区间两端价格的差乘上策略分配在该区间的子单成交额做惩罚项,旨在帮助最优化方向不仅向着策略 VWAP 和市场 VWAP 差最小,还要带有价格方向判断的因素,即尽量在模型判断价格具有下降趋势的子区间内分配更多的成交量

目标

因为和一般的策略追求策略 VWAP 价格(VWAP_s)和市场 VWAP 价格(VWAP_m)的最小偏差不同,本文的动态 VWAP 策略还考虑交易增强部分,因此,最终的成本评定指标不仅要考虑策略 VWAP 价格和市场 VWAP 价格的绝对偏差,还需要考虑买入区间的最终买入总成本,也就是是否可以以低于市场VWAP 的价格买入该资产

  • 最终买入总成本上本文使用买入总区间的实际买入交易金额代表总共的买入成本,因为本文改进的策略可能会在价格下行的时刻分配比传统 VWAP算法更多的成交量,所以即便 VWAP 的偏差较大但是交易的最终成本会最终下降

具体实现

特别的是,DRL-VWAP 算法使用的是在线学习模式,具体而言就是将每日开盘后的 30 分钟分成3 个子时间段,每个时间段 10 分钟,在交易当日,逐段的预测每个子区间的成交量比例,在预测第 N+1 个子区间时,第 N 个子区间的市场环境特征与个股特征也参与了新的训练与预测中。

控制方程对比

传统的VWAP方程
在这里插入图片描述
在这里插入图片描述


http://www.niftyadmin.cn/n/5473204.html

相关文章

vue项目使用element ui

目录 1、创建一个vue项目 2、找到element官网,点击指南,找到安装栏 3、 找到使用包管理器,复制命令 4、在main.js中引入element 5、使用element ui 6、找到App.vue,导入Button.vue文件,保存启动项目 1、创建一个vu…

《图解Vue3.0》- 调试

如何对vue3项目进行调试 调试是开发过程中必备的一项技能,掌握了这项技能,可以很好的定义bug所在。一般在开发vue3项目时,有三种方式。 代码中添加debugger;使用浏览器调试:sourcemap需启用vs code 调试:先开启node服…

opencv+python(通道的分离与合并)笔记

分割图像通道: 通过函数mvsplit(img);mv返回的通道; RGB有3个通道;灰度图只有一个通道; b,g,r cv2.split(img)cv2.imshow("b",b)#通道bcv2.imshow("g",g)#通道gcv2.imshow("r",r)#通道…

计算机网络练习-计算机网络概述与性能指标

计算机网络概述 ----------------------------------------------------------------------------------------------------------------------------- 1. 计算机网络最据本的功能的是( )。 1,差错控制 Ⅱ.路由选择 Ⅲ,分布式处理 IV.传输控制 …

SystemC入门之测试平台编写完整示例:带同步输出的多路选择器

内容&#xff1a;SystemC入门书中的简单测试平台编写示例。 模块文件编写 带锁存输出的4选1多路器模型。输出在信号clock的正跳变沿时刻被锁存。 sync_mux41.h文件 #include <systemc.h>SC_MODULE(sync_mux41) {sc_in<bool> clock, reset;sc_in<sc_uint<…

在单交换机局域网中,不同网段的主机通信探秘

在理解局域网中不同网段主机之间的通信之前&#xff0c;我们首先要明白网络的基本组成和工作原理。局域网&#xff08;LAN&#xff09;是一个封闭的网络环境&#xff0c;通常由交换机&#xff08;Switch&#xff09;作为核心设备连接网络中的各个主机。当我们谈论不同网段的主机…

C# 分布式自增ID算法snowflake(雪花算法)

文章目录 1. 概述2. 结构3. 代码3.1 IdWorker.cs3.2 IdWorkerTest.cs (测试) 1. 概述 分布式系统中&#xff0c;有一些需要使用全局唯一ID的场景&#xff0c;这种时候为了防止ID冲突可以使用36位的UUID&#xff0c;但是UUID有一些缺点&#xff0c;首先他相对比较长&#xff0c…

蓝桥杯嵌入式(G431)备赛笔记——LED

目录 cubeMX配置&#xff1a; 代码模板&#xff1a; 注意&#xff1a; cubeMX配置&#xff1a; 原理图&#xff0c;其中PD2高电平使能锁存器&#xff0c;PC8-15默认给高电平&#xff0c;放置上电初始化LED亮 74HC573是八路输出锁存器 1脚是使能&#xff0c;低电平有效&#…