← 返回 Quant Digests · 站点首页

别把 OFI 只放进 HFT 教科书:对 crypto short-cycle desk,更该先测的是「extreme trade-flow z-score × next-5m continuation」这条 raw alpha

更新时间:2026-04-02 11:55 UTC 研究时间:2026-04-02 11:40 UTC 类型:2026 GitHub 新 repo source audit(`README.md` + `Order_Flow_Imbalance.ipynb`)+ 2014 *Journal of Financial Econometrics* 微观结构经典论文 grounding + Binance USDⓈ-M `1m` public taker-flow proxy 最小快检 主题标签:raw-alpha/microstructure/ofi/order-flow-imbalance/trade-flow/continuation/single-asset/binance/okx/btc/eth/sol/1m/3m/5m/15m/repo/paper/public-data/cost/execution 证据类型:repo-first(raw alpha 明确)+ classic-paper grounding + public-data portability probe

源文件:research/quant_digests/2026-04-02_1140_extreme-ofi-tradeflow-continuation-alpha.md

1. 先回答一句:这篇东西的 base alpha 是什么?

base alpha 很清楚:极端订单流失衡 → 极短期价格延续。

不是“盘口很热闹”这种解释性结论;真正能交易的是:

> 把一段很短时间里的 signed trade flow 做标准化,只有在失衡足够极端时才顺着做,赌接下来 1s ~ 5m 还有 residual continuation。

所以这轮它属于 raw alpha,不是 filter / regime / overlay。

---

2. 为什么这轮值得写它

最近 digest 池里已经有:

“同一标的自身 trade-flow 失衡 → 后续几分钟 continuation” 这条最朴素、最底层的 microstructure raw alpha,反而没有单独写成一篇 repo-first digest。

这轮值得 intake 的原因有四个:

  1. raw alpha 本体很清楚。
  1. 能直接服务 1m / 3m / 5m 高强度实验。
  1. repo 里已经把“信号 → threshold → accounting → inventory cap”串起来了。
  1. 它能给现有 desk 一个很实用的底层组件。

如果问:它为什么比继续补一个 filter 更值得? 答案是: 因为它本身就是一条可下注的 raw alpha,不是门卫。

---

3. 这次看的主来源

3.1 主来源:2026 新 repo(主)

3.2 理论地基:经典微观结构论文(辅)

3.3 最小 portability probe 数据源(公开可得)

---

4. repo 里最值钱的,不是“OFI”这个词,而是它把 raw alpha 壳子跑通了

这份 repo 的价值,不在“又一个 microstructure 名词”,而在它把一条基础但真实的 raw alpha 链条写出来了:

  1. 把 trade side 变成 signed quantity
  2. 按极短窗口累积 trade flow
  3. winsorize 掉极端大单噪音
  4. rolling z-score 标准化
  5. 回归到 forward return 上估 beta
  6. 只在预测收益超过动态阈值 j 时交易
  7. 做 inventory-capped accounting

翻成人话: 它不是“看到买盘多就机械追”;而是先把极短期买卖失衡转成 standardized signal,只在最极端一小撮时刻顺着打。

这就让它和“泛泛而谈订单簿压力”的材料不一样——它已经有了一个最小可交易外壳。

---

5. 代码级拆解:这条 alpha 在 repo 里怎么成型

5.1 数据层:六个 venue,2025-05,超过 2100 万条 trade

notebook 用的是 2025-05 的 BTC-USDT trade 数据,跨:

关键数:

Deribit 还专门做了合约单位归一:

这一步很重要: 作者不是在抽象讨论 OFI,而是在处理真实 venue 数据口径差异。

5.2 特征层:trade-flow 而不是整本 order book 事件流

预处理函数 preprocess_data() 的核心是:

repo 默认起点:

但后面 sweep 说明:

也就是说,这条线真正可用的不是“tick 级有神奇预测力”,而是: 持续几秒的同向 aggressor flow 才更像可交易压力。

5.3 目标层:直接回归 forward return

generate_signals() 做的不是分类器,而是最朴素的一条线:

动态阈值 j_threshold 的设计很关键:

翻成人话: 不是每个 OFI 都追,只追最极端那一层。

