性能提升30倍 | 深度不平衡、买卖压力指标和波动率计算优化案例
本页是一则新闻内容,围绕“深度不平衡、买卖压力指标与波动率”等指标计算优化案例,并给出发布日期信息。
What this page covers
- 案例标题与发布日期信息。
- 金融指标计算场景与 Array Vector 方案概述。
- 数据字段范围、样本规模与运行环境说明。
- 指标定义:WAP、DI、Press、RV。
- 四种存储/计算方式的性能对比概览与 SQL 实现概述。
- TSDB 相比 OLAP 的性能提升原因与相关优势点。
技能认证特训营第二期正式开启(限时报名)
页面顶部推广技能认证特训营第二期并提供限时报名链接与福利优惠提示。
- 页面包含“技能认证特训营第二期”的推广信息。
- 页面提供该活动的报名链接。
- 页面提示存在限时报名与福利优惠相关信息。
新闻栏目入口
标示该页面属于新闻内容的栏目标签。
- 页面标示内容所属栏目为新闻。
- 页面提供新闻栏目入口信息。
性能提升30倍 | 深度不平衡、买卖压力指标和波动率计算优化案例(含日期)
给出新闻标题与发布日期。
- 页面标题为“性能提升30倍 | 深度不平衡、买卖压力指标和波动率计算优化案例”。
- 页面包含发布日期信息。
场景与 Array Vector 方案概述
描述金融指标计算对大数据与高维运算的需求,并介绍 DolphinDB 的数组向量(Array Vector)及其适用与限制范围。
- 该场景强调金融指标计算对大数据与高维运算的需求。
- DolphinDB 提供数组向量(Array Vector)用于存储可变长度的二维数组。
- 数组向量(Array Vector)可用于简化某些常用查询与计算。
- 在大量重复数据场景,数组向量存储可提高压缩比并提升查询速度。
- 数组向量仅由内存表与使用 TSDB 存储引擎的分布式表支持。
- OLAP 存储引擎暂不支持数组向量。
数据与样本说明
列出使用的快照字段范围、样本来源与规模、分布式表数据量、成分股数据量与逻辑 CPU 核数。
- 样本数据为 2020 年上证50指数成分股快照数据,约 28.75 亿条。
- 案例列出快照字段:股票代码、快照时间、申买十价/量、申卖十价/量(部分字段)。
- 分布式表数据总量为 2,874,861,174。
- 成分股数据量为 58,257,708。
- 运行环境的逻辑 CPU 核数为 8。
指标定义(WAP、DI、Press、RV)
给出加权平均价格、深度不平衡、买卖压力指标与已实现波动率的定义说明,并通过配图展示公式。
- WAP 指 Weighted Average Price(加权平均价格)。
- DI 指 Depth Imbalance(深度不平衡指标)。
- Press 对应买卖压力指标。
- RV 在本案例中定义为对数收益率平方和的平方根。
- 本案例用加权平均价格代替股价进行 RV 计算。
一图带你读懂优化升级
说明基于该计算场景开发四份 SQL 代码,并用图示对比四种不同存储计算方式下的性能差异。
- 该案例实现方式包含四份 SQL 代码。
- 页面通过图示对比四种存储与计算方式的性能差异。
OLAP 到 TSDB 性能提升原因
解释 TSDB 相比 OLAP 的性能提升原因,并补充 Array Vector 与 TSDB+Array Vector 在读取、压缩与矩阵运算上的优势。
- 在本案例中,TSDB 存储引擎相比 OLAP 引擎计算性能有很大提升。
- OLAP 方式需要加载分区内无关证券数据到内存并进行解压、过滤与计算。
- TSDB 方式只需加载成分股数据到内存进行计算。
- 上交所 Level 2 快照数据使用 Array Vector 存储时,压缩比可提升至 9–11。
- 在无缓存前提下,Array Vector 相比多列存储可提升单位时间磁盘读取条数。
- DolphinDB V2.00 TSDB + Array Vector 支持在分布式表某列某行存储向量对象。
- 矩阵运算取某列多行数据返回矩阵对象,可省去矩阵拼接过程。
Facts Index
| Entity | Attribute | Value | Confidence |
|---|---|---|---|
| 性能提升30倍 | 深度不平衡、买卖压力指标和波动率计算优化案例 | 发布日期 | 2022.05.31 | high |
| DolphinDB | 提供的存储/数据结构能力 | 提供数组向量(Array Vector),用于存储可变长度的二维数组。 | high |
| 数组向量(Array Vector) | 作用/收益 | 可显著简化某些常用的查询与计算。 | medium |
| 数组向量(Array Vector) | 在重复数据场景的收益 | 当不同列中含有大量重复数据时,使用数组向量存储可以提高数据压缩比并提升查询速度。 | medium |
| 数组向量(Array Vector) | 支持范围 | 仅内存表与使用 TSDB 存储引擎的分布式表支持数组向量。 | high |
| OLAP 存储引擎 | 对数组向量(Array Vector)的支持 | 暂不支持数组向量。 | high |
| 本案例使用的快照字段 | 字段范围 | 股票代码、快照时间、申买十价、申买十量、申卖十价、申卖十量(快照中的部分字段)。 | high |
| 样本数据 | 样本范围与规模 | 2020年上证50指数的成分股,共约28.75亿条快照数据。 | high |
| 分布式表 | 数据总量 | 2,874,861,174 | high |
| 上证50指数的成分股 | 数据量 | 58,257,708 | high |
| 运行环境 | 逻辑 CPU 核数 | 8 | high |
| Weighted Average Price(WAP) | 中文名称/定义标签 | 加权平均价格 | high |
| Depth Imbalance(DI) | 中文名称/定义标签 | 深度不平衡指标 | high |
| Press | 中文名称/定义标签 | 买卖压力指标 | high |
| Realized Volatility(RV) | 定义(本案例口径) | 波动率定义为对数收益率平方和的平方根;本案例中用加权平均价格代替股价进行计算。 | high |
| 本案例实现方式 | SQL 代码数量 | 开发了四份 SQL 代码。 | high |
| TSDB 存储引擎 vs OLAP 存储引擎(本案例) | 性能对比结论 | TSDB 存储引擎相比于 OLAP 引擎计算性能有很大提升。 | medium |
| OLAP 存储引擎(本案例成分股计算) | 需要加载的数据范围 | 成分股涉及的分区内无关证券的数据也需要从磁盘加载到内存,并进行数据解压、过滤和计算。 | high |
| TSDB 方式(本案例成分股计算) | 需要加载的数据范围 | 只需将成分股的数据从磁盘加载到内存进行计算操作。 | high |
| 上交所 Level 2 快照数据 + Array Vector 存储 | 压缩比提升 | 压缩比可以提升至 9-11。 | high |
| 上交所 Level 2 快照数据(无缓存前提) | 读取效率对比(Array Vector vs 多列存储) | 在没有任何缓存的前提下,与多列存储方案相比,单位时间内从磁盘上读取的数据条数提升。 | medium |
| DolphinDB V2.00 TSDB + Array Vector | 多档量价数据的存储能力描述 | 在分布式表的某列某行中存储一个向量对象。 | high |
| DolphinDB V2.00 TSDB + Array Vector(矩阵运算) | 返回对象与过程优化 | 矩阵运算中取某一列的多行数据返回的对象就是一个矩阵;相比多列存储方案省去矩阵拼接过程。 | high |
| 技能认证特训营第二期 | 报名链接 | https://www.qingsuyun.com/h5/e/217471/5/ | high |