← 返回 Quant Digests · 站点首页

别把 A-S 继续只读成教科书:这份 2026 Binance L2 repo 更该先测的是「fee-aware reservation-price maker × latency / queue realism」这条完整 raw alpha

更新时间:2026-04-06 08:44 UTC 研究时间:2026-04-06 08:43 UTC 类型:2026 GitHub 新 repo source audit(`README.md` + `code/README.md` + `code/as_backtest.py` + `code/run_as_pipeline.py`)+ Binance Futures 官方公开文档 + 经典 inventory-based market making 文献 grounding 主题标签:raw-alpha/maker/market-making/spread-capture/avellaneda-stoikov/reservation-price/inventory-risk/fee-aware/latency/queue/binance-futures/btcusdt/orderbook-l2/aggtrade/1m/3m/5m/15m/repo/paper/public-data/cost/risk 证据类型:开源研究 repo + 经典 market making 论文 + Binance 官方公开 API 文档

源文件:research/quant_digests/2026-04-06_0843_binance-l2-feeaware-as-maker-alpha.md

> 先回答一句:这篇东西的 base alpha 是什么? > > base alpha = 在高流动、持续有对手盘的 perpetual order book 上,双边提供流动性并吃 spread。 > 不是方向预测,不是 filter,也不是 overlay;真正的赚钱假设仍然是 spread capture。只是这份 repo 的价值在于,它把「费率、延迟、排队」这些最容易把纸面 maker alpha 打回负数的现实约束,直接塞进了同一个可复现研究壳里。

1. 这次看了什么

这轮更值得先收的,不是又一篇“maker 很赚钱”的截图,而是这份 2026 新 repo 对 BTCUSDT 真实 L2 的重建式 A-S 回测:它让我们第一次能把 maker raw alpha 本体,和 fee / latency / queue 这三层现实损耗拆开测清楚。

这轮选它,主要有 4 个原因:

  1. 不撞最近主题。 最近 digest 已经连续补了不少 pairs / carry / cross-sectional / LOB directional 题;maker 虽然也出现过,但更多是宽价差 alt-perp 壳,这次是 BTCUSDT + 真实 L2 + queue/latency realism,不是同一件事。
  2. 它是完整 raw alpha 壳,不是解释型综述。 repo 明确给了:
  1. 它正好补 desk 当前研究池里“maker alpha 现实校准版”的空缺。 之前很多材料把 maker alpha 写成“spread 足够宽就能收”;这份 repo 最有价值的地方是告诉我们:
  2. > gross edge 可能有,但净值常常先死在 fee,再死在 stale quote 和 queue 幻觉。

  3. 跟当前 short-cycle 研发链路能直接拼起来。 最近 desk 已经累了很多 OBI / OFI / liquidity veto / adverse selection overlay 素材;这份东西不是和它们竞争,而是给这些组件找到了一个更自然的宿主:
  4. maker raw alpha 本体 + toxicity/regime veto。

2. 这条东西的 base alpha 到底是什么

要先把话说死,不然很容易把 A-S 读歪:

> A-S 的 base alpha 不是“模型公式”,而是“被动挂单吃 spread”本身。

说人话:

所以这里:

它们都重要,但它们服务的仍然是同一个 raw alpha: two-sided spread capture

3. 这份 2026 repo 到底给了什么

3.1 来源与定位

README 开宗明义写得很清楚: 这不是 production trading system,而是一个“把完整研究 workflow 复现出来”的项目。它的研究路径是:

  1. 收集 Binance Futures snapshot / diff depth / aggTrade
  2. snapshot + diff depth 重建 order book;
  3. 跑带 inventory risk 的 Avellaneda–Stoikov backtest;
  4. 显式加入 fees、cash constraints、inventory constraints、order latency、cancel latency;
  5. 导出结构化 JSON 和 HTML 报告。

这点很关键: > 它不是只给了一个公式,而是给了从 public data 到报告输出的完整研究闭环。

3.2 当前 findings:最值钱的不是“能赚钱”,而是“知道先亏在哪”

repo README 自己总结的当前结论非常实:

这几句其实就是这篇 digest 的核心: maker alpha 值得收,但必须先当“gross alpha + execution haircut”去测,而不是把 gross 误当净 alpha。

3.3 它给的默认参数,已经足够拼成完整策略

README 列出的 as_backtest.py 默认参数:

这意味着它天然已经是一个完整策略壳:

所以它不是单独一个 filter,也不是只会给一个“alpha 方向”; 它本身就是一条能落成完整策略的 raw alpha shell。

4. 这份源码里真正值得 desk 抄的 5 个东西

4.1 它不是用 K 线触发成交,而是先重建 book,再回放 trade

as_backtest.py 先读取:

然后:

这是它相对很多 maker repo 最重要的升级: > 不再是“bar high/low 碰到报价就算成交”,而是起码有了 book state + trade replay。

这还不等于完美,但已经从“回测幻觉”往前走了一大步。

4.2 它把经典 A-S reservation price 真正落到了动态参数上

源码里最关键的一行是:

然后 half-spread 取:

这件事的交易翻译很简单:

这比很多“只背 A-S 公式”的实现强很多,因为它明确承认: 真实 maker quote 的下界,常常不是理论最优,而是成本最优。

4.3 它不是静态 sigma/k,而是滚动估计

源码里 dynamic_window_seconds = 10,会在滚动窗口里动态估计:

并在 gamma 未手动指定时,先用库存风险预算推一个 base gamma,再在候选 gamma 网格上做小规模选择。

