Level 2 行情数据存储处理

DolphinDB 处理 Level 2 行情数据实例
Level 2 高频行情数据包含大量有价值的信息,利用这些数据生成交易信号和获取收益已经成为量化研究中的一种主流策略。作为一个高性能时序数据库,DolphinDB 非常适合存储、处理 GB 级别甚至 PB 级别的海量数据集,包括 Level 2 高频行情数据的存储、因子计算、建模、回测和实盘交易等。本文基于国内 A 股市场 Level 2 高频行情数据的特点来展示高频行情数据存储和因子计算实例。根据历史批量因子计算、实时因子计算两个场景,以及针对不同的高频数据源,本文总结出了在 DolphinDB 中处理 Level 2 行情数据实例。本文涉及的脚本见附件,DolphinDB server 版本为 2.00.91. Level 2 行情数据介绍
1.1 数据概况
1.2 数据结构
2. DolphinDB 高效存储 Level 2 行情数据
2.1 分区方案
2.2 分区内分组排序
2.3 Level 2 行情数据存储方案
3. 基于历史数据的批量因子计算
3.1 快照数据的因子计算
3.2 逐笔成交数据的因子计算
3.3 逐笔委托数据的因子计算
4. 基于 Level 2 实时行情数据的流式实现
4.1 快照实时行情数据的高频因子流批一体实现
4.2 延时成交订单因子的流式实现
5. 总结
6. 附件
1. Level 2 行情数据介绍
1.1 数据概况
Level 2 行情数据是目前国内证券市场上最为完整,颗粒度最为精细的交易信息数据。其涵盖了在沪深两市上市的股票、可交易型基金、沪深交易所指数等大量品种。Level 2 行情数据分类表如下:数据类型	数据频率
分钟 K 线	1分钟
盘口快照	3秒
委托队列	3秒
逐笔成交	0.01秒
逐笔委托	0.01秒
分钟K线:即当日全天的分钟K线行情。相比传统K线,包含了分钟成交笔数信息。盘口快照:即常用的每3秒一个切片的十档委托行情。其中,也包括该时刻的委托总量和平均委托价格信息。委托队列:即买一、卖一的总委托单数,以及前50笔委托的明细信息。成交明细:即两个3秒快照之间,详细的逐笔成交与逐笔委托信息。需要注意的是,沪深交易所的 Level 2 行情数据存在一定的差异,主要体现在成交明细数据方面。深交所的逐笔成交数据中,包括了逐笔委托数据,其中有详细的挂撤单信息,和标记为撤单的逐笔成交。1.2 数据结构
上交所提供的1分钟数据是 Level 2 行情数据中数据字段最少、频率最低的数据。其主要包含昨日收盘价、开盘价、最高价、最低价、收盘价、成交量和成交额等数据。A股票行情快照数据每3秒钟记录一次,包括前后两个时刻的盘口变化数据。每天的数据量约为15G。股票行情快照数据原始字段说明对照表(表中的空字段,说明当前市场的行情数据中没有该字段)深交所数据	上交所数据	字段含义
security_id	SecurityID	证券代码
orig_time	DateTime	时间戳:2021-03-01 12:45:00.000
preclose_px	PreClosePx	昨日收盘价
open_px	OpenPx	开盘价
high_px	HighPx	最高价
low_px	LowPx	最低价
last_px	LastPx	收盘价
up_limit_px		涨停
down_limit_px		跌停
trading_phase_code	InstrumentStatus	交易状态
num_trades	NumTrades	成交笔数
total_volume_trade	TotalVolumeTrade	成交总量
total_value_trade	TotalValueTrade	成交总金额
total_bid_qty	TotalBidQty	委托买入总量
total_offer_qty	TotalOfferQty	委托卖出总量
WithdrawBuyNumber	买入撤单笔数
WithdrawSellNumber	卖出撤单笔数
WithdrawBuyAmount	买入撤单数量
WithdrawSellAmount	卖出撤单数量
WithdrawBuyMoney	买入撤单金额
WithdrawSellMoney	卖出撤单金额
weighted_avg_bid_px	WeightedAvgBidPx	加权平均委买价格
bid_px	BidPrice[10]	委买价格10
offer_px	OfferPrice[10]	委卖价格10
bid_size	BidOrderQty[10]10量
offer_size	OfferOrderQty[10]10量
order_qty_b1	BidOrders[50]	委买订单50
order_qty_s1	OfferOrders[50]	委卖订单50
股票逐笔委托数据记录的最小时间间隔为0.01秒,每个0.01秒内有可能有多笔委托,Level 2 行情数据对0.01秒内的委托时点进行模糊处理,不进行区分。 股票逐笔委托数据的单日数据量在 12GB 左右,由于交易活跃度不同,不同标的之间的单日数据量会有很大差异。股票逐笔委托原始数据字段说明对照表(表中的空字段,说明当前市场的行情数据中没有该字段)深交所数据	上交所数据	字段含义
SecurityID	SecurityID	证券代码
OrigTime	TransactTime	时间戳:2021-03-01 12:45:00.000
Price	Price	委托价格
OrderQty	Balance	委托数量
Side	OrderBSFlag	买卖方向:
沪市为B – 买单;S – 卖
深市为1 - 买;2 - 卖
OrderNo	委托订单号
ApplSeqNum		委托索引(仅深交所)
ChannelNo	ChannelNo	频道代码
OrderType	OrdType	委托类别:
沪市为A – 委托订单(增加);D – 委托订单(删除)
深市为1-市价;2-限价;U - 本方最优
BizIndex	业务序列号,与逐笔成交统一编号,从 1 开始按 Channel 连续
OrderIndex	委托序号, NUMBER 从 1 开始,按 Channel 连续
与股票逐笔委托数据相似,股票逐笔成交数据记录了股票交易的每一笔成交信息。每笔成交包含价格、成交量、成交金额、成交时间等信息。单日数据量在 6GB 左右,与不同标的的交易活跃度有关。股票逐笔成交数据原始字段说明对照表(表中的空字段,说明当前市场的行情数据中没有该字段)深交所数据	上交所数据	数据说明
SecurityID	SecurityID	证券代码
ExecType	TradeBSFlag	成交类别:
沪市为B – 外盘,主动买;S – 内盘,主动卖;N – 未知
深市为4 - 撤销;F - 成交
OrigTime	TradeTime	
Price	TradePrice	成交价格
TradeQty	TradeQty	成交数量
TradeAmount	成交金额
BidApplSeqNum	BuyNo	买方序号
OfferApplSeqNum	SellNo	卖方序号
TradeIndex	成交序号
BizIndex	业务序列号
ChannelNo	ChannelNo	频道代码
2. DolphinDB 高效存储 Level 2 行情数据
A股股票高频数据每日数据增量在30+G,基金债券等标的每日数据量在45+G。历史数据和每日增量数据数据量在 10TB 级别以上。面对如此庞大的数据量, 如何保证高效的数据写入、数据压缩和快速的数据查询计算是高频数据存储的一大挑战。为解决这一挑战,我们将 DolphinDB 的存储特性组合使用,提供了灵活的存储解决方案。2.1 分区方案
为了实现行情数据的灵活分区存储,可以采用”时间+标的“的方式进行数据分区。DolphinDB 支持对不同分区数据进行多线程并行操作。2.2 分区内分组排序
DolphinDB 的 TSDB 引擎提供了排序键设置,可以为每个数据分区设置一个排序键,以便在数据随机读取时更准确地定位数据。例如,通过设置 SortColumn=[“SecurityID”, “TradeTime”],数据可以按照 SecurityID 字段分组,并在每个组内按照时间字段 TradeTime 排序。2.3 Level 2 行情数据存储方案
在上交所股票 Level 2 行情数据中,市价单信息只存储于逐笔成交表中,而逐笔委托表中没有市价单的记录,因此计算委托量和委托金额等指标时需要对两个表进行关联。在深交所 Level 2 行情数据中,逐笔委托表中的市价单价格标记为0;而撤单记录在逐笔成交表中,撤单记录中价格也标记为0;因此在计算委托金额、撤单金额等指标时都需要对两个表进行关联再计算。此外,在计算其他因子指标时,也需要对逐笔成交表和行情快照数据表进行关联。根据业务需求,这里对沪深股票 Level 2 高频数据采用一库三表的建库建表方案,即把两个交易所相同的行情数据存入同一张表,使用 market 字段标识不同的交易所,且将 market 设置在索引列(SortColumn)中。数据源	数据量	分区方案(组合分区)	库、表名称	SortColumn 字段
行情快照	15G+	交易日按值分区+标的哈希20分区	"dfs://level_2""snapshot"	market,SecurityID,TradeTime
逐笔委托	11G+	交易日值分区+标的哈希20分区	"dfs://level_2""entrust"	market,SecurityID,TradeTime
逐笔成交	6G+	交易日值分区+标的哈希20分区	"dfs://level_2""trade"	market,SecurityID,TradeTime
库表创建之后,数据的导入教程可以参考DolphinDB的数据导入相关教程,如金融 PoC 用户历史数据导入指导手册之股票 level2 逐笔篇。