5.4 accounting 层:repo 已经承认 inventory 才是真问题

calculate_accounting() 的核心假设:

这个 accounting engine 暴露出一件很真实的事:

> entry alpha 不是主要问题;真正的问题是没有 exit logic 时,inventory 会把你拖死。

也就是说,这份 repo 的研究价值不是“已经可上线”,而是它把最该解决的失败点明牌写出来了。

---

6. notebook 里最有信息量的结果

6.1 participation sweep:极端太稀、太宽又滥,适中的参与率更好

在 OKX 上,作者先用:

得到:

| target participation | threshold j | Net P&L | |---|---:|---:| | 0.5% | 0.0148% | -$134,138 | | 1% | 0.0122% | -$518,880 | | 5% | 0.0074% | -$43,734 | | 10% | 0.0055% | +$393,253 | | 20% | 0.0034% | +$471,709 |

这组结果说明:

6.2 tau sweep:几百毫秒太噪,几秒级 flow 才像东西

在 OKX 上扫 tau

| tau | Net P&L | Trades | |---|---:|---:| | 10ms | -$168,338 | 26,331 | | 50ms | -$192,390 | 26,462 | | 100ms | -$43,734 | 26,597 | | 500ms | +$125,136 | 25,763 | | 1s | +$57,690 | 25,782 | | 5s | +$382,660 | 22,657 | | 10s | +$254,259 | 21,781 |

这基本把 desk translation 说透了: 真正值得试的不是超短 10~100ms 噪音 OFI,而是 500ms ~ 5s 这种“持续性 aggressor pressure”。

6.3 horizon sweep:1 秒还有 edge,5 秒以后衰减很快

在最优 tau = 5s 下,扫预测 horizon:

| horizon | Net P&L | Avg P&L / Trade | |---|---:|---:| | 1s | +$382,660 | +$16.89 | | 5s | -$284,294 | -$15.89 | | 10s | -$300,427 | -$16.04 | | 30s | -$156,212 | -$17.02 | | 60s | -$239,863 | -$18.74 |

核心结论非常直接: 原版信号的预测力几乎只活在最前面的极短一小段。

这就是为什么它适合被 desk 改写成:

6.4 cross-venue:只有 OKX 真正赚钱,Binance 勉强为正,其余全亏

在“golden config”下(tau=5s, T=1s, participation 15%):

| Exchange | Beta | Trades | Participation | Net P&L | |---|---:|---:|---:|---:| | OKX | 0.000023 | 75,513 | 12.59% | +$575,712 | | GATE_IO | 0.000032 | 84,462 | 14.08% | -$89,412 | | COINBASE | 0.000034 | 40,177 | 14.75% | -$150,631 | | DERIBIT | 0.000011 | 3,803 | 10.23% | -$5,629 | | BITSTAMP | 0.000057 | 614 | 14.91% | -$401,670 | | BINANCE | 0.000021 | 79,043 | 13.17% | +$7,119 |

这说明: 这条 alpha 明显有 venue-specific microstructure 依赖。

如果硬把 OKX 参数无脑平移到所有 venue,基本就是 overfit 自杀。

6.5 beta stability:高流动 venue 稳,稀疏 venue 飘

notebook 的 beta stability 分析显示:

所以这条线不是完全 statistical fluke; 但它要求:

低流动场景下,beta 会直接漂掉。

---

7. 最大的问题不在 alpha,而在 exit / inventory / scaling

repo 自己已经把最危险的点写得很清楚。

7.1 capped 版本也不算舒服

OKX capped 版本:

也就是说: 赚了 57.6 万,但最大回撤 124.5 万。

这不是 production-ready,只能算“entry alpha 有东西,但持仓管理很烂”。

7.2 去掉库存上限会直接炸穿

OKX capped vs uncapped:

| Metric | Capped | Uncapped | |---|---:|---:| | Executed trades | 75,513 | 90,000 | | Final inventory | 8.75 BTC | 643.06 BTC | | Net P&L | +575,712 | +785,718 | | Max Drawdown | -1.25M | -62.39M | | Fees | 9,679.71 | 13,777.01 |