这让它更像 short-cycle desk 会真的去做的事情: 不是用一个永远不变的全局参数,而是承认盘口毒性和 arrival intensity 是会随时间变的。

4.4 它把 queue 与 latency 作为 alpha 生死线,而不是回测注脚

源码里专门做了两件多数 repo 会跳过的事:

  1. queue ahead
  1. 订单生命周期

这两层现实性非常关键,因为 maker alpha 的大坑往往不是“公式不够优雅”,而是:

4.5 它把 size 真正受现金与库存约束,而不是永远固定不变

源码里 buy size 会被裁成:

sell side 也同样受库存边界控制。

这意味着它不是“理论上一直双边对称挂满”,而是会因为已有库存与现金状态,动态缩一边、保另一边

对 desk 来说,这正是 maker raw alpha 该有的定义:

5. 这份 repo 里最该记住的关键数字

5.1 5 分钟 baseline:gross 是正的,net 先被 fee 吃掉

README 给出的最新 5-minute full pipeline run:

这组数非常值钱,因为它告诉我们:

> 在真实 L2 + aggTrade 的短样本上,spread capture 毛利可以为正,但若 quote 不够宽、成交不够好、或 fill 数太稀,fee 很容易把净值直接吃穿。

5.2 zero-fee size sweep:粗看不是“完全没有 alpha”,而是“alpha 先薄后死”

README 还给了一个信息点:

这不是为了鼓吹“去掉 fee 就稳赚”; 恰恰相反,它告诉我们最现实的一句话:

> 这条 alpha 更像“有一点点 gross edge,但边际很薄”,所以任何 fee、latency、queue 误判都会把它从正打成负。

5.3 public data 的时间粒度足够给 1m/3m/5m/15m desk 做最小实验

Binance 官方公开文档写明:

这意味着这条研究不依赖私有撮合日志; 最小实验所需数据是公开可拿、更新频率也足够高的。

6. 这条东西为什么必须归成 raw alpha,而不是 overlay / filter

这个分类很重要。

如果这篇东西的核心只是:

但这里不是。

这里真正被交易的对象是:

所以:

换句话说: > 它不是“maker 的风控研究”;它首先是一条 maker raw alpha,然后顺手把风控做对了。

7. 它和 1m / 3m / 5m / 15m 的关系该怎么读

这条东西不是传统 K 线 directional signal,所以不能硬装成“每根 5m bar 预测未来 5m return”。

更诚实、也更适合 desk 的读法是:

1m / 3m

拿来做:

5m

拿来做:

15m

拿来做:

也就是说: > 事件时间是执行时钟,1m/3m/5m/15m 是管理时钟。

这并不削弱它的价值,反而让策略定义更符合实盘。

8. 对当前 desk,最值得先测的不是“能不能赚”,而是 4 个 realism haircut 各砍掉多少

这是我认为这份材料最该带来的测试框架:

8.1 最小可复现实验口径

数据源

公开性

更新频率

最小实验标的

最小实验窗口

8.2 先不要直接调参暴力找正收益,先跑 4 组对照

A. Toy A-S:无 fee、无 latency、无 queue; B. + Fee floor:加 maker fee 下界; C. + Latency:加 150ms/100ms 订单生命周期; D. + Queue:加 queue-ahead 与 aggTrade fill 检查。

最该看的不是最终绝对收益,而是每加一层现实性时:

如果 A 正、B/C/D 全负,那就别再骗自己“alpha 还在”。 如果 A/B/C 还能活,只是 D 砍掉一半,那下一步就该去做 queue / quote-priority 优化,而不是盲目 widen spread。

8.3 这条 alpha 对 desk 最现实的升级方向

我会把下一步拆成 3 级:

  1. 先复现 repo 原壳
  1. 再接 desk 已有的 microstructure veto 组件
  1. 最后才考虑扩到 ETH / SOL 或更宽价差 alt-perp

9. 我对这条东西的最终判断

结论一句话

值得进研究池,而且优先级不低。

但值得收的不是“Avellaneda–Stoikov”这个大名字本身,而是:

> 这份 2026 repo 终于把 maker raw alpha 最容易自欺的三件事——fee、latency、queue——一起摆上桌了。

所以对当前 desk,它的最佳用法不是:

而是把它当作:

10. 下一步怎么测

必做版(本周内可完成)

  1. 用 Binance 公开 snapshot + diff-depth + aggTradeBTCUSDT 连续 2015m session。
  2. 复现 4 组对照:Toy / +Fee / +Latency / +Queue
  3. 统一报 6 个指标:
  1. 只要 D 组(全现实)仍在 20 个 session 里有稳定的 gross>0 且 fee 占 gross 比例可压缩,才继续做下一层 veto;否则先停。

增量版(若必做版没死)

  1. 把最近 desk 已积累的:
  1. 最后再做一次跨标的 portability:

11. 来源

论文 / 理论地基

  1. Marco Avellaneda, Sasha Stoikov (2008). _High-frequency trading in a limit order book_. Quantitative Finance.
  1. Olivier Guéant, Charles-Albert Lehalle, Joaquin Fernandez-Tapia (2013). _Dealing with the inventory risk: a solution to the market making problem_. Mathematics and Financial Economics.

主体 repo

  1. Haoyu-tech (2026). _An Avellaneda-Stoikov market-making research project built on real Binance Futures BTCUSDT L2 data_. GitHub repository.

公开数据文档

  1. Binance Open Platform. USDⓈ-M Futures Market Data Docs.