参考:https://gitee.com/dolphindb/Tutorials_CN/blob/master/Level-2_stock_data_processing.md#3–%E5%9F%BA%E4%BA%8E%E5%8E%86%E5%8F%B2%E6%95%B0%E6%8D%AE%E7%9A%84%E6%89%B9%E9%87%8F%E5%9B%A0%E5%AD%90%E8%AE%A1%E7%AE%97

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/753424.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Python环境下基于注意力机制的小样本轴承故障诊断

传统的基于特征提取与分类相结合的轴承智能诊断算法,对信号处理要求很高的专家经验,既费时又缺乏通用性。基于深度学习的智能轴承故障诊断方由于具有强大的特征提取能力,避免了繁琐复杂的特征提取工作,但是大多数研究都是在标准数…

抖音小店营业执照怎么办理?执照办理有哪些注意事项?

大家好,我是电商糖果 开店前我们需要办理一张执照,而新手开店基本都是个体执照。 所以这篇文章也主要讲个体执照的办理方法和注意事项。 抖音小店办理方法一共有三种。 第一种:自己去当地工商局办理 准备好法人身份证原件,复印…

共谋企业出海新篇章纷享销客荣获数字中国企业峰会“卓越成果奖”

3月9日,2024数字中国企业峰会在杭州西湖中维香溢大酒店成功举办,众多数字化领域专家、知名企业 CIO 代表到场。峰会旨在推动数字化转型与创新发展,为企业出海和国际合作搭建交流与合作的平台。本次峰会的颁奖环节,纷享销客凭借其卓…