这组数字的意义很简单: 别被更高的 net P&L 骗了;uncapped 版本本质上是拿方向性爆仓风险换出来的。

所以对 desk 而言,这篇材料最重要的 take-away 不是“OFI 好厉害”,而是:

> OFI entry 可以进研究池,但必须立刻和 inventory cap、timeout exit、re-entry cooldown 一起测。

---

8. 我补的 Binance public 最小快检:这条线搬到 1m / 3m / 5m 后,只有“极端那一层”还有点像样

为了避免这轮变成纯 notebook 摘抄,我补了一版 公开可得的 desk-portability probe

8.1 实验口径(简化,不是严格复现)

> 这不是 trade-level OFI replication;它更像“公开 1m 数据能不能先看到影子”的 portability probe。

8.2 最有信息量的结果

把三个标的合在一起看:

#### threshold = 1.5

#### threshold = 2.0

按单币看,在 threshold = 1.5 下:

8.3 这组数字说明什么

说明三件事:

  1. raw alpha 在公开粗粒度数据上不是完全消失。
  1. 只有最极端一层才值得继续测。
  1. 它非常吃 execution。

所以,这条线更像:

---

9. 对当前 desk,更合理的读法是什么

这篇材料最容易被误读成:

更合理的 desk 读法其实是:

9.1 它是 raw alpha,不是 filter

因为入场逻辑本身已经闭环:

9.2 但 repo 原版不是完整策略

为什么顶部字段我写“不可直接落地完整策略”? 因为它至少缺三件 production 必需品:

  1. 明确 exit
  2. re-entry / cooldown
  3. 更真实的交易成本与滑点

所以它当前更像: 清楚、可复现、值得继续 desk 化的 raw alpha 壳子。

9.3 对 1m / 3m / 5m / 15m 的映射

也就是说: 别把它当 15m 主信号;把它当 1m 生成、3~5m 兑现的 microstructure impulse,更合理。

---

10. 如果把它改成 desk 版,应该怎么补全 entry / exit / sizing / risk / cost

10.1 Entry

第一版建议:

10.2 Exit

别用 repo 的“没反向就一直扛”。 第一版应该直接测:

10.3 Sizing

10.4 Risk

10.5 Cost

至少做三档:

  1. maker optimistic
  2. hybrid realistic
  3. taker pessimistic

这条 alpha 的生死线基本不在信号,而在成本。

---

11. 它和现有素材池的关系

这条线最有价值的地方,在于它能补现有池子的一个底层层级:

所以它不是前两篇的重复,而更像更底层的 building block:

> 先确认“自身流动性冲击有没有短延续”,再决定是否叠加跨资产 lead-lag、盘口结构或执行层 veto。

这对 desk 很重要,因为它能回答一句基础问题: 我们看到的 microstructure alpha,到底是“本币自身冲击”还是“跨币传播”的次级反应?

---

12. 一句话结论

如果只带走一句话,我会带走这句:

别把 OFI 只放进 HFT 教科书;对 crypto short-cycle desk,更该先测的是「极端 trade-flow z-score 触发后的 3~5 分钟 continuation」这条最朴素的 microstructure raw alpha。

它的优点是:

它的现实约束也同样清楚:

所以它该进研究池,但应以: extreme-only + timeout exit + strict inventory cap + realistic cost ladder 继续推进,而不是把 notebook 原样当答案。

---

13. 下一步怎么测(直接执行版)

  1. 先做真实 trade-level 1s / 3s / 5s OFI 复现:只跑 BTC / ETH / SOL,不要一上来全市场。
  2. 把 exit 明确化:扫 hold 1 / 3 / 5m|z| 回落平仓、timeout exit 三套。
  3. 把 threshold 做 sparse 化:优先测 |z| >= 2.0 / 2.5,不要让 active ratio 超过 3%~8%
  4. 把成本从第一天就写进实验:maker / hybrid / taker 三档;如果 taker 全死,别硬说能做。
  5. 分币种测 portability:BTC、ETH、SOL 分开回测,别假设同一阈值通吃。
  6. 把它接到现有 lead-lag 研究上:先测 own-flow alpha,再测“只有 own-flow 和 cross-asset flow 同向时才放行”的组合版本。

---

14. 文件信息