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 |
| 尾指数的股票间差异 | 剧烈波动 |
三条对因子研究的直接影响:
- 不能用高斯假设做统计推断——用正态假设算 t 值或做分位数分组,会系统性失真。
- 尾指数因股而异——若要做去极值或重尾化处理,阈值必须逐股估计。
- 别用 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 成分股)报告了一个看似与本文矛盾的结论:
源自订单簿状态与演化的变量,预测未来收益的效果不如源自成交记录的变量。
两者不矛盾,三点理由:
- 问题不同——Cont 等问的是"这一秒内价格为什么动了"(R^2 解释口径),Aït-Sahalia 等问的是"下一秒会不会涨"(样本外预测口径)。
- 同期最优 ≠ 预测最优——一个变量可以极好地解释当期价格变动,却不提供前瞻信息。Cont 等自己就强调 OFI 是 contemporaneous 的,本 wiki 在上文已标出这一点。
- 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 |
两点与教科书预期相反:
- 在 A 股,TI 比 OFI 强(1.71 vs 1.36,t 值 39.6 vs 28.1),与美股"OFI 完胜 TI"的结论相反。
- 剔除高频机器人订单后,剩余订单流的因子全面更强。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,等于把信号稀释了。
但要注意两点:
- 第三行是负的——同一套聚类换个组合方式就 −0.78。聚类本身不是护身符。
- 论文自己承认「最优的聚类设定在时间上不如基准稳定」,只是「聚类有益且可迁移」。
这不推翻 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
- 定义源: Cont Kukanov Stoikov 2014 Price Impact Order Book Events · 中文摘要
- 深度关系: 市场深度与冲击反比
- 平方根律(争议): 平方根冲击定律
- 扩展: 多档订单簿不平衡 (Multi-Level Order Book Imbalance)
- A 股: 订单流分解 · HFQ 高频报价识别
- 数据前提: concepts/data-features/Level-2 档位与委托队列 (L2 Depth and Order Queue) · concepts/data-features/逐笔成交的双向委托引用 (Bid-Offer Order Reference)
- 参与者分解: ClusterLOB 2026 · 机构与散户的订单流差异
- 事件类型分解: 分解的订单流不平衡 (Decomposed OFI · entities/Sitaru Calinescu Cucuringu 2023 Decomposed OFI
- 作者: Rama Cont · Stefan Zohren