← 返回 Quant Digests · 站点首页

别把这份 2026 funding-arb bot 只读成 Telegram 执行器:对 short-cycle desk,更该先测的是「positive-net-APR streak admission × negative-hours stop」这条完整 raw alpha 壳

更新时间:2026-04-16 00:20 UTC 主题标签:raw-alpha/carry/funding/cross-venue/perp-perp/relative-value/stat-arb/delta-neutral/net-carry/positive-streak-admission/negative-hours-stop/liquidation-distance-auto-close/telegram-bot/backpack/lighter/hyperliquid/grvt/aster/1m/3m/5m/15m/repo/cost/risk

源文件:research/quant_digests/2026-04-16_0018_positive-streak-netcarry-shell.md

1. 这次看的是什么

这次主看的是 kohtabeloff/funding-arb-bot(2026)。表面上它像个 Telegram 交易机器人:连 5 家交易所、给你发信号、还能手动点按钮开平仓。

但如果只把它读成“执行面板”,就会错过它真正对我们 desk 更有价值的部分:它把一条早就知道存在的 cross-venue funding carry,往“什么样的 spread 值得上、上了以后什么时候该滚、什么时候该硬关”推进了一步。

它最值得 intake 的,不是“跨所 funding 有差异”这个老结论,而是 repo 给了一套更像能直接上线的 admission + protection 壳

  1. 只报 MIN_PAIR_APR >= 50% 的 pair;
  2. 不是只看当前一刻 net APR,而是显示这对 pair 已经持续正 net APR 多久(pair_streak);
  3. 短暂掉到负 carry 不立刻砍,给 4h 宽限;
  4. 若 net APR 直接恶化到 -50%,或者任一腿离强平太近,就自动平仓;
  5. 信号、仓位、历史、设置都写进 SQLite,说明它不是纯概念图,而是完整的策略壳。

翻成人话: 这份 repo 真正可带走的,不是“哪里 funding 高”这种排行榜,而是“同一条 cross-venue carry alpha,怎样用持续性准入 + 负 carry 宽限退出,把它从扫描器推进到更像 production 的完整壳”。

---

2. 一句话结论

> 这份 repo 最值钱的,不是又证明了一次 same-underlier cross-venue net carry 能做,而是把它写成了更像 production 的版本:50%+ net APR 准入positive streak4h negative-hours stop15% liquidation-distance auto-close。对 short-cycle desk,下一步最值得先测的不是“每次 funding diff 为正就开”,而是“只做持续为正且没明显恶化的 pair”。

---

3. 为什么它能算 raw alpha,而不是纯风控/工具

先把话说死:

repo 里的关键函数 find_pair_opportunities(...) 已经把这个写得很直白:

所以它不是“风控先于 alpha”的材料,恰恰相反: 它先承认 base alpha 就是 cross-venue carry,然后再在 admission / hold / forced-exit 层补全。

这对我们 desk 是对的,因为当前更缺的不是“funding differential 存不存在”,而是:

---

4. 这份 repo 新增的、真正值得 intake 的点

4.1 positive net APR streak:不是只看当前数值,而是看它活了多久

repo 在 main.py 里专门维护了一个 _funding_streak 状态表:

逻辑非常直接:

这件事的重要性在于:

它把“当前很肥”与“已经持续存在”分开了。

很多 funding spread 看起来大,只是某个时点临时抽风;但 desk 真正想拿的是:

所以这轮最值得复现的不是 plain net_apr 排名,而是:

> positive-streak gated net carry:只做 net_apr 为正且持续时间够长、并允许短暂 dip 的 pair。

这比“只要当前 diff 为正就开”更接近真实可活的 short-cycle carry pocket。

4.2 negative-hours stop:不要一负就砍,也不要无限死扛

repo 的保护阈值写得很死:

README 也明确写了自动平仓条件:

这其实是在回答一个很实战的问题:

carry pair 的恶化,并不一定要等到价格层面完全炸开才处理。

更诚实的持仓管理是:

这比很多 funding 策略里常见的“开了以后只等 settlement / 只看手动关”更完整。

4.3 liquidation-distance auto-close:把“市场中性”当成有杠杆风险的仓位来管

repo 还明确做了强平距离保护:

即:

这很重要,因为 cross-venue carry 最容易自欺的一点就是:

> “反正我两边对冲了,所以方向风险很小。”

实际上并不是。

不同 venue 的:

都不一样。pair 在组合层面接近中性,不等于任一单腿不会先被炸掉。

