一、时钟漂移问题概述
各位同学好,我是老张。今天咱们聊聊高频交易里一个特别磨人的问题——时钟漂移。
你可能觉得,时钟嘛,不就是看时间吗?有什么好讲的。但说实话,在高频交易这个领域,时钟不准,那就是真金白银的损失。我见过太多团队,策略写得漂亮,网络延迟也压得极低,结果最后栽在时钟同步上。
1.1 什么是时钟漂移
先给个定义。时钟漂移,说白了就是你的系统时钟和真实时间之间的偏差,而且这个偏差会随着时间慢慢变大。
你想想看,计算机里的时钟靠的是啥?是石英晶体振荡器。这东西理论上每秒振动32768次,但实际呢?受温度、老化、电压波动的影响,它不可能每次都那么准。今天差几微秒,明天差几毫秒,积累下来就麻烦了。
核心概念:时钟漂移 = 本地时钟时间 - 参考时间源(如GPS/原子钟)时间
单位通常用 ppm(百万分之一)表示。1 ppm 意味着每秒钟漂移 1 微秒。
我记得有一次在机房调试,一台服务器的时钟一天就漂了 50 毫秒。你想想,50 毫秒在高频交易里是什么概念?足够完成几十笔交易了。
1.2 为什么高频交易对时钟敏感
这个问题问得好。普通应用,比如你写个 Web 服务器,时间差个几秒完全没问题。但高频交易不一样,原因有三:
- 订单时间戳必须可信——交易所要求你上报的订单时间必须在纳秒级精度内。差一点,订单可能被拒绝,甚至被认定为违规交易。
- 多机协同需要统一时间——你的行情服务器、交易服务器、风控服务器,可能分布在不同的机柜甚至不同的数据中心。如果它们各自为政,时间不一致,你怎么判断哪个事件先发生?
- 套利策略依赖精确时序——做跨市场套利,A 市场比 B 市场快 1 微秒,你就能赚钱。但如果你的时钟不准,你以为自己领先,其实已经落后了。
避坑指南:我曾经见过一个团队,他们的策略在回测时表现极好,一上线就亏钱。查了三个月,最后发现是回测用的时间戳和实盘的时间戳差了 2 毫秒。2 毫秒啊,所有信号都偏移了。所以,时钟问题一定要在系统设计阶段就考虑进去。
1.3 时钟漂移的典型来源
嗯,这里我给大家梳理一下,时钟漂移到底从哪来。我把它分成三类:
1.3.1 NTP 误差
NTP(网络时间协议)是我们最常用的同步手段。但它有个问题——网络延迟是不确定的。
你发一个 NTP 请求到服务器,服务器回一个响应。你算一下往返时间,除以 2,就当是网络延迟。但问题是,网络延迟不是对称的。去的时候可能堵了 10 毫秒,回来只用了 1 毫秒。你算出来的那个「平均延迟」根本不准确。
我做过测试,在千兆网络环境下,NTP 的精度大概在 1-10 毫秒之间。对于高频交易来说,这个精度远远不够。
| 同步方式 | 典型精度 | 适用场景 |
|---|---|---|
| NTP(互联网) | 10-100 ms | 普通服务器 |
| NTP(局域网) | 1-10 ms | 一般交易系统 |
| PTP(硬件时间戳) | 100 ns - 1 μs | 高频交易 |
| GPS 时钟 | 10-100 ns | 顶级交易系统 |
1.3.2 硬件晶振老化
晶振这东西,用久了会老化。一开始可能精度是 ±20 ppm,用个三五年,可能就变成 ±50 ppm 甚至更差。
我个人的习惯是,每半年检查一次服务器晶振的状态。怎么检查?用 ntpq -p 命令看 offset 和 jitter 的变化趋势。如果 offset 持续增大,那基本可以判断晶振老化了。
# 查看 NTP 同步状态
$ ntpq -p
remote refid st t when poll reach delay offset jitter
==============================================================================
*ntp1.example.com .GPS. 1 u 23 64 377 0.521 0.032 0.015
ntp2.example.com .GPS. 1 u 45 64 377 0.634 0.041 0.022
你看上面这个输出,offset 只有 0.032 毫秒,jitter 0.015 毫秒,说明晶振状态还不错。如果 offset 超过 1 毫秒,那就该警惕了。
1.3.3 温度变化
这个很多人会忽略。晶振对温度极其敏感。温度每变化 1 摄氏度,晶振频率可能漂移 0.1-0.5 ppm。
你想想看,机房里的空调不是恒温的。白天人多、设备多,温度可能 25 度;晚上人少,空调调低,可能 20 度。这一来一回,时钟就跟着漂。
注意:我曾经遇到过一个案例,某交易团队把服务器放在机柜最上层,靠近空调出风口。白天温度波动达到 5 度以上,导致时钟漂移量在一天内变化了 3 毫秒。后来把服务器移到温度稳定的位置,问题就解决了。
1.4 知识体系总览
下面这张图,我把时钟漂移的核心知识点串起来了。你可以把它当作本章的思维导图:
这张图把本章的核心内容串起来了。左边是「什么是时钟漂移」,中间是「为什么敏感」,右边是「典型来源」。底部是三个补偿方向,后面的章节我们会逐一展开。
好了,这一章就到这里。记住一句话:在高频交易里,时间就是金钱。时钟不准,你的策略再牛也没用。下一章我们聊聊具体的补偿方案,看看怎么用软件和硬件手段把时钟漂移压到纳秒级。
公众号:蓝海资料掘金营,微信deep3321