几种延迟
- 行情数据延迟:从交易所事件到你的应用,包括供应商的处理。
- 委托往返:从你点击到网关的确认。
- 行情到下单:从一个市场事件到你的委托抵达交易所,这是自动化公司在优化的那个数字。
- 抖动:各条消息之间的变化,而它往往比一个恒定的延迟更有害。
诚实地度量它
单独一个数字会藏起整个分布。中位数描述的是一张典型的委托;而一个高分位,比如第 95 百分位,描述的是那条在快市里会伤到人的慢尾。一个分位需要足够的样本:在样本非常少时,一个第 95 百分位不过就是那次最差的测量。
一个算例:有 20 个排好序的测量值时,第 95 百分位落在位置 (20 − 1) × 0.95 = 18.05,从 0 起数,也就是在第 19 和第 20 个值之间。如果那两个是 180 毫秒和 240 毫秒,那么线性插值给出 180 + 0.05 × 60 = 183 毫秒。
在 Senzoukria 里
交易面板从点击到网关确认之间度量委托延迟,用的是一个单调时钟,使得一次系统时钟调整不可能产生出负数、或者讨好的时长。下单和撤单被分开放,因为它们走的不是同一条路径。它保留最近 200 次测量,并忽略那些超过 30 分钟的。在第一次测量出现之前,这个面板什么都不显示;随后它显示下单的中位数以及样本数,比如「38 ms median · 12 samples」;而按上面方式插值出来的第 95 百分位,只有在 20 次测量之后才被加上。那条提示很明确:这不是到成交的时间,而客户端那条路径没有加上任何可度量的东西,所以这个数字本质上就是经纪商那一次往返。
常见错误
- 把一个最好情况下的 ping 当作委托执行的延迟来引用。
- 把确认的时间当成成交的时间。
- 去优化那些测量显示什么都没加上的软件路径,而不是去优化网络或经纪商那条路径。
相关内容
同一栏目
其他语言版本
常见问题
- 对一个主观的订单流交易者来说,什么样的延迟才要紧?
- 主要是稳定性、以及不出现长时间的停滞。一个稳定在几十毫秒的往返远低于人的反应时间;而在繁忙时刻偶发的好几秒延迟,才是造成真实滑点的东西。
- Senzoukria 为什么一开始把第 95 百分位藏起来?
- 因为在不到 20 次测量时,它就只是那次最差的测量,而且不会随着更多数据到来而变化。它在样本足够描述一条尾巴之后才出现。