repo 至少诚实地把这件事写进了自动化规则里,而不是假设“对冲 = 安全”。

4.4 它真的不是空壳:有 DB、持仓、历史、可扩仓

repo 不是只有扫描器。db/database.py 里有:

README 里还明确暴露了:

这意味着它不是“讲一个 carry 故事”的 repo,而是已经把 entry / monitoring / scaling / exit / logging 串起来了。

对我们来说,这正是“可直接落地完整策略”的标准之一。

---

5. 它和之前几篇 funding digest 的关系:哪里重复,哪里不重复

要老实讲: base alpha 本身并不新。

此前 digest 已经覆盖过:

所以这次不能再把主题写成泛泛的“跨所 funding differential 又能套利”。那样就是重复。

这次真正新增的 intake 点是:

  1. positive-streak admission:不是只看当前 spread,而是看它持续了多久;
  2. negative-hours stop:不是刚翻负就砍,也不是一直扛;
  3. liq-distance auto-close:把组合中性的幻想,拆回单腿真实风险;
  4. 执行闭环更完整:信号 → 开仓 → DB → 监控 → 手动/自动平仓。

所以这篇更准确的定位不是“又一个 funding differential 研究”,而是:

> 同一条 raw alpha,在 repo 层终于出现了一个更像 production 的 admission + hold + forced-exit 壳。

这就足够构成一次新的 intake。

---

6. 代码/配置里最该记住的数字

从 repo 直接可见的默认参数:

支持的 venue:

README 还写明:任意交易所都可以两两配对,bot 自动找最优组合。

---

7. 对 1m / 3m / 5m / 15m desk 的真正启发

这条策略虽然收益结算事件还是 funding clock,但它对我们短周期 desk 依然有直接意义,因为它回答的不是“8 小时后收多少钱”这么单一的问题,而是:

7.1 1m / 3m / 5m 可以做 admission / monitoring 层

短周期分辨率主要用来监控:

也就是:

7.2 最小实验不该先问“年化多高”,而该先问“streak 有用吗”

当前最值得先验证的不是 long-run APR,而是:

  1. 只按当前 net_apr 排名开仓
  2. net_apr + pair_streak 联合准入开仓
  3. 再加 negative-hours stop
  4. 最后才加 liquidation-distance veto / auto-close。

也就是说,要把这份 repo 的新增价值拆开测,而不是一股脑打包。

---

8. 最小可复现实验怎么做

8.1 数据源

这条策略的数据需求分两层:

层 A:最小公开复现实验

层 B:更贴 repo 的实盘化实验

8.2 最小实验口径

先不要追求 5 家 venue 全上。第一轮建议:

8.3 A/B 测试设计

#### A. baseline:plain net carry

#### B. streak admission

#### C. streak + negative-hours stop

#### D. streak + negative-hours + risk veto

8.4 最该先看的指标

不要先盯年化收益,第一轮更该看:

---

9. 当前 first verdict

first verdict:值得 intake,而且更像“实盘组件拆解”意义上的强候选。

但要把话讲清:

如果你现在让我只从这份 repo 拿走一句最有用的话,那就是:

> 别再把 cross-venue funding carry 写成“谁 net APR 高就做谁”;先测“持续为正多久”再决定要不要上。

---

10. 下一步怎么测

10.1 第一优先:做 streak admission 的最小回放

先做最小版,不碰真实下单:

  1. 1m 抓 funding / mark;
  2. 5m 计算 all-pair net_apr
  3. 维护 positive_since / dip_since
  4. 比较:
  1. 看 post-cost outcome 是否更稳。

10.2 第二优先:拆 negative-hours stop 是否有边际价值

对同一批 admission 过的 pair,比较:

核心问题是:

短暂负 carry 是可忍噪声,还是恶化前兆?

10.3 第三优先:把风控诚实化

若 public path 拿不到强平价,就先做替代版:

不要因为没有真实 liquidation price,就假装这部分风险不存在。

---

11. 来源

  1. kohtabeloff. (2026). *funding-arb-bot*. GitHub.
  1. 关键源码审计文件
  1. GitHub metadata(API)

---

12. 给自己的落地备注

如果后面真要进复现队列,最值得先写成独立模块的不是 Telegram,不是 DB,而是这 3 个函数层:

  1. calc_net_apr(pair)
  2. update_positive_streak(pair)
  3. exit_if_negative_too_long / exit_if_leg_risk_too_high

也就是说,真正该拿进我们自己代码库的,应该是:

这才是这篇 intake 的核心。