OFI 完整的微观结构 Alpha Pipeline
从数据 → 信号 → 决策 → 执行 → 风险反馈 的顺序来,你可以把它直接当成系统设计蓝图。
一、整体总览(先给你一张“文字结构图”)
┌────────────────────────────────────────┐
│ ① 数据与微结构层 │
│ LOB / Trades / Quotes / Latency │
└────────────────────────────────────────┘
↓
┌────────────────────────────────────────┐
│ ② 状态识别(Regime) │
│ 波动 / 流动性 / 市场节奏 / 风险态 │
└────────────────────────────────────────┘
↓
┌────────────────────────────────────────┐
│ ③ Alpha 信号层 │
│ Lead-Lag / OFI / Volume Cluster / │
│ Micro-price / Short-term Momentum │
└────────────────────────────────────────┘
↓
┌────────────────────────────────────────┐
│ ④ 信号融合与决策层 │
│ 加权 / 条件化 / 非线性压缩 │
└────────────────────────────────────────┘
↓
┌────────────────────────────────────────┐
│ ⑤ 执行层(Execution) │
│ Aggressive / Passive / Smart Routing │
└────────────────────────────────────────┘
↓
┌────────────────────────────────────────┐
│ ⑥ 风险与反馈层 │
│ 仓位 / 回撤 / 执行质量 / 自适应更新 │
└────────────────────────────────────────┘
OFI 在第 ③ 层,但它会“向下影响执行,向上影响决策权重”。
二、① 数据与微结构层(你的一切上限)
这一层决定了:
你是在做“微观结构交易”,还是在用高频数据做低频策略
核心数据流
- L2/L3 Order Book(增量更新,非 snapshot)
- Trades(是否 aggressive、方向)
- Quotes(spread、mid、micro-price)
- 时间戳(本地 vs 交易所)
📌 关键点:
- 所有信号 必须基于事件驱动(event-based)
- 不用固定时间 bar(这是低频思维)
三、② 状态识别层(90% 的人没有)
这是是否允许 alpha 发声的“开关层”。
常见 Regime 状态
| 状态 | 含义 |
|---|---|
| Volatility Regime | 高 / 低 / 爆炸 |
| Liquidity Regime | 深 / 薄 |
| Spread Regime | 正常 / 扩张 |
| Market Pace | 快 / 慢 |
| Risk Mode | 正常 / 降仓 / 禁止交易 |
示例
if spread > Q90
or depth < Q10
or vol > max_vol:
trading_allowed = False
📌 原则:
Alpha 再强,状态不对 → 不交易
四、③ Alpha 信号层(OFI 在这里)
这一层的特点是:
多个弱但不同来源的信号并存
典型信号分类
1️⃣ 方向型(Information)
- Lead-Lag(跨市场 / 跨合约)
- Micro momentum
- Short-term return imbalance
2️⃣ 力度型(Pressure)
- OFI(你关注的重点)
- Aggressive volume imbalance
- Queue depletion rate
3️⃣ 结构型(Microstructure)
- Micro-price deviation
- Spread asymmetry
- Book convexity
OFI 在这一层的定位
OFI 不说“方向对不对”,只说:
“盘口是否正在朝某个方向用力”
所以它通常是:
- 权重因子
- 条件因子
- 执行调节输入
五、④ 信号融合与决策层(灵魂层)
这是大多数文章完全不讲,但真正赚钱的地方。
1️⃣ 条件化(Conditioning)
Use OFI only if:
LeadLag_signal ≠ 0
👉 防止 OFI 单独乱叫。
2️⃣ 加权融合(Weighted Alpha)
alpha =
w1 * LeadLag
+ w2 * OFI_scaled
+ w3 * VolumeCluster
权重是:
- 状态相关
- 非常数
- 经常用 EWMA / Online update
3️⃣ 非线性压缩(极其重要)
alpha_final = tanh(alpha)
📌 原因:
- 防极端值
- 保持仓位平滑
- 防 spoof / 突发事件
六、⑤ 执行层(Execution ≠ 下单)
执行层回答的是:
“现在这笔交易,如何下,代价最小?”
OFI 在这里的第二次出场
if OFI_z > 3:
use aggressive (market / IOC)
elif OFI_z > 1:
use passive limit
else:
wait
结合流动性
- 深度薄 → 小单拆分
- 深度厚 → 提高 aggressiveness
📌 很多团队:alpha 与 execution 是两套系统,但 OFI 是桥梁
七、⑥ 风险与反馈层(系统能否活下来)
这是一个闭环。
风险控制
- Max position
- Drawdown stop
- Kill-switch(异常延迟 / 行情)
执行反馈
- Slippage vs OFI
- Fill rate
- Queue position decay
if OFI strong but slippage ↑:
reduce aggressiveness
👉 系统会“学习盘口是否可靠”
八、把 OFI 的“生命周期”串起来(非常重要)
OFI 生成
↓
信号层:作为 pressure factor
↓
决策层:影响 alpha 强度
↓
执行层:影响 aggressiveness
↓
反馈层:校正 OFI 可信度
这就是为什么:
OFI 是“贯穿系统”的信号成分,而不是一个策略
九、最小但“正确”的完整 Pipeline(伪代码)
if not regime_ok():
return
leadlag = compute_leadlag()
ofi = compute_ofi_scaled()
volume = volume_cluster()
if leadlag == 0:
return
alpha = tanh(
w1 * leadlag +
w2 * ofi +
w3 * volume
)
size = base_size * abs(alpha)
if ofi > high_threshold:
execute_aggressive(size)
else:
execute_passive(size)
十、一句“系统级”总结给你
微观结构 Alpha 不是“找一个强信号”
而是“在对的状态下,让多个弱信号一起说同一句话”
OFI 的价值,正是在这里。