暗池逆向选择:省下的半个价差被信息成本吃掉了多少
暗池(dark pool)的核心卖点是「省价差」——在美国,NASDAQ、IEX、BIDS 等暗池执行于 nbbo midpoint,理论上每笔成交比 lit 市场省 half-spread(即买卖盘报价差的一半,约 0.5 bp)。但这个「节省」是名义值,真实代价藏在信息成本里。本文用受控仿真证明:知情交易者(informed trader)在暗池的成交率(80%)远高于噪音交易者(40%),导致被动执行者(passive liquidity taker)在暗池更频繁地与知情者配对——每笔成交后 5 步,暗池 markout 为 −0.05 bps(lit 为 +0.08 bps),20 步后暗池 markout 达到 −23.0 bps(lit 为 −6.2 bps)。知情占比 30% 时,名义节省 0.26 bps,但逆向选择损失高达 4.13 bps,净收益为 −3.87 bps(比 lit 还亏);知情占比 50% 时,净额进一步恶化到 −4.95 bps。翻转点(净收益从正变负)出现在知情占比约 2.5%——现实市场几乎必然在此临界值以上。安慰剂检验显示:知情=0% 时,净收益恰好等于名义节省(0.20 bps),逆向选择损失精确为 0;打乱成交顺序后,逆向选择消失,净收益回到名义节省水平(高阶)。
核心结论:在知情交易者占比超过约 2.5% 的市场里,暗池的名义节省(half-spread × 成交率)必然被逆向选择成本覆盖。 知情占比 30% 时,暗池的名义节省约 0.26 bps,但被动执行者的 markout 比 lit 市场还差 4.13 bps,净收益 −3.87 bps——每省 1 分钱价差,要额外亏 16 分钱信息成本。知情者越多,暗池越像一个「主动把买家送到知情者嘴边」的机制。

一、为什么暗池「省价差」是纸面数字#
暗池(dark pool)在美国交易生态里占成交量的 30%~45%(某些交易日甚至超过 50%)。它的卖点简单直接:执行于 nbbo midpoint,比在 lit 市场买 ask 或卖 bid 省 half-spread。
但这个「节省」忽略了一个关键成本:逆向选择(adverse selection)。
暗池本质上是匿名撮合——你不知道对手是谁,做市商也不知道。当一个知情交易者(有私人信息,知道价格即将上涨)在暗池下单做多,他更急切、更单边(更倾向于成交),因此成交率远高于噪音交易者。结果:被动执行者在暗池里「中招」的概率比 lit 市场高得多。
直觉:想象你在赌场里找零——你「省了」一小笔服务费,但对手全是出老千的。省下来的钱,迟早加倍还回去。
二、受控仿真设计:把直觉拆成数字#
我们构造一个完全受控的 Kyle 风格双场所世界:
lit market(有价差) vs dark pool(midpoint 成交、零显性价差)
知情者(有 sig=±1 信号,价格将漂移 μ·MW) vs 噪音者(随机交易)
知情者成交率 80% vs 噪音者成交率 40%plaintext关键机制:知情者更急着成交,因此成交率更高。这导致暗池中被动执行者与知情者配对的概率上升——成交率高本身是逆向选择的信号。
# 知情者成交率 80%,噪音者 40%
FR_INFORMED = 0.80 # 知情单更急着成交
FR_UNINF = 0.40 # 噪音单成交更慢
# 被动执行者视角的 markout 计算
for t in range(n_periods):
is_inf = np.random.rand() < informed_frac
passive_dir = np.random.choice([-1, 1]) # 随机买或卖(中性)
ep = mid[t] # 当前成交价
fm = mid[t+MW] # MW 步后的 future mid
# 是否在暗池成交?
dark_filled = np.random.rand() < (FR_INFORMED if is_inf else FR_UNINF)
if dark_filled:
# 暗池在 midpoint 成交,省了 half-spread
# 但知情者 counterparty 时,做市商已调整报价
adverse = beta * drift * MW if is_inf else 0.0
ret = passive_dir * (fm - ep) / ep - adverse
else:
# lit 市场付 half-spread(买付 ask,卖收 bid)
ret = passive_dir * (fm - ep) / ep - passive_dir * half_spreadpython校准参数(SEED = 20260806,600 轮蒙特卡洛):
| 参数 | 值 | 说明 |
|---|---|---|
| half-spread | 0.5 bps | 典型的美国股票买卖价差 |
| 知情信号漂移 μ | 1.0 bps/步 | 知情信号对应的价格移动 |
| markout 窗口 MW | 5 步 | 衡量成交后信息泄露的时间 |
| 知情者暗池成交率 | 80% | 知情者更急着成交 |
| 噪音者暗池成交率 | 40% | 噪音者不那么急 |
三、Markout:成交之后,价格往哪走#
Markout 是衡量逆向选择的最直接指标:成交后 T+MW 步,价格向哪个方向漂移?
知情者买后,价格上涨 → 知情者 markout > 0(他赚了) 噪音者买后,价格期望不变 → markout ≈ 0 被动执行者(在暗池与知情者配对)买后,价格同样上涨,但他成交价已被做市商调整 → markout < 0

黑线(净收益 = 名义节省 − 逆向选择):知情占比超过约 2.5% 后,净收益翻负——暗池从「节省」变成「净亏损」。
四、成交率与订单质量:逆向选择的直接证据#
暗池成交率本身就是一个逆向选择预警指标:

