
每个交易日的最后十分钟,市场上演一场公开的资金对撞:交易所会实时发布收盘集合竞价的失衡信息——有多少买单和卖单等着在收盘价成交、缺口有多大、朝哪个方向。美股的 MOC(Market-On-Close)失衡数据从 15:50 开始由纳斯达克和纽交所分批披露,A 股 14:57 进入收盘集合竞价后订单簿冻结可见。这不是什么另类数据,是交易所白纸黑字广播给所有人的信息。
有趣的地方在于:这个公开信号在披露之后依然能预测尾盘价格。买单失衡的股票,从披露时点到收盘继续上涨;卖单失衡的继续下跌。信息人人可见,价格却不会瞬间调整到位——因为吸收这些失衡订单需要真金白银的流动性,而流动性提供者要收补偿。
这篇文章用 1250 个交易日 × 100 只股票的合成面板把这个信号完整检验一遍:传导强度多大、单调性是否干净、顺势和反转两条腿哪条能活过交易成本。
失衡从哪来:被动资金的日历化刚需#
收盘竞价失衡的燃料主要有三股,而且都是”身不由己”的:
指数基金的申赎执行。 被动基金以收盘价计算净值,为了消灭跟踪误差,申购赎回对应的成分股买卖几乎全部塞进收盘竞价。全球被动化率越高,收盘竞价占全天成交的比例越大——美股这一比例已经超过 10%,指数调整日能到 30% 以上。
衍生品到期与对冲调仓。 期权做市商的 Delta 对冲、期货现货套利的平仓,很多都锚定收盘价执行。
窗口粉饰与基准执行。 机构交易台的执行质量考核经常以收盘价为基准(MOC benchmark),大单被切到尾盘集中释放。
这三股资金的共同特征:对价格不敏感、时间上不可推迟。它们不是因为看多才买,而是因为规则要求今天收盘前必须买。这就是经典的流动性需求冲击——需要有人临时接盘,接盘者索取的价格让步,就是失衡信号的预测能力来源。
Bogousslavsky & Muravyev (2023) 对美股收盘竞价的研究发现,竞价失衡对尾盘收益有显著预测力,且收盘价相对”公允价格”的偏离在次日开盘部分回吐——先顺势、再反转的两段结构。
合成实验设计#
用可控参数把机制植入数据,然后检验能不能把植入的参数还原出来:
import numpy as np
rng = np.random.default_rng(42)
N_DAYS, N_STOCKS = 1250, 100 # 5 年 × 100 只
BETA = 0.12 # 失衡 -> 尾盘收益传导系数
REVERSAL = -0.35 # 次日开盘反转比例
# 失衡信号: (买单-卖单)/(买单+卖单), 截面标准化
imb = rng.standard_normal((N_DAYS, N_STOCKS))
# 尾盘收益 (披露时点 -> 收盘), 波动尺度 25bp
noise = rng.standard_normal((N_DAYS, N_STOCKS))
tail_ret = (BETA * imb + np.sqrt(1 - BETA**2) * noise) * 0.0025
# 隔夜收益: 收盘冲击的 35% 在次日开盘回吐
overnight = (REVERSAL * BETA * imb
+ rng.standard_normal((N_DAYS, N_STOCKS)) * 0.9) * 0.0030python三个设计要点:
- 传导系数 β=0.12:失衡每高一个截面标准差,尾盘多涨 3bp(0.12 × 25bp)。这个量级参考了实证文献中 MOC 失衡的预测强度,属于”真实但微弱”的信号。
- 反转系数 -0.35:收盘价被失衡推离公允价的部分,次日开盘回吐约三分之一。这对应流动性冲击的暂时性成分。
- 策略层加入不可分散的共同噪声:竞价套利是拥挤赛道,同类资金同进同出造成 spread 层面的共同波动。不加这一项,100 只股票的截面平均会把 Sharpe 推到 14 以上的假读数——那是合成数据的分散化幻觉,不是策略质量。
检验一:信号强度与单调性#
对全部 125,000 个股票-日观测做回归:
- 相关系数 0.12,回归斜率 3.0 bp/σ,t = 42.9——精确还原植入的 β=0.12(0.12×25bp=3bp)。t 值如此夸张是因为样本量巨大且机制是我们亲手植入的,真实数据里同样的经济效应 t 值通常在 5-15 之间。
- 五分组严格单调:卖压最重的 Q1 尾盘平均 -4.1bp,买压最重的 Q5 平均 +4.3bp,中间三组 -1.5 / -0.1 / +1.8 bp 整齐排列,没有任何一组跳序。
单笔 3-4 个 bp 听起来像蚊子腿,但这是每天都发生、横截面上百只股票同时可做的蚊子腿。日频高容量小信号的复利数学,正是统计套利的标准形态。
检验二:两条腿的生死判决#
信号有两段结构,对应两条完全不同的策略腿:
腿 A(尾盘顺势):失衡披露后,做多买压组、做空卖压组,持有到收盘平仓。持仓时间约十分钟。
腿 B(隔夜反转):收盘时反向建仓——做多被砸出深坑的卖压组、做空被推高的买压组,次日开盘平仓,赚收盘价偏离的回吐。

