延迟优化是量化里投入产出比最极端的领域:对某些策略,每快 1 微秒都是真金白银;对另一些策略,快 100 毫秒一文不值。本篇的价值不在「怎么优化」,而在帮你判断自己是否在需要优化的阵营里——多数人不在,而知道这一点省钱省心。
延迟的解剖:一条链路的完整预算
一笔「行情进来 → 订单出去」的端到端延迟,逐段拆开(数字为国内期货/股票高频的典型量级):
| 段 | 内容 | 典型延迟 | 优化手段 |
|---|---|---|---|
| ① | 交易所撮合 → 你的网卡(物理) | 机房内 1–5 μs / 城内专线 30–300 μs / 跨城 5–30 ms | 托管(colocation)是唯一解 |
| ② | 网卡 → 内核 → 应用(协议栈) | 内核态 5–20 μs / 内核旁路 0.5–2 μs | OpenOnload/DPDK、SR-IOV |
| ③ | 行情解析(二进制 → 结构化) | 0.3–2 μs/条 | 零拷贝、预编译解析器、FPGA |
| ④ | 策略计算 | 0.5–10 μs | 无堆分配、无锁队列、缓存友好 |
| ⑤ | 风控检查 | 0.2–2 μs | 热路径最小化(预计算限额位图) |
| ⑥ | 订单构造 + 发出 | 0.3–1 μs | 预序列化订单模板 |
| ⑦ | 你的网卡 → 交易所撮合 | 同 ① | 同 ① |
读懂这张表的两个推论:其一,优化永远从「占比最大者」下手——没测过链路分布就优化代码,是延迟工程的第一浪费(典型错误:花两周把策略计算从 5μs 压到 3μs,而行情链路占了 300μs);其二,①⑦ 的物理段占了大头,机房位置比代码快慢重要一个数量级——这就是托管费贵过工程师工资的原因。
微秒级竞争的门槛清单
低延迟高频(做市、抢单类)的完整门槛,按投入排序:
- 托管(colocation):服务器放交易所机房内——入场券(几十万/年起),机房内物理距离都在微秒级;
- 网络硬件:交易所专线、内核旁路(Solarflare/OpenOnload 或 DPDK,绕过操作系统网络栈)、FPGA/ASIC 行情解析与订单编码(硬件线路完成处理,纳秒级);
- 软件栈:C++(无 GC、无系统调用热路径)、无锁数据结构、CPU 亲和性(isolated core + 大页内存)、极简风控(风控逻辑在热路径上每加一层检查都是微秒);
- 持续军备:对手在升级,你必须跟着升级——低延迟不是一次性投入而是持续折旧。
这个清单的用途是自检:如果任何一项对你不可及,「拼速度」的赛道直接排除——能做的是「速度不敏感的高频」(统计型日内回归、非抢单类空间策略),避开与顶级机构的军备竞赛。
一个「微秒的价值」算例
做市商的盈亏与排队位置的关系值得算一次:
| |
而同一个「5 微秒」卖给日频多因子策略:价值 = 0。延迟的价值 = 策略 alpha 的时效性 × 抢到与抢不到的概率差——公式两侧都要算。
什么策略值得为延迟付费
- 做市:排队位置直接决定成交率与被逆向选择的比例——延迟就是库存管理的武器,值得微秒级投入;
- 跨市场套利(期现、跨所):价差存在的时间以毫秒计——谁先到谁吃肉,纯粹的延迟竞赛;
- 统计型日内/短反转:信号半衰期以分钟计——百毫秒级的执行差异已足够,微秒无意义;
- 日频多因子:信号半衰期以天计——延迟优化价值趋近于零,把预算花在成本与容量上(见执行算法 )。
一个反直觉的提醒:中低频策略的「延迟」瓶颈常在分钟到小时级——数据落地时间、信号计算时长、人工审批环节。把「决策到下单」从 40 分钟压到 5 分钟(自动化流水线,见调度 )的收益,远大于任何微秒级工程——先优化自己的流程延迟,再考虑机器延迟。
个人可及的「延迟卫生」
不进军高频也有低分位的延迟改进空间(目标:把可控的秒级浪费清零):
- 时钟同步:NTP 对齐本机时钟(日志时间戳可信的前提)——排查「信号与成交的时序」时这是地基;
- 行情落地的及时性:收盘数据的获取时间从「晚上十点」提到「收盘后十分钟」(数据源与定时任务优化)——它决定次日信号的生成窗口;
- 下单路径的精简:信号 → 订单之间去掉人工环节(邮件、Excel 中转);API 直连券商优于网页端手工;
- 监控延迟指标:记录「行情时间戳 → 订单时间戳」的分布——先有度量,才知道哪里值得改(日志体系见日志与监控 )。