为什么成交率高反而是坏事?
知情者有私人信息,他们下单时更紧迫——他们需要立刻成交,不能等。而噪音者可以等待更好的价格慢慢来。因此:
- 知情者暗池成交率 = 80%(急着成交)
- 噪音者暗池成交率 = 40%(不急,慢慢等 lit)
- 被动执行者随机与任一订单配对 → 在暗池里,被动者被配对到知情者的概率 > 随机概率
这意味着:暗池整体成交率越高,说明你越可能在跟知情者交易。成交率是一个「逆向选择温度计」。
五、成本分解:名义节省 vs 逆向选择#
知情占比 30% 时,各成本项分解如下:

| 场景 | 名义节省 | 逆向选择损失 | 净额 |
|---|---|---|---|
| 知情=0%(全噪音) | 0.20 bps | 0.00 bps | +0.20 bps ✅ |
| 知情=30% | 0.26 bps | 4.13 bps | −3.87 bps ❌ |
| 知情=50% | 0.30 bps | 5.25 bps | −4.95 bps ❌ |
知情占比 30% 时,逆向选择损失是名义节省的 15.9 倍。这不是边际效应——这是压倒性的信息不对称。
六、安慰剂检验:三个对抗式验证#
安慰剂 1:知情=0% 真值检验#
当我们把所有知情交易者删掉(informed_frac = 0),理论上:
- 没有价格漂移 → 逆向选择 = 0
- 暗池每笔省 half-spread → 净额 = 名义节省 = 0.20 bps
仿真结果:净额 = 0.20 bps,逆向选择损失 = 0.00 bps(精确到小数点后 4 位)✓
这个检验证明:当市场里没有信息不对称,暗池的节省就是真实的。但现实市场里,这假设从来都不成立。
安慰剂 2:打乱成交配对#
当我们随机打乱「谁和谁成交」(把成交配对和订单类型独立化),知情者 vs 噪音者的成交率差异被抹平,逆向选择损失归零。

打乱后,净额精确回到名义节省水平。这证明:逆向选择完全来自「知情者成交率 > 噪音者」这个结构本身,而非来自价格噪声。
安慰剂 3:知情者 vs 噪音者的暗池 markout 差异#

知情者在暗池的 markout = −12.5 bps(恒定,与知情占比无关),而噪音者在暗池的 markout ≈ 0 bps。暗池对知情者是亏的,对噪音者是平的,对被动执行者(随机与之配对)是负的——三方都在被知情者单向收割。
七、陷阱与局限(诚实版)#
1. 仿真参数 ≠ 现实参数
本文的 drift=1.0 bps/步、β=0.25 是校准到「知情 30% 时净收益变负」的参数。真实市场里知情信号强度、市场微观结构噪声、订单簿动态都不同。仿真结论是定性方向正确,定量数字仅供参考。
2. 匿名性假设的边界
暗池确实匿名——但 IEX 的「speed bump」机制、某些暗池的反钓鱼规则、部分知情者的大单拆小策略,都会改变配对概率。匿名不是绝对的。
3. markout 窗口是人为选择
本文用 MW=5 步(T+5 分钟级别)衡量信息泄露。真实世界里,信息泄露速度取决于信息精度、资产波动率、流动性。窗口越长,逆向选择越明显(T+20 步时暗池 markout = −23 bps vs lit = −6.2 bps)。
4. 未建模滑点 / 冲击成本
暗池「大单优先」机制(block priority)让大单成交率更高——如果你的订单规模大,你在暗池反而更可能跟大单(通常是知情者)配对,逆向选择更严重。
5. 数据来源是仿真,不是真实交易记录
所有图表基于受控仿真(已知真值)。真实市场里,暗池运营商的 fill-rate 数据不公开,第三方研究依赖有限的数据集(e.g. Almgren & Chriss 2000s 的经验数据)。
八、实践 Checklist#
如果你负责执行算法或交易成本分析,以下是可以立刻用的检查清单:
- 在暗池下单前,先看你的标的:A股里,换手率高、散户多的股票(如小盘股、概念股),知情占比相对低;大盘蓝筹、机构重仓股里知情占比更高
- 用 fill-rate 逆向选择预警:如果某暗池的 fill-rate 在你交易时段异常高(>60%),说明市场里知情者活跃,此时回避暗池
- VWAP/TWAP 里暗池比例要设上限:建议暗池比例不超过 30%,剩余走 lit 市场;算法执行时,暗池只用「不急着成交」的被动单
- 监控 markout 后验:跑执行后分析(post-trade analysis),用 T+5min 或 T+30min mid 作为基准,分解 lit vs dark 的实现价差;超过阈值就触发预警
- 不同标的用不同策略:高频 alpha 剥头皮策略不需要暗池(价差太薄);中频价值投资、事件驱动策略,如果标的知情者多,用暗池反而亏更多
- 知情者比例是动态的:财报发布前后、宏观数据公布前,暗池里知情者密度激增——这些时段临时关闭暗池执行,切换到 lit 的 IOC 或市价单
本文所有数字基于 SEED=20260806 的受控仿真,真实市场数字可能存在量级差异。脚本见 scripts/gen_dark_pool_adverse_selection.py,原始数据见 public/images/dark-pool-adverse-selection/stats.json。