Linux开发 -- 编写脚本

使用脚本可以提高工作效率、减少人为错误、简化复杂操作、增加系统自动化管理能力等,是 Linux 系统管理和开发中非常重要的工具之一。 1.常见指令 变量操作: :赋值操作符,用于给变量赋值。$:变量引用符号,…

【已解决】MySQL:常用的除法运算+精度处理+除数为0处理

目录 问题现象: 问题分析: 拓展: 1、除法运算: 拓展:MySQL中常用的几种除法运算 1、取整除法 2、浮点数除法 3、取余除法 4、向上取整除法 5、向下取整除法 2、运算结果的精度处理 1.1、浮点数 1.2、总位数 1.3、…

【NLP10-fasttext工具】

了解fasttext工具的作用 了解fasttext工具的优势及其原因 掌握fasttext的安装方法 1、认识fasttext工具 1.1、作用: 进行文本分类 训练词向量 1.2、工具包优势 正如它的名字,在保持较高精度的情况下,快速的进行训练和预测是fasttext的…

android 怎么自定义view

首先了解view的绘制流程: 所以onmeasure ---测量view onlayout---确定view大小----》所以继承ViewGroup必须要重写onlayout,确定子view 而onDraw----是继承view时候需要操作的。 所以:自定义ViewGroup一般是利用现有的组件根据特定的布局方式来组成新的组件。 自定义Vi…

python打包时遇见第三方包有隐藏依赖或者出现依赖错误

使用pyinstaller 打包成exe 文件步骤: 1.创建虚拟环境,并激活虚拟环境 #创建虚拟环境 python -m venv myenv #激活虚拟环境(windows) myenv\Scripts\activate2.导出需要的依赖 pip freeze > requirements.txt 或者 pip list …

社会规范和个人规范

