一、行情数据全景概览:什么是实时行情?快照与增量的区别,为什么需要增量处理?
各位同学,咱们今天聊点实在的。
做量化交易,第一关就是搞定行情数据。我见过太多人,策略写得花里胡哨,结果行情数据没处理好,一上线就亏钱。说白了,行情数据就是量化交易的「眼睛」。眼睛要是花了,后面全白搭。
1.1 什么是实时行情?
实时行情,就是交易所实时推送的股票、期货、期权等品种的成交数据。它包含两个核心部分:
- 快照(Snapshot):某一时刻的完整市场状态
- 增量(Incremental/Delta):两次快照之间的变化数据
我举个例子你就明白了。你打开手机看股票,看到当前买一价10.01元,卖一价10.02元,这就是一个快照。但下一秒,有人以10.01元成交了100股,这个「成交动作」就是增量。
核心概念:快照是「状态」,增量是「事件」。状态告诉你现在是什么样,事件告诉你发生了什么变化。
1.2 快照与增量的区别
咱们用一张图来理解。这是我个人习惯,先画框架再讲细节。
你看这张图,快照是每隔一段时间(比如500ms)推送一次完整数据。增量则是实时推送,每次只告诉你「变了什么」。
| 对比维度 | 快照 | 增量 |
|---|---|---|
| 数据量 | 大(完整市场深度) | 小(仅变化部分) |
| 推送频率 | 低(500ms-1s) | 高(毫秒级) |
| 延迟 | 较高 | 极低 |
| 可靠性 | 高(可独立使用) | 依赖前序数据 |
| 带宽占用 | 高 | 低 |
1.3 为什么需要增量处理?
这个问题问得好。我刚开始做量化的时候,也觉得直接用快照不就完了?后来被现实狠狠教育了一顿。
你想想看,A股市场一天交易4小时,如果每500ms推送一次快照,一天就是28800次快照。每次快照包含所有股票的10档买卖盘,数据量大概100KB。一天下来就是2.8GB。这还只是单市场。
但增量呢?每次只推送变化的部分,数据量只有1KB左右。一天下来不到30MB。差距是100倍。
实战经验:我在做期货高频策略时,曾经因为全量快照处理导致系统延迟飙升。后来改成增量处理,延迟从50ms降到了2ms。嗯,这个差距就是赚钱和亏钱的区别。
增量处理的核心优势有三个:
- 低延迟:增量数据推送更快,适合高频交易
- 低带宽:节省网络资源,降低机房成本
- 易处理:变化数据更容易做事件驱动策略
但增量处理也有坑。我曾经踩过一个:增量数据依赖前序快照。如果你中间断了一笔增量,后面的数据就全乱了。所以实际生产中,我们会定期用快照做「校准」。
避坑指南:我曾经在实盘中遇到增量数据丢失,导致订单簿深度计算错误,差点触发风控。从那以后,我强制要求每10笔增量必须和快照做一次校验。这个习惯救了我好几次。
1.4 增量处理的典型场景
说白了,增量处理就是「只关注变化」。这在量化交易中太常见了:
- 订单簿更新:只推送新增、撤销、成交的订单
- 成交明细:每笔成交都是一个增量事件
- 行情快照:只更新变化的价格档位
- 指数计算:成分股变化时才重新计算
我建议你记住一句话:快照是基础,增量是灵魂。没有快照,你无法初始化;没有增量,你无法实时。
好了,这一章就到这里。增量处理的核心逻辑你搞懂了,后面咱们再深入讲具体怎么实现。