一、订单路由概述:什么是订单路由、为什么需要多市场路由、核心挑战与目标
1.1 什么是订单路由?
订单路由,说白了就是「把交易指令送到最合适的地方去执行」。
我习惯这样定义它:订单路由系统是一个智能决策引擎,它接收来自交易策略的原始订单,然后根据一系列规则和实时数据,决定把这个订单发往哪个交易所、哪个流动性池,甚至拆分成多个子订单并行执行。
举个例子,你有一个买入 1000 手 BTC 的指令。系统不会傻乎乎地全扔给币安。它会看:
- 币安深度够不够?
- OKX 的盘口价差是不是更小?
- Coinbase 的流动性是不是更厚?
- 甚至考虑各交易所的延迟和手续费。
最终,路由系统会给出一个最优的「分发方案」。嗯,这就是订单路由最朴素的定义。
1.2 为什么需要多市场路由?
你可能会问:一个交易所不够用吗?
我在早期做 A 股量化时,确实只用一家券商就够了。但后来做数字货币和美股,发现情况完全不同。
原因一:单一市场深度有限
大单进场,一个交易所根本吃不下。强行吃,滑点会让你亏到怀疑人生。多市场路由可以把大单拆成小单,分散到多个交易所,降低对单一市场价格的冲击。
原因二:套利机会无处不在
同一个资产,在不同交易所的价格经常不一样。我记得有一次,BTC 在币安和 Bitfinex 之间价差达到 0.3%。如果你只连一个交易所,这种无风险套利机会就跟你没关系了。
原因三:容灾与可靠性
交易所宕机不是新闻,是常态。我经历过某头部交易所因为系统升级暂停交易 40 分钟。如果你的路由只连了它,那 40 分钟你就只能干瞪眼。多市场路由天然具备「故障切换」能力。
原因四:监管与合规差异
不同市场有不同的交易规则、杠杆限制、T+0/T+1 机制。多市场路由可以帮你自动适配这些差异,而不是让交易员手动切换。
1.3 核心挑战
多市场路由听起来很美好,但做起来全是坑。我踩过的,你大概率也会踩。
挑战一:数据一致性
不同交易所的行情数据到达时间不一样。A 交易所的买一价是 100.01,B 交易所的买一价是 100.02,但这两个价格可能相差了 50 毫秒。你以为是套利机会,其实是数据延迟造成的「幻觉」。
我曾经因为没处理好时间戳对齐,跑了一个月的套利策略,回测曲线漂亮得不行,实盘一跑就亏。后来发现是数据源的时间基准不一致。
挑战二:订单状态管理
一个订单拆成 5 个子订单,发往 5 个交易所。每个交易所的订单状态更新速度不同,有的全成交了,有的部分成交,有的还在排队。你怎么汇总成一个「总状态」?
这里有个坑:部分成交 + 部分取消的场景。子订单 A 成交了 30%,子订单 B 被交易所拒绝,子订单 C 还在挂单。这时候你的路由系统需要做「再平衡」——把未成交的部分重新路由到其他市场。
挑战三:资金管理
每个交易所都有独立的账户余额。你在币安有 10 个 BTC,在 OKX 有 5 个 BTC。路由系统必须实时知道每个账户的可用余额,否则就会出现「订单发出去了,但账户里没钱」的尴尬。
更麻烦的是:冻结资金。一个订单发出后,对应资金会被冻结。如果路由系统没处理好冻结逻辑,可能会重复使用同一笔资金。
挑战四:延迟与性能
多市场路由意味着更多的网络请求、更多的数据处理、更多的决策计算。每增加一个交易所,延迟就增加一截。对于高频交易来说,这可能是致命的。
我见过一个团队,路由逻辑写得特别复杂,每次决策要查数据库、算深度、跑模型。结果一个订单从生成到发出,耗时 200 毫秒。而市场行情 100 毫秒就能变一次。你想想看,这 200 毫秒的延迟里,价格早就变了。
1.4 核心目标
说了这么多挑战,那多市场路由到底要达成什么目标?我总结为四点:
| 目标 | 说明 | 衡量指标 |
|---|---|---|
| 最优执行 | 以最低成本、最小滑点完成订单 | 实现价格 vs 基准价格(如 VWAP、TWAP) |
| 高可用性 | 单个交易所故障不影响整体交易 | 系统可用性 ≥ 99.99% |
| 低延迟 | 从订单生成到发出,延迟控制在 1ms 以内 | P99 延迟 |
| 资金安全 | 不超买、不超卖、不重复使用资金 | 零资金事故 |
说白了,多市场路由的终极目标就是:让交易员感觉不到多市场的存在。你只需要告诉系统「我要买 1000 手」,剩下的路由系统帮你搞定。
1.5 知识体系总览
下面这张图,是我自己画的多市场路由知识体系。你可以把它当作整个课程的地图:
这张图把整个课程的核心脉络串起来了。后面每一章,都会围绕这四个层次展开。你先把这张图记在脑子里,后面学起来会轻松很多。
公众号:蓝海资料掘金营,微信deep3321