本案例基于证券交易的 Level 2 快照数据,开发了10分钟频率的深度不平衡、买卖压力指标和波动率的计算脚本。在指标计算函数的处理中,我们通过优化,将计算耗时从450秒降至最低15秒,性能提升了约30倍,一起来看看吧~
本案例所用样本数据与教程代码均已公开发布,可点击阅读原文查看详细内容。
数据与样本说明
字段:快照中的部分字段,包括股票代码、快照时间、申买十价、申买十量、申卖十价、申卖十量。
样本:2020年上证50指数的成分股,共约28.75亿条快照数据。
分布式表数据总量:2,874,861,174
上证50指数的成分股数据量:58,257,708
逻辑 CPU 核数:8
指标定义
Weighted Average Price(WAP):加权平均价格

Depth Imbalance(DI):深度不平衡指标

Press:买卖压力指标

Realized Volatility(RV):波动率(定义为对数收益率平方和的平方根,本案例中用加权平均价格代替股价进行计算。)


一图带你读懂优化升级

OLAP 到 TSDB 性能提升原因
OLAP 存储引擎下,成分股涉及的分区内无关证券的数据也需要从磁盘加载到内存,然后进行数据解压、过滤和计算。而 TSDB 方式下,只需将成分股的数据从磁盘加载到内存,进行数据的计算操作。
针对上交所 Level 2 快照数据,采用 Array Vector 存储后,压缩比可以提升至 9-11;在没有任何缓存的前提下,与多列存储方案相比,单位时间内从磁盘上读取的数据条数提升。
多档量价数据采用 DolphinDB V2.00 TSDB + Array Vector 方式存储后,实现了在分布式表的某列某行中存储一个向量对象,所以矩阵运算中取某一列的多行数据返回的对象就是一个矩阵,与多列存储方案相比,省去了矩阵拼接过程。
Explore More








