跳到正文

智能订单路由(SOR):你的单子到底去了哪

你的成交从哪来不是你选的,是路由器替你选的,而路由器有自己的激励:费率、返佣、内部化、毒性。看懂这套激励,才知道它在为谁干活。

第 11 篇 · 共 12 篇 约 9 分钟

你按”买入”。你的单消失进 broker 的路由器。几百毫秒之后你成交了。你以为这个成交来自你屏幕上显示最优价的那个地方。

不是。

美股同时在十几家亮交易所、30 多家替代交易系统(ATS,主要是暗池)和无数内部化 broker-dealer 上交易。你屏幕上的 NBBO(National Best Bid and Offer)是个综合出来的数字,可能在你看它的那一瞬间不存在于任何单一场所。你下的单被切片、路由、分批成交,还可能在途中被一个以微秒做决策的智能订单路由器(SOR)重新路由。

不懂你的 SOR 怎么工作,你就是蒙着眼交易。路由器决定你跨什么点差、付什么费、拿什么成交,以及——最要命的——你泄露了什么信息。而路由器不是中立的管道:它的每个决策背后都有激励,费率表、返佣、内部化收益、毒性数据。这篇文章顺着这些激励走一遍,最后落到那个必须问的问题:它到底在为你干活,还是为别人?

Harris(2003,第 25 章)用市场碎片化来框这件事:同一证券同时在多处交易创造了套利机会,也带来了执行复杂性。SOR 就是为驾驭这种复杂性而生的。问题只在于它替谁驾驭。

版图

美国的股票亮场所是注册交易所:NYSE、Nasdaq、CBOE,还有 IEX——它从 ATS 起家,2016 年起已是注册交易所。每家有自己的簿、费率表和延迟谱。

暗池是不挂报价的 ATS:内部撮合,然后把成交报到合并 tape 上(经由 FINRA 的成交报告设施 TRF)。例子有高盛的 Sigma X、摩根士丹利的 MS Pool、Citadel Connect、瑞信的 Crossfinder、Virtu 的 MatchIt,还有几十家。

内部化方是用自己库存成交、根本不路由到任何场所的 broker-dealer。零售流量被重度内部化:Payment for Order Flow(PFOF)意味着零售市价单由 Citadel Securities、Virtu 这类 wholesaler 成交,点差归他们。

对同一只股票,你的 SOR 可能同时看到 5 家亮所的显示量、8 个暗池的隐藏量迹象、2 个 wholesaler 的内部化报价。每个子单发去哪,就是 SOR 逻辑的全部内容。

基本决策树

当你下一笔 1000 股的市价买单,SOR 大致按这个顺序走:

  1. 查 NBBO。 跨所有亮场所的最优卖价是多少?
  2. 查暗池。 有没有隐藏量的迹象,价格可能在 NBBO 或更好?
  3. 查内部化方。 有没有 wholesaler 愿意以亚美分优于 NBBO 的价成交?
  4. 相应路由。 把单发到价格、量、费用组合最优的场所。
  5. 按需重路由。 第一个场所没成交就转下一个。

流动股票上的小单,这基本是机械动作。不流动名字上的大单,这是个多阶段优化——而优化目标里除了你的成交质量,还混着别的东西。先从最明码标价的那部分讲起:费。

亮所路由:费的博弈

SOR 把单发到亮所时,要么挂簿(maker)要么立刻吃(taker),决策变量有四个:这个所给加流动性的返佣还是收吃流动性的费;具体费率——maker-taker 费用在每股 0.0015到0.0015 到 0.0030 之间,对 100000 股的单就是 150–150–300,方向反过来也一样;撮合引擎速度(对延迟敏感的策略有关系);以及成交概率——有些所对可成交单的成交率就是比别家高。

经典 maker-taker 模型:你挂限价单,有人扫了你,你拿返佣;你发可成交单吃流动性,你付费。但有些交易所是反过来的——taker-maker,吃单方反而收钱。这类倒挂场所对吃单方特别有意思:如果你的 SOR 配置成对激进单优先走倒挂场所,每股能多收千分之几美元的返佣。费虽小,乘上量就不小。

def route_marketable_order(side, qty, venues):
    """为可成交单挑最佳场所。"""
    best_venue = None
    best_effective_cost = float('inf')
    for venue in venues:
        quote = venue.nbbo(side)
        fee = venue.taker_fee(side)
        cost = quote + fee              # 成交的有效成本
        if cost < best_effective_cost:
            best_effective_cost = cost
            best_venue = venue
    return best_venue

这是玩具。真实 SOR 还要算成交概率、排队位置、延迟和反作弊保护——而且”有效成本最低”不一定赢:如果那个场所”有毒”,里面的知情交易者吃了你的流动性就把价格带走,账面省下的费转眼在价格上加倍还回去。毒性怎么量化,后面单独讲。