世界有两套规范:社会规范和个人规范。 社会规范:友好,界限不明,不要求及时回报。 市场规范: 没有友情,没有爱情,没有小市民伤感,只有交易。 在传统经济学中,交易覆盖了…

AutoCAD 2020:三维建模与渲染,设计未来的建筑蓝图

AutoCAD 2020是一款功能强大且广泛应用的计算机辅助设计软件,它以其卓越的性能和丰富的功能,满足了机械、建筑、家居、纺织等诸多行业的设计需求。以下是AutoCAD 2020的一些主要功能介绍: 保存和安装优化:AutoCAD 2020在性能上进…

观成科技-基于自适应学习的人工智能加密流量检测技术

1.前言 人工智能技术的广泛应用正在深刻改变我们的生活。在网络安全领域,基于机器学习的检测技术也应用在许多场景中。随着信息技术的迅猛发展和数字化转型的深入推进,加密技术逐渐成为保障网络安全和数据隐私的核心手段,而基于机器学习的检…

企业HR怎么看待PMP证书?

企业HR在招聘和选拔人才时,往往会参考各种证书和资格来评估候选人的专业能力和素质。PMP(Project Management Professional)证书作为全球公认的项目管理专业人士认证,对于企业HR来说,无疑具有一定的参考价值。那么&…

每日五道java面试题之mybatis篇(四)

目录: 第一题. 映射器#{}和${}的区别第二题. 模糊查询like语句该怎么写?第三题. 在mapper中如何传递多个参数?第四题. Mybatis如何执行批量操作第五题 MyBatis框架适用场景 第一题. 映射器#{}和${}的区别 #{}是占位符,预编译处理;${}是拼接…

windows 安装cuda 11.2过程记录

参考: https://blog.csdn.net/m0_45447650/article/details/123704930 https://zhuanlan.zhihu.com/p/99880204?from_voters_pagetrue 在显卡驱动被正确安装的前提下,在命令行里输入nvidia-smi.exe 下载CUDA Toolkit: https://developer.nvidia.com/…

CrossEntropyLoss 和NLLLoss的关系

交叉熵损失在做一件什么事? 看公式: x是预测(不需要softmax归一化),y是label, N是batch维度的数量,交叉熵损失,干了三件事. 1. 对输入在类别维度求softmax 2. 多softmax后的数,求log 3. 对(样本数, 类别数)为shape的tensor计算NLLLoss. 其中,NLLloss做的就是log取负, 和o…

基础小白快速入门web前端开发技术----------->htm基础

HTML的文档结构 HTML 文档以<html>标记开始&#xff0c;以</html>标记结束 文档类型声明&#xff08;Doctype&#xff09;&#xff1a;告知浏览器正在使用哪个HTML版本 <!DOCTYPE html>根元素&#xff08;Root element&#xff09;&#xff1a;通常是<h…

java入门 - 规范你的代码注释

java基础语法-代码注释 注释只是为了提高可读性&#xff0c;不会被计算机编译。代码注释是架起程序设计者与程序阅读者之间的通信桥梁,最大限度的提高团队开发合作效率。也是程序代码可维护性的重要环节之一。 开发中注释可以分为三种方式&#xff1a; 行注释块注释类/方法注释…

Linux 大页内存 Huge Pages 虚拟内存

Linux 大页内存 Huge Pages 虚拟内存 - 秋来叶黄 - 博客园 (cnblogs.com) Linux为什么要有大页内存&#xff1f;为什么DPDK必须要设置大页内存&#xff1f;这都是由系统架构决定的。一开始为了解决一个问题&#xff0c;设计了对应的方案&#xff0c;随着事物的发展&#xff0c…

汽车信息安全--安全调试功能在量产后是否必须禁用(1)

目录 1.芯片生命周期与调试接口 2. 安全调试安全在哪里 2.1 常见安全调试解锁手段

Splitpanes拆分窗格插件使用

目录 基本用法 纵向排列 遍历渲染 动态拆分宽度 项目开发中用到了拆分窗格(就是下面的效果&#xff0c;可以拆分网页&#xff0c;我们项目通常都是用左右两块拆分&#xff0c;可以通过拖动图标进行左右拖动)&#xff0c;于是就发现了一个很好用的插件&#xff1a;Splitpane…