Order Flow Imbalance (OFI)

大白话:订单流不平衡 = 在最优买卖价上,新挂上来的需求总量减去新消失的供给总量。一句话:现在站在最优价上等着成交的那些单子里,"买方比卖方多了多少股"。

定义. Cont Kukanov Stoikov 2014 Price Impact Order Book Events 提出的指标,衡量最优价位上供需的净不平衡。若为正,说明最优档的买盘力量强于卖盘;价格随后大概率上行。

为什么不用带方向的成交量

传统做法是"把每笔成交按主动买/主动卖加符号,求和"(trade imbalance, TI)。问题在于:两笔相邻成交之间可能发生几十次挂单和撤单,这些报价端的事件完全不进入成交量统计,但它们真实地改变了供需状态。

OFI 直接看最优档的挂单量变化,把撤单也算进来。实测上,OFI 对同期价格变动的解释力 R^2 \approx 65\%,TI 只有 32\%(Cont-Kukanov-Stoikov 2014,50 只美股 NYSE TAQ)。

事件级定义

最优买价 P^B、最优卖价 P^A、对应挂单量 q^B, q^A:

e_n = \mathbb{1}\{P^B_n \ge P^B_{n-1}\}\,q^B_n - \mathbb{1}\{P^B_n \le P^B_{n-1}\}\,q^B_{n-1} - \mathbb{1}\{P^A_n \le P^A_{n-1}\}\,q^A_n + \mathbb{1}\{P^A_n \ge P^A_{n-1}\}\,q^A_{n-1}

读法(四项各有分工):

情形 计入项 含义
买价上行或不变 +\mathbb{1}\{\cdot\} q^B_n 新最优价上的量全额算作新增需求
买价下行 -\mathbb{1}\{\cdot\} q^B_{n-1} 旧买价上的量消失 = 需求被撤走
卖价下行或不变 -\mathbb{1}\{\cdot\} q^A_n 新最优卖价上的量算作新增供给
卖价上行 +\mathbb{1}\{\cdot\} q^A_{n-1} 旧卖价上的量消失 = 供给被撤走

设计要点:价格改善时用新量,价格变差时用旧量。这样"最优档上现在有多少量"这个事实被单调计入,不需要人为判断每笔订单是主动还是被动——这是 OFI 相对 TI 的关键工程优势。

区间聚合:OFI_k = \sum_{n=N(t_{k-1})+1}^{N(t_k)} e_n。

分布是重尾的(因子工程必读)

OFI / 订单不平衡的取值分布不是高斯的。

Zhang Gu Xu Xiong Chen Zhou 2017 Power-Law Tails 在深交所 43 只股票(2003)上确认:

事实 数字
峰度 显著大于 3(高斯为 3)
OIBNUM 尾指数 \alpha(NLSE) 2.60
OIBVOL 尾指数 \alpha(NLSE) 2.19
尾指数的股票间差异 剧烈波动

三条对因子研究的直接影响:

  1. 不能用高斯假设做统计推断——用正态假设算 t 值或做分位数分组,会系统性失真。
  2. 尾指数因股而异——若要做去极值或重尾化处理,阈值必须逐股估计。
  3. 别用 MLE 估尾指数——它被大量小值主导;应用 NLSE。

详见 concepts/microstructure/订单不平衡分布 (Order Imbalance Distribution)。

同期关系,不是预测关系

这是最容易被误用的一点。 Cont-Kukanov-Stoikov 的模型是同期(contemporaneous)的:

\Delta P_k = \beta\, OFI_k + \epsilon_k OFI 描述的是同一区间内已经发生的价格变动,不是下一段的。作为因子直接做收益预测,能力有限;它更主要的用途是执行(判断自己下的单是在加剧还是在抵消当前的失衡)和理解价格形成的瞬时机制。 要拿到预测力,通常需要:(1) 对 OFI 做累积或差分;(2) 用滞后 OFI 跨资产/跨期传导。 Cont Cucuringu Zhang 2023 Cross-Impact OFI 给出了系统的答案:滞后跨资产 OFI 确实改善未来收益预测,但只在几分钟的时域内有效,衰减极快。这是把 OFI 变成可交易信号的主要途径,代价是只能做分钟级日内策略。 同期跨资产冲击则不同:那是假象(见下)。 ## 多档扩展与同期跨冲击的假象 单档 OFI 只看最优买卖价。concepts/microstructure/多档订单簿不平衡 (Multi-Level Order Book Imbalance) 说明:把前 L 档 OFI 用 PCA(第一主成分解释 89% 方差)整合成单一变量后,同期解释力从 71% 升到 87%——单档确实漏了大量信息。 但同期跨资产冲击是假象。用整合 OFI 后,跨资产项带来的 R^2 增量从 +2.71% 掉到 +0.71%(样本外甚至转负)。换句话说,"这只股票的收益受别的股票 OFI 影响"的表观现象,多半是它自己更深档位的 OFI 没被用上。这与 Capponi & Cont (2011) 的经典结论一致:协方差本身不构成因果证据。 ## 斜率与市场深度成反比 \beta \approx \frac{1}{c\,L}, \qquad L = \text{最优价上的挂单量}

深度越大,同样的 OFI 造成的价格变动越小。见 市场深度与冲击反比。

同期最优 ≠ 预测最优(与 Ait-Sahalia 2022 的辨析)

Ait-Sahalia Fan Xue Zhou 2022 High-Frequency Predictability(2.3 TB 全量 TAQ,101 只标普 100 成分股)报告了一个看似与本文矛盾的结论:

源自订单簿状态与演化的变量,预测未来收益的效果不如源自成交记录的变量。