暗池路由:省点差的代价

暗池不挂报价。你的 SOR 发一笔单(或兴趣表达)过去,池子的撮合引擎试着把它跟挂着的单配上;配不上,单就在暗池里等,或者到时效后撤掉。

它的吸引力实打实:没有显示点差,跟暗单成交在点差内就是价格改善;你的单不显示在任何簿上,别人看不到你挂着;很多池子按 NBBO 中点撮合,中点成交的买单直接省半个点差。

但每一条都有对价。逆向选择:暗池里的流动性不是随机的——知情交易者偏爱暗池,正是为了避免被抢跑,所以你在暗池拿到的平均成交更可能”有毒”,对手方知道点什么。信息泄露:你的单不显示,但你 SOR 发出的 ping 本身是可观测的,老练的做市商看到 ping 就知道有人在找量。费:有些暗池对吃单收费,有时比亮所还高;有些付返佣但成交质量差。

Harris(2003,第 25 章)详细讨论过暗池。他指出暗池是对亮市执行的回应:机构不想让订单被看见,于是有了藏订单的场所。隐藏流动性和信息泄露之间的权衡,就是暗池的核心设计问题——也是下一节反作弊逻辑存在的原因。

反作弊:别让路由模式出卖你

一个对每笔单 ping 每个暗池的天真 SOR,会被识别然后被收割。模式太好认了:10 毫秒内为一笔 100 股的单扫过 8 个暗池,老练的对手立刻知道这是零售内部化流或者小算法,然后抢在它前面成交。

反作弊逻辑的目标是让 SOR 的行为不可预测。现代做法包括:设最小规模门槛,单子不够大就不 ping 暗池;随机化时机,绝不同时 ping 所有池;变换顺序,按天、按股票换着来;条件路由,最近显出知情流迹象的池直接跳过;再加上 IEX 式的减速带——IEX 用 350 微秒延迟中和最快的交易者,其他场所也跟进了各自的反延迟套利机制。

代价是你的 SOR 行为变得不一致:今天跳过了昨天 ping 过的池,TCA 里就多出一块说不清的偏差。少数 TCA 系统会跨订单对比 SOR 行为把这块算出来,大部分不算。

内部化:最不透明的一层

零售 broker 收到零售市价单时,单子往往被 broker 自己的交易台或 wholesaler(Citadel Securities、Virtu)在 NBBO 之内的价格直接成交。Wholesaler 为订单流付钱给 broker(PFOF),点差留给自己。

机构流的内部化没那么普遍,但存在。你的 broker 如果同时是做市商,可能报价在 NBBO 中点内部成交你。经济账听着打平——他赚点差,你省点差——但实操中内部化成交有时劣于显示价。大多数机构 SOR 在 broker 兼做市商时内置了内部化偏好,这同时是执行问题和监管问题:SEC 从 2020 年起就在盯 PFOF 和内部化。你 broker 的 SOR 内部化的量,很可能比你想要的多——多多少,后面讲披露规则时你会看到怎么查。

四个场景,四种路由

路由决策落到实处长什么样,举四个例子。

流动股票上的小市价单:SOR 同时路由到两三家亮所、在 NBBO 拿走流动性,可能顺手从倒挂场所捞点价格改善。成本 0–1 美分每股,你基本注意不到。被打的大笔限价单:SOR 挑 maker 返佣最高、队列最深的所挂上,并且刻意避开内部化——你要的是显示成交,不是 wholesale 成交。成本是负的:点差加返佣都是你赚。不太流动股票上的大市价单:SOR 先 ping 暗池找中点成交,能填多少填多少,再扫亮所收尾。成本 3–10 美分每股,看规模和波动率。新闻事件中的单:SOR 冻结路由、等簿稳定、再恢复——不这么做就是往一团乱的簿里冲,按过时报价付天价。

这四个场景之间的成本差不是细节。配得好的 SOR 稳定地每笔省 5–10 bp;配得烂的稳定地丢同样多。

买方能控什么,不能控什么

如果你是买方,你对 SOR 有一些杠杆,但比你以为的少。

你能指定的:场所偏好(“别把我的单发到暗池 X,那边成交有毒”)、反作弊参数(“随机化我的路由”)、暗池参与率上限(“暗池成交不超过我订单的 20%”)、亮所优先级(“激进单优先走倒挂场所拿返佣”)。你通常控不了的:内部化逻辑——那是 broker SOR 的内置件,你能整个禁掉但不能指挥它;延迟优化——broker 的低延迟基础设施是他的资产不是你的;反作弊 IP——最好的反作弊逻辑是 broker 的核心机密。

