一、行情数据特征分析

做行情数据压缩,第一步不是选算法,而是搞清楚你的数据长什么样。

我见过不少团队,一上来就上LZ4、Zstd,结果压缩率惨不忍睹。为什么?因为他们根本不了解自己的数据特征。今天我们就来拆解一下,行情数据到底有哪些「脾气」。

1.1 高频数据特点:快、密、乱

高频行情数据,说白了就是「市场的心跳」。每一笔交易、每一次报价,都在毫秒级别产生。

三个核心特点:

  • 高吞吐:单只股票一天可能产生几十万笔逐笔成交
  • 低延迟:数据从交易所到你的系统,延迟要求通常在微秒级
  • 突发性:开盘、收盘、消息发布时,数据量会瞬间暴涨

⚠️ 我遇到过最夸张的一次:某只股票在财报发布后1秒内,产生了平时10分钟的数据量。如果你的系统扛不住这种突发,压缩再高效也没用。

1.2 数据量级估算:别等硬盘报警才后悔

很多人对行情数据量没概念。我习惯用「每日每品种」来估算,这样最直观。

以A股为例:

数据类型 单日单品种 全市场(约5000只)
Level-2 快照 约50MB 约250GB
逐笔成交 约30MB 约150GB
逐笔委托 约40MB 约200GB
指数行情 约5MB 约25GB

你看,光A股一天就是600GB+。一个月下来,15TB起步。这还只是原始数据,没算索引和备份。

💡 我个人习惯:估算时再乘以1.5的安全系数。因为总有你没想到的字段、日志、临时文件。

1.3 时间序列特性:数据是有「形状」的

行情数据本质上是时间序列。但和普通的时序数据(比如传感器)不同,它有自己独特的「形状」。

几个关键特性:

  • 非均匀采样:不是每毫秒都有数据,有交易时才产生
  • 强自相关性:当前价格和上一笔价格高度相关
  • 周期性:每天的开盘、午休、收盘,模式高度重复
  • 数值范围有限:价格、成交量都在特定区间内波动

为什么会这样?因为市场行为本身就有规律。你想想看,一只股票的价格不会从10块瞬间跳到100块,中间必然有连续的过程。

这个特性对压缩来说是个好消息——差值编码、增量存储,效果会非常好。

1.4 数据质量挑战:脏数据才是真正的噩梦

嗯,这里我要多说几句。数据质量,是压缩方案里最容易被忽视的环节。

常见的坑:

  • 重复数据:同一笔成交被推送两次
  • 乱序数据:后产生的数据先到达
  • 缺失数据:某个时间窗口的数据丢了
  • 异常值:价格突然变成0或者负数
  • 时间戳漂移:毫秒级的时间戳误差

⚠️ 我曾经因为没处理重复数据,导致压缩后的文件解压出来比原文件还大。因为重复数据破坏了差值编码的连续性,压缩算法反而产生了更多冗余信息。

所以我的建议是:在压缩之前,先做数据清洗。去重、排序、校验时间戳连续性。这一步做好了,压缩率能提升10%-30%。

知识体系总览

下面这张图,把行情数据的特征和它们对压缩的影响串起来了。你可以看到,每个特征都不是孤立的,它们共同决定了你应该选择什么样的压缩策略。

行情数据特征分析 · 知识体系 行情数据特征 高频数据特点 高吞吐 · 低延迟 · 突发性 → 需要流式压缩 → 支持随机访问 数据量级估算 单日全市场 600GB+ → 必须分片存储 → 冷热数据分离 时间序列特性 非均匀 · 自相关 · 周期 → 差值编码效果好 → 列式存储更优 数据质量挑战 重复 · 乱序 · 缺失 → 压缩前必须清洗 → 校验机制不可少 特征决定策略 · 没有万能方案

总结一下:行情数据特征分析,不是纸上谈兵。它直接决定了你的压缩算法选型、存储结构设计、甚至系统架构。我见过太多人在这上面栽跟头,所以花时间把数据摸透,比什么都值。

💡 我的习惯是:拿到新数据源,先花一周做特征分析。画分布图、算相关性、测重复率。这些功夫省不得。


公众号:蓝海数据掘金营 · 微信:deep3321