社区所有版块导航
Python
python开源   Django   Python   DjangoApp   pycharm  
DATA
docker   Elasticsearch  
aigc
aigc   chatgpt  
WEB开发
linux   MongoDB   Redis   DATABASE   NGINX   其他Web框架   web工具   zookeeper   tornado   NoSql   Bootstrap   js   peewee   Git   bottle   IE   MQ   Jquery  
机器学习
机器学习算法  
Python88.com
反馈   公告   社区推广  
产品
短视频  
印度
印度  
Py学习  »  机器学习算法

重构订单簿!基于深度学习的A股Tick级价格变动预测

量化投资与机器学习 • 3 年前 • 817 次点击  

量化投资与机器学习微信公众号,是业内垂直于量化投资、对冲基金、Fintech、人工智能、大数据领域的主流自媒体公众号拥有来自公募、私募、券商、期货、银行、保险、高校等行业20W+关注者,连续2年被腾讯云+社区评选为“年度最佳作者”。


量化投资与机器学习公众号独家解读


量化投资与机器学公众号  QIML Insight——深度研读系列 是公众号今年全力打造的一档深度、前沿、高水准栏目。



公众号遴选了各大期刊前沿论文,按照理解和提炼的方式为读者呈现每篇论文最精华的部分。QIML希望大家能够读到可以成长的量化文章,愿与你共同进步!

本期遴选论文
来源:The Journal of Financial Data Science Fall 2021
标题:Benchmark Dataset for Short- Term Market Prediction of Limit Order Book in China Markets
作者:Charles Huang, Weifeng Ge, Hongsong Chou, Xin Du


重构订单簿


深交所的Level2数据包含逐笔委托和成交数据。准确的模拟撮合方法就是回放交易所的逐笔委托和成交数据,根据交易所撮合机制、市场流动性来模拟撮合订单,从而得出策略的成交概率。高频策略研究中,可以通过这两个数据重构订单簿,并生成任意时间间隔的快照数据。(上交所的逐笔数据暂时还未完全公开)。


作者基于深交所的Level2数据重构了订单簿,生成了1秒间隔的快照数据及每一秒间隔内发生的交易统计数据,分别称为Snapshot component和Periodical component,下图就展示了平安银行某个时间点的快照:



关于重构订单簿,作者指出学术界常用LOBSTER软件,公众号查了下一年的费用需要近5000欧元😭。他们自己用C++实现了重构逻辑,但没给出具体逻辑和代码。


基于以上1秒间隔的Snapshot及Periodical数据,作者尝试构建预测模型对未来一段时间的价格及成交量进行预测。



深度学习模型预测Tick级价格变动


特征


作者一共构建了124个特征, 分成两大类:


  • 第一类是过去一段时间的交易数据,一共有8个特征,包含:VWAP、成交量、订单量及高开低收成交量;

  • 第二类是买卖双方的力量对比,一共有116个特征,买卖双方分别有58个,包含:

    • 10档快照数据(价格、规模、订单数量、订单平均的新鲜度*),这里一个有40个特征;

    • 已成交订单的数据,分为三个类别,总成交/大单/中单,每个类别包括价格、成交量、订单量及被动端的平均新鲜度,这里一共3*4=12个特征;

    • 取消订单的数据,订单发出时及订单取消时的市场平均深度、平均价、成交量及取消订单的数量,一共2*3=6个特征。


作者对以上特征数据做了以下处理:


  • 价格数据保持不变,当没有成交量时,对价格数据进行前向填充;
  • 交易量数据除以所有交易量数据的10%分位数进行标准化;
  • 订单量数据除以所有订单量数据的10%分位数进行标准化;
  • 新鲜度分为三类: 0 (过去5秒以内), 1 (过去5-30秒), 2 (过去超过30秒)。


标签


预测未来1, 2, 3, 5, 10, 20, 30, 60, 120, 180, 240, 及300秒的价格及成交量:


  • 对于价格,预测的是未来时间点加权平均价的分位数,分位数划分如下,10%、20%、40%、20%及10%,分别对应标签-2、-1、0、1及2;

  • 对于成交量,也是预测成交量大小的分位数:20%、40%及20%,分别对应标签0、1及2。


详细的特征及标签的说明如下(除去股票代码和时间):



模型


训练数据:2020年6月3日至2020年8月31日,9:30-11:30及13:00-14:57的快照数据;


测试数据:2020年9月1日至2020年9月30日的快照数据;


每个输入到模型的数据结构如下:



针对每个预测标签都构建一个模型,所以任何一类模型都会有24个子模型,如12个预测价格的模型及12个预测成交量的模型。(1, 2, 3, 5, 10, 20, 30, 60, 120, 180, 240, 及300秒的价格及成交量)。


总共测试了5个模型,模型的架构如下图展示:




测试结果 


由于计算资源的限制,作者在最后的实证中对20个交易最活跃的股票进行了建模分析,预测的标签是未来5,6及300秒的价格。使用的是Pytorch和RTX 2080显卡,结果如下:



可以看出,LSTM和CNN-LSTM要优于MLP和CNN。且所有四个非线性的模型的表现都优于线性模型。但是同样也可以看到,每个模型预测准确率最高的分位数是区间是0.3-0.7,也就是说模型对于极端价格的变动没有很好的预测能力。作者表示,未来应该使用更多的数据,更长的历史Lookback长度及更复杂或合适的网络结构构建深度学习模型。



开源代码


所有的模型代码及数据均已在Github开源,大家可以访问如下网址获取:

https://github.com/hkgsas/LOB
Python社区是高质量的Python/Django开发社区
本文地址:http://www.python88.com/topic/120010
 
817 次点击