这就是 broker 选择极其重要的原因:SOR 是 broker 的知识产权,好坏差距很大。Broker 怎么选,另有一篇专门讲。

这里还有一层容易忽视的结构:算法和路由器是一个栈。VWAP 算法不在乎子单去哪个场所,它在乎成交干净、场所组合不多付钱;但寻流算法 ping 暗池等隐藏单,它自己就是半个 SOR;聚合多所流动性的 POV 算法也是。“算法”和”路由器”的边界早就模糊了——算法做高层决策(何时、多激进),SOR 做低层路由(去哪),但算法的决策约束 SOR,SOR 的能力反过来约束算法。所以评估 broker 的执行必须评估整个栈:算法好、SOR 烂的 broker,跑不过算法平庸、SOR 更好的。有经验的买方交易员都知道这点;没经验的不知道。

毒性检测:路由器的免疫系统

前面反复出现的”有毒”,现在给出操作定义:一个场所的成交如果系统性地跟着对你不利的价格变动,它就是有毒的。暗池 X 的成交在成交后 30 秒内一直比别家差 2–3 bp?降级它。

量化毒性有三条路。Markout:成交时刻 tt 之后,量 t+1st+1s、t+5st+5s、t+30st+30s 的价格变化,价格对你反向就是毒。成交率分析:一个池在 NBBO 上只填你 30% 的单、却在更差价位填 50%——它在挑对自己有利的时候成交你。对比模型预期:模型预测填价 X,你一致地填在 X − 2 bp,这个场所给你的就是比模型预期更差的成交。

def markout_score(fills, lookhead_ms=5000):
    """计算一组成交的平均 markout。"""
    total = 0
    for fill in fills:
        future_price = get_mid(fill.symbol, fill.time + lookhead_ms)
        if fill.side == 'BUY':
            total += future_price - fill.price
        else:
            total += fill.price - future_price
    return total / len(fills)

负 markout 等于场所的成交有毒(成交后价格对你反向),正 markout 等于成交对你有利。现代 SOR 用 markout 数据动态重排场所:过去一小时发毒的暗池当场降级。这也解释了为什么你 broker 的路由日内看起来不一致——它在适应。

用监管数据核账

那么怎么验证这一切不只是 broker 的说辞?从 2020 年起,SEC 一直在推路由透明化,给了你三样可以拿在手里的东西。

Rule 606 要求 broker 每季度披露路由实践:你的单被路由到了哪、付了或收了多少费。Rule 605 要求执行场所按月披露执行质量统计:实际拿到的成交质量对比当时可得的。ATS 报告规则要求暗池披露更多运营细节。

这对买方就是杠杆。606 报告显示 broker 把你 40% 的流量内部化在了差价位?拿数据怼回去。605 数据显示价格改善一致跑输行业中位?你有了重谈的理由。诚实的 broker 欢迎这套披露;不诚实的 broker 的 606 报告里全是星号和脚注——这本身就是信息。

具体的核账清单不长:拉你的 606 报告,看单子去哪了、付了什么;按场所比 markout,分清哪些池给好成交哪些给毒成交;查内部化率是否超出你的意愿;评估新 broker 时先发小单追踪路由;然后找 broker 的 SOR 团队当面聊路由逻辑——大 broker 都有这样的团队,解释不清楚的就是红旗。如果你在 broker 这边管 SOR,同一套逻辑反着用:持续量毒性、把毒场所从默认路由里摘掉,随机化但有界(过度反作弊会损执行质量),把 606 写成人能读的东西,并且接受 SOR 不是”设了就忘”的系统——它需要持续标定。

最后,市面上的 SOR 大致四种画像:零售导向(重内部化、吃 PFOF、NBBO 或亚美分成交,小单友好、机构流很差)、机构默认(亮暗混合、重用中点暗池、选择性内部化,多数机构流的合理平衡)、激进寻流(多池 ping、亮所挂返佣单、激进内部化,为大额流动单优化)、耐心型(以被动挂单为主、等成交,为不紧急的稳定名字优化)。你要哪种取决于策略;大多数机构交易员用第二或第三种。分清自己拿到的是哪种,是核账的第一步。

参考文献

  • Harris, L. (2003). Trading and Exchanges: Market Microstructure for Practitioners. Oxford University Press. 第 25 章。ISBN: 978-0-19-514470-3.
  • Perold, A. F. (1988). “The Implementation Shortfall: Paper Versus Reality.” Journal of Portfolio Management, 14(3), 4-9.
  • Almgren, R., & Chriss, N. (2000). “Optimal Execution of Portfolio Transactions.” Journal of Risk, 3(2), 5-39.