源文件:research/quant_digests/2026-04-04_2203_extreme-funding-tail-carry-alpha.md
CLAUDE.md + config/settings.py + src/strategy/funding_arb.py + scripts/backtest.py)+ Binance USDⓈ-M 公共 funding history 最小复现long spot + short perp 收 funding;但这条 alpha 不能按“APR>5% 就持续开着”去跑,而要缩成“只做极端正 funding 尾部 + 靠近 funding boundary 的低周转收息”。这轮主看的是一个很新的仓库:
我之所以把它捞进来,不是因为“funding carry”这个词有多新,而是因为它把一条完整可执行策略写得非常明白:
这符合我们本轮优先级里最值钱的那一档:
> 不是解释 carry 为什么存在,而是直接给出一个能写成策略回测/实盘壳子的 raw alpha。
但 desk 真正该 intake 的,不是 repo 表面那句“APR > 5% 就开”。
真正值钱的结论反而是:
> 正 funding carry 这条 raw alpha 只有在极端正 funding 尾部、并且你能把周转压得足够低时,才更像一条能留下净收益的 alpha;默认 5%/3% 阈值状态机会被手续费来回磨死。
先把最关键的问题说透。
这条东西的 base alpha 很明确:
> base alpha = 同标的、delta-neutral 的正 funding carry。
也就是:
long spot + short perp;所以它不是“拿 funding 当行情过滤器”; 它本身就是一条独立可交易的 carry / funding raw alpha。
1m/5m 方向预测这里必须老实一点:
1m/3m/5m/15m 都有独立预测力的那种方向型 signal。对 short-cycle desk 来说,正确读法是:
1m/3m/5m/15m 做入场择时、basis 监控、滑点控制、临近 funding 边界的执行优化也就是说:
> 这是“慢 alpha,快执行”的 raw alpha,不是伪装成逐 bar 主信号的低频变量。
repo 的策略骨架非常直接。
src/strategy/funding_arb.py 写的是:
EXITNO_TRADEmin_exit_apr → EXITmin_entry_apr → ENTERmin_exit_apr → HOLD默认阈值来自 config/settings.py:
MIN_FUNDING_ENTRY_APR = 5.0MIN_FUNDING_EXIT_APR = 3.0翻成人话:
> repo 认为:只要正 funding 年化够到 5%,就值得开 delta-neutral carry;跌破 3% 或转负,就离场。
同一个配置文件里还给了:
20% 组合资金50%3%15%2%3600s这意味着它不是单纯“看 funding 的 notebook”,而是已经把:
都写成了一个完整壳子。
scripts/backtest.py 里把每次进场/离场的双腿费用都写死成:
ENTRY_FEE_PCT = 0.0014EXIT_FEE_PCT = 0.0014也就是:
而 funding 收益则按:
annualized_apr = funding_rate_8h × 3 × 365 × 100这套假设简单,但足够做最小 sanity check。
repo 的 aspirational checkpoint 写得挺乐观:
BTC 730 天回测,希望看到 annualized return > 5%、Sharpe > 1、MDD < 15%但我更关心的是:
> 如果我们按它源码里最朴素的 5%/3% 阈值和成本口径直接复现,结果到底活不活?
于是我直接抓了 Binance 公共 funding history,按 repo 的规则快跑了一遍。
数据源:
口径:
BTCUSDT, ETHUSDT365d / 730d10,00020% 组合 notional14 bps(沿用 repo)APR >= entry 进,APR < exit 或 funding < 0 出5% / 3% 阈值,在 BTC/ETH 上都被手续费磨成负收益近 730d 的最小复现结果:
#### BTCUSDT
APR >= 5% 且 funding 非负的窗口占比:54.7%#### ETHUSDT
APR >= 5% 且 funding 非负的窗口占比:57.6%一句话总结:
> 不是 funding 不够高,而是默认阈值导致周转太多,费用远大于 funding。
10%、exit 提到 5%,仍然没救活近 730d:
#### BTCUSDT
#### ETHUSDT
这说明“把阈值随便往上抬一点”还不够。
当阈值进一步抬到 entry=15% / exit=8%:
#### BTCUSDT
#### ETHUSDT
但这个“翻正”有两个现实含义:
近 730d,满足条件的窗口占比:
#### BTCUSDT
APR >= 5%:54.7%APR >= 10%:30.4%APR >= 15%:2.60%APR >= 20%:1.74%#### ETHUSDT
APR >= 5%:57.6%APR >= 10%:31.6%APR >= 15%:4.06%APR >= 20%:2.51%这组数字很重要,因为它告诉我们:
> 真正有净边际的 funding carry,不是“大多数正 funding”,而是“极少数极端正 funding”。
如果按 repo 默认读法:
那更像是在制造:
这不适合 short-cycle desk。
对 desk 更值钱的 branch idea 是:
> 只做极端正 funding 尾部,把 carry 从“常开仓”改成“事件驱动的稀疏收息”。
也就是:
APR >= 15%、甚至 >= 20% 的极端窗口里考虑入场;1m / 3m / 5m / 15m 只负责把这笔慢 alpha 做得更便宜、更稳。对 1m / 3m / 5m / 15m,最合理的工作不是:
而是:
翻成人话:
> 这条 alpha 的 edge 在 funding,本地化收益在 execution。
1m / 3m / 5m / 15m直接比较 4 本书:
entry=5%, exit=3%entry=10%, exit=5%entry=15%, exit=8%15%/8%,但只允许在下一个 funding 结算前 30~60min 内建仓,结算后固定持有 1 个 funding window 或到 APR/basis 失真时离场5m / 15m建议第一版:
15m:决定是否允许开仓5m:做具体进场择时1m / 3m:只在第二轮评估 maker/taker 可行性时再细化第一轮最值得加的不是复杂 ML,而是一个很土但很有用的 veto:
> 如果 funding 很高,但 spot-perp basis 在最近 3 × 5m 里还在持续扩大,就先不追;等 basis 停止继续拉大,再进 carry。
原因很简单:
核心报表先看:
funding / fees因为这条线最容易死在:
> 方向没错,但净收益被费用和入场时机吃干净。
不要把 5/3 和 15/8 混在一起讲“carry 行不行”;先确认问题到底出在 funding 本身,还是出在周转。
第一轮最值得测的是:结算前 30/60/90 min 建仓,结算后持有 1 个 funding 窗口,看看 net funding/fee 比是否明显改善。
这条线的关键不在 universe 扩张,而在确认:高流动主币上极端 funding 尾部是否真的能留下稳定净收益。
这类策略最怕“paper 上收 funding,实盘里全吐给手续费和腿间偏差”。
单 venue 尾部 carry 若信号太少,第二阶段才值得去做 cross-venue funding ranking / fee-coverage routing;别一上来就把问题复杂化。
尽管 carry 家族最近已经有积累,但这篇仍值得收,因为它补的是一个很具体、也很实用的 desk lesson:
> raw alpha 没错,但默认策略壳会把 raw alpha 跑死。
这和“carry 不存在”完全是两回事。
对我们的素材池来说,它提供的不是又一个“正 funding 就收息”的老故事,而是一个更有用的命题:
> 在公开 funding 数据、完整策略壳和明确成本假设下,positive funding carry 只有在极端尾部 + 低周转执行里才更像可留下净值的 raw alpha。
这正适合后面继续拆:
CLAUDE.md).config/settings.py).src/strategy/funding_arb.py).scripts/backtest.py).> 这条 raw alpha 不是“APR>5 就无脑开”的常开 carry,而更像“只做极端正 funding 尾部、围绕 funding boundary 低周转收息”的稀疏事件型 carry。默认状态机的真正敌人不是 funding 不够高,而是 fee churn。