1250 个交易日的结果(单边成本 3bp):
| 策略腿 | 毛年化 | 毛 Sharpe | 净年化 | 净 Sharpe | 净值 MDD |
|---|---|---|---|---|---|
| 尾盘顺势 | 21.1% | 6.46 | +6.0% | 1.84 | 3.0% |
| 隔夜反转 | 7.5% | 1.95 | -7.6% | -1.98 | 32.0% |
判决非常清晰:同一个信号,一条腿活着,一条腿死了,死因都是成本。
尾盘顺势腿毛信号足够厚(日均约 8bp 的多空价差),扣掉 6bp 双边成本还剩 2bp 出头,靠 53.8% 的日胜率日拱一卒。隔夜反转腿的毛信号只有顺势腿的三分之一左右(回吐比例 35% × 传导幅度),同样的 6bp 成本直接把它打成负值——毛 Sharpe 1.95 看着能用,净了以后是 -1.98,方向整个翻过来。
这是所有微观结构策略的通用教训:毛收益排名和净收益排名可以完全不同,信号厚度必须先和成本对表再谈胜率。
检验三:β × 成本的生死线#
把传导系数和单边成本做成网格,看净 Sharpe 在什么组合下由正转负:

几个读数:
- β=0.12(本实验基准):1bp 成本下净 Sharpe 4.9,3bp 下 1.8,5bp 下 -1.2。机构级执行(1-2bp)很舒服,零售级执行(5bp+)直接出局。
- β=0.04(弱信号):任何成本水平都是负的。信号强度不够时,讨论执行优化毫无意义。
- β=0.16(强信号):8bp 成本下依然勉强为正。信号厚度是唯一真正的护城河。
竞价失衡策略的成本还有一个隐藏恶化项:你的对手盘恰恰是收盘竞价里的失衡本身——你想吃的价差和你自己的市场冲击直接竞争。规模上去之后,你的买单会填平你想利用的卖单失衡,策略容量以肉眼可见的速度衰减。
实盘落地的四个坑#
坑一:披露时间线必须严格对齐。 美股 MOC 失衡 15:50 首次披露、之后每 5 秒更新,15:55/15:58 有关键的订单截止节点。回测里用 15:50 的失衡数据配 15:50 之后的收益是干净的;但如果不小心用了最终失衡(收盘时才完全确定)配整段尾盘收益,就是教科书级 look-ahead——最终失衡里包含了 15:50 之后新进场订单的信息。
坑二:A 股的竞价结构完全不同。 A 股 14:57-15:00 收盘集合竞价期间不接受撤单、订单簿冻结,失衡信息的形成和披露机制与美股 MOC 两回事,参数不能平移。深交所竞价期间有行情快照可用,但三分钟窗口留给反应的时间极短,对执行系统的延迟要求是另一个量级。
坑三:指数调整日是另一个物种。 成分股调入调出日的收盘竞价失衡是常规日的十倍以上,且方向早已被全市场预期、被指数套利资金提前定价。把这些极端日和常规日混在一个模型里,参数会被少数极端样本绑架。正确做法是把调整日单独建模或直接剔除。
坑四:合成实验假设失衡截面独立。 真实市场中失衡有强烈的共同成分——被动申赎是市场级的,某些日子全市场 80% 的股票同向失衡。这时多空对冲名存实亡,策略在这些日子实际扛着方向性敞口。本实验在策略层加了共同噪声近似这一点,但真实的失衡相关结构(尤其危机日)比高斯共同因子更恶劣。
结论#
收盘竞价失衡是少数公开、高频、机制清晰的订单流信号:被动资金的日历化刚需制造失衡,流动性提供者收取补偿,补偿以尾盘价格延续的形式留下可测量的痕迹。合成实验精确还原了植入机制:3bp/σ 的传导、五分组严格单调、顺势腿在机构成本下存活(净年化 6.0%、Sharpe 1.84)、反转腿被成本处决。
它的定位不是核心 alpha,而是执行层的增强模块:本来就要在尾盘交易的资金(被动跟踪、日内平仓),把订单按失衡方向微调时点和限价,几乎零成本地捡走这层补偿。专门为它建一条策略线,则要先诚实回答两个问题——你的单边成本能不能压到 3bp 以下,你的规模会不会填平你想吃的失衡。
本文实验基于合成数据,传导系数与成本参数参考公开文献设定,实盘表现取决于真实市场的失衡分布与执行质量。