两者不矛盾,三点理由:

  1. 问题不同——Cont 等问的是"这一秒内价格为什么动了"(R^2 解释口径),Aït-Sahalia 等问的是"下一秒会不会涨"(样本外预测口径)。
  2. 同期最优 ≠ 预测最优——一个变量可以极好地解释当期价格变动,却不提供前瞻信息。Cont 等自己就强调 OFI 是 contemporaneous 的,本 wiki 在上文已标出这一点。
  3. Aït-Sahalia 也把 OFI 列为收益预测的有效变量之一(与"近期成交不平衡""过去成交收益"并列),并非说订单簿信息无用,只是相对不如成交侧。

实践含义:OFI 的最佳用途是执行与机制理解(判断自己的单在加剧还是抵消当前失衡),不是直接当持仓 alpha。若要预测收益,用成交侧的变量更有效。

已知局限

局限 说明
需要订单簿数据 不能从只有成交序列的数据构造;A 股需 Level-2(见 concepts/data-features/Level-2 档位与委托队列 (L2 Depth and Order Queue))
同期性 见上,主要用于执行而非持仓 alpha
A 股实证最弱的一档恰是 OFI 本身 Shen (2023) 在 A 股做十分组检验:基准 OFI 的预测力反而弱于去掉高频报价订单后的 nonHVI/nonHNI(见下表)
交易成本后可能失效 有研究报 OFI 作为跨资产日内 alpha 池内 IC 仅 +0.0044,扣成本后 Sharpe 由正转负

A 股实证:OFI 未必是最强的那个(重要)

concepts/microstructure/订单流分解 (Order Flow Decomposition)(Shen 2023)把订单流按"是否高频报价(HFQ)"拆两半后分别构造不平衡因子,十分组多空检验:

因子 多空收益 (bp/min) t 值
HVI(HFQ 订单的量不平衡) 0.8149 24.15
HNI(HFQ 订单的笔数不平衡) 0.8247 24.02
基准 OFI 1.3607 28.10
基准 TI 1.7076 39.63
nonHVI(非 HFQ 的量不平衡) 1.4875 33.74
nonHNI(非 HFQ 的笔数不平衡) 1.9377 45.32

两点与教科书预期相反:

  1. 在 A 股,TI 比 OFI 强(1.71 vs 1.36,t 值 39.6 vs 28.1),与美股"OFI 完胜 TI"的结论相反。
  2. 剔除高频机器人订单后,剩余订单流的因子全面更强。HFQ 订单方向以噪声与博弈为主,nonHFI/nonHNI 代表真实供需。

这可能与 A 股的报单机制有关——A 股逐笔成交带买卖双向委托号,可直接判定主动方(见 concepts/data-features/逐笔成交的双向委托引用 (Bid-Offer Order Reference)),而美股 TAQ 需要用 Lee-Ready 之类规则推断主动方向。因此在 A 股,"带方向的成交量"这个信息源本身更干净,OFI 相对优势不成立。尚未确认这是机制差异还是样本期差异,列为 Open Question。

⚠️ 一个前提正在被挑战:OFI 把所有委托混在一起算(2026-10-20 补记)

OFI 的定义(Cont-Kukanov-Stoikov 2014)不区分委托来自谁——最优档挂单量的变化, 无论是做市商双边挂的、方向型交易者下的、还是撤单,都被同等计入。

ClusterLOB (2026 用无监督聚类把 MBO 委托流分成方向型 / 机会型 / 做市型三簇,然后对每簇单独算 OFI:

信号 样本外 Sharpe 每笔损益
聚类 OFI 1.34 0.66
不聚类的基准 0.60 0.30
另一种聚类变体 −0.78 −0.39

大白话:把做市商挂的单和方向型交易者下的单混在一起算 OFI,等于把信号稀释了。

但要注意两点:

  1. 第三行是负的——同一套聚类换个组合方式就 −0.78。聚类本身不是护身符。
  2. 论文自己承认「最优的聚类设定在时间上不如基准稳定」,只是「聚类有益且可迁移」。

这不推翻 OFI 定义,但给出了一个明确的后续方向:本 wiki 现有的 OFI 相关页面 (多档扩展、HFQ 剔除、A 股 TI 对比)全部建立在「单一 OFI」的口径上, 参与者维度的分解目前是空白。

另一个维度的分解:按事件类型拆(2026-10-21 补记)

上面说的是按参与者拆。还有一个正交的拆法——按订单簿事件类型拆:

分解的订单流不平衡 (Decomposed OFI (Sitaru-Calinescu-Cucuringu 2023)把标准 OFI 按 add(挂单)/ cancel(撤单)/ trade(成交) 拆成三份分别算,标准 OFI = 三者之和。

结论与参与者维度恰好相反,值得并读:

按事件类型拆(Decomposed OFI) 按参与者拆(ClusterLOB)
同期解释力 无提升 不适用(聚类只用于前瞻信号)
前瞻交易表现 PnL ×5,Sharpe 13.51 Sharpe 1.34(vs 基准 0.60)
最重要的分量 add(挂单),Lasso 选中频率约为其他分量 3 倍 三簇平权,论文未给分量重要性

两篇是叠加关系:ClusterLOB 附录 A 用的正是 Sitaru 等的这套分解, ClusterLOB 的增量是在分解之后再按参与者簇分开算。

一个必须记住的细节:隐藏限价单的成交不改变订单簿,因此 trade OFI 为零。 这在 A 股尤其要紧——A 股的匿名大宗与盘后交易会落进这一类。

A 股的特殊机会:A 股逐笔成交自带买卖双向委托号,能直接判定主动方—— 这意味着 A 股有可能在没有完整 MBO 数据的情况下做出「按参与者分组」的 OFI 变体 (用委托号聚类替代原始聚类)。这是本文方法在 A 股最值得做的适配。

Cross-ref