源文件:research/quant_digests/2026-03-30_2344_current-next-funding-closecost-carry-alpha.md
README.md / src/open_position.py / src/close_position.py / src/monitor.py / src/trading_data.py source audit + OKX 公开 funding/ticker/candles live sanity check> 先把 base alpha 说清楚: > > alpha 本体不是“funding 排名表”,也不是“basis 监控面板”。alpha 本体就是同 venue 的 spot-perp carry:long spot / short perp,赚 funding 和 rich premium 的回落。 > > 这份 repo 真正值得 desk 搬的,不是“它会自动下单”这件事,而是它把这条 carry 写成了一个完整可执行策略: > > vol-adjusted candidate selection → premium-z admission → current+next funding vs close-cost 持仓治理 → 保证金/对冲比率监控。
这次主看的是 GitHub 仓库:
> Aureliano90 (2021, metadata updated 2026-03), _Futures-Spot-Arbitrage-OKEx-V5_ > GitHub repo: https://github.com/Aureliano90/Futures-Spot-Arbitrage-OKEx-V5
它不是论文,但它有一个对我们很有价值的优点:
> 不是停在“rich funding 候选列表”,而是把 same-venue carry 的 entry / exit / size / leverage / monitoring / fee 都写进了源码。
当前 desk 已经有不少 funding / basis digest,但很多还停在:
funding > 0 就当成 carry pocket;premium > 0 就当作可以开;这份 repo 更值钱的地方在于,它把单 venue carry 明确拆成了三层:
funding / sqrt(ATR);open premium > recent avg + k·std;current_rate + next_rate 去对比 close-cost hurdle。这第三层最有价值。因为它直接回答了一个实盘问题:
> “就算 funding 还是正的,这个仓现在还值不值得继续扛?”
funding / sqrt(vol)src/trading_data.py 里,repo 会先把最近 funding 候选按 profitability = funding_rate / sqrt(ATR) 排序:
src/trading_data.py:62-77funding_rate_list[n]['profitability'] = funding_rate / np.sqrt(atr)这件事的重要性在于:
对 desk 的直接翻译是:
> 别再做“谁 funding 高就做谁”的朴素排名;先做 vol-adjusted carry ranking。
顺手说一句:repo 这里用的是原始 ATR,量纲不够漂亮;我们 desk 落地时更建议换成 NATR / realized vol / spread vol,但思想是对的。
premium z-scoresrc/open_position.py 的开仓逻辑不是“合约比现货贵就开”,而是先取近期 premium 统计,再要求当前 open premium 过阈值:
src/open_position.py:161-185recent_open_stat(hours)price_diff = recent['avg'] + 2 * recent['std']best_bid_swap >= best_ask_spot * (1 + price_diff) 才继续也就是说,它实际上在做:
> 只有当 perp 相对现货已经“统计上偏 rich”时,才允许开 long spot / short perp carry。
这和“只要 funding 正就开仓”的差别非常大:
这点和我们当前 desk 的优先级是对齐的:
> carry 不是低频票息产品;短周期 desk 要的是“有 pocket 才开”,不是“正 funding 就挂着”。
current + next funding > close-cost hurdle真正让我觉得这份 repo 值得 intake 的,是 src/monitor.py 这段:
src/monitor.py:144-157open_pd = recent_open_stat()['avg'] + recent_open_stat()['std']close_pd = recent_close_stat()['avg'] - recent_close_stat()['std']cost = open_pd - close_pd + 2 * trade_feecurrent_rate + next_rate < cost 就主动平仓这句话非常关键:
> repo 并不认为“当前 funding 还是正的”就足够继续持有。它要求:当前 funding + 下一次 funding 的总收益,至少得覆盖你为了最终关掉这个 carry 需要吃下的 close-cost hurdle。
这比很多 funding 策略诚实得多。因为现实里:
这里要避免误读:
如果只把这篇 digest 归成 overlay / filter,会低估它。
更准确的说法是:
current+next funding > close-cost 的 viability check所以这轮归类仍然应该是:raw alpha。
因为当前项目里 funding / basis 相关 digest 已经不少,但大量问题都卡在:
这份 repo 至少把这个答案写成了能执行的 if/else:
> 开仓要 premium rich,持仓要 funding 覆盖 close-cost,不够就关。
这不是观点,是策略骨架。
先做流动性和借贷/成交成本都更清楚的 same-venue majors:
BTC-USDT / BTC-USDT-SWAPETH-USDT / ETH-USDT-SWAPSOL-USDT / SOL-USDT-SWAPXRP / DOGE / TON / BNBselection score 不看绝对 funding,而看:
funding / sqrt(spread_vol) 或 funding / sqrt(NATR)只在以下都满足时开仓:
funding > 0(或 current+next funding 为正)open premium z > z_entergross carry estimate > close-cost hurdle换成人话:
> 资金费正,只是必要条件;premium 已经 rich,且未来 funding 现金流覆盖得了未来关仓成本,才是充分条件。
触发任一就平:
current + next funding < close-cost hurdlepremium z < z_exitscore = funding / sqrt(vol) 排名分配权重;1m/3m 上只做执行切片,不要拿 funding 本身当逐 bar 主信号。为了避免只做 repo 读后感,这次我直接用 OKX 公开 API 做了一个小快检。
market/tickermarket/history-candlespublic/funding-rateBTC / ETH / SOL / DOGE / XRP1m candles2 * trade_fee 近似为 10 bpsopen_trigger = premium_mean + premium_stdclose_trigger = premium_mean - premium_stdclose_cost_hurdle ≈ open_trigger - close_trigger + 2*feecurrent + next funding vs close_cost_hurdle本地脚本输出见: reports/artifacts/quant_digests/okx_current_next_funding_closecost_20260330/okx_major_snapshot.csv
核心数字:
current+next funding = +0.68 bps,但 close-cost hurdle ≈ 11.16 bps,差了 10.47 bps+0.19 bps vs 11.42 bps,差了 11.23 bps-0.59 bps vs 12.96 bps,本身就是负 carry这三条已经足够说明问题:
> “funding 是正的”离“这笔 carry 值得开/继续拿”之间,差了整整一个数量级。
同一份 snapshot 里,live open premium z-score 也并不高:
z ≈ 0.02z ≈ 0.34z ≈ 0.42也就是说,当前快照下:
这反而刚好验证了 repo 设计的必要性:
> 如果没有 premium-z admission + funding>hurdle 这两层门槛,策略就会把一堆“看起来 funding 为正、其实根本不值得做”的时点误识别成机会。
要诚实一点:
1m bar 都值得响应。所以这条线更适合的结构是:
不要把 funding 伪装成 1m 逐根 alpha 本体。
更合理的是:
15m:决定这轮 carry pocket 是否成立5m:检查 premium rich 是否持续、盘口是否还能吃1m/3m:决定分几笔进、是 maker 还是 taker、是否先等 spread 更好一点所以这条题不是和短周期 desk 无关,恰好相反:
> 它很适合做短周期 desk 的“slow alpha + fast execution”组合。
目标:验证 premium-z admission × current+next funding > close-cost 是否明显优于 funding > 0 的朴素 carry。
Universe
BTC/ETH/SOL same-venue OKX spot+swap版本对比
funding > 0 就开,固定持有到下一结算funding > 0 且 premium z > 1premium z > 1 且 current+next funding > close-cost hurdle1m spread / depth veto评价指标
z_enter = 0.5 / 1.0 / 1.5 / 2.0z_exit = 0 / 0.25 / 0.5vol score:funding/sqrt(NATR) vs funding/spread_volclose-cost hurdle:current+next funding > close-cost 这一层,能否明显减少“正 funding 但不值做”的伪机会?> 这份 OKX V5 仓库对 desk 最值钱的,不是“spot-perp carry”这个老题材本身,而是把它写成了 vol-adjusted selection → premium-z admission → current+next funding > close-cost 的完整生存线;从 OKX 当前主流币 live snapshot 看,绝大多数“正 funding”根本不够覆盖这道 hurdle。
research/quant_digests/2026-03-30_2344_current-next-funding-closecost-carry-alpha.mdreports/artifacts/quant_digests/okx_current_next_funding_closecost_20260330/okx_current_next_funding_closecost_probe.pyreports/artifacts/quant_digests/okx_current_next_funding_closecost_20260330/okx_major_snapshot.csvreports/artifacts/quant_digests/okx_current_next_funding_closecost_20260330/okx_major_snapshot.jsonreports/artifacts/quant_digests/okx_current_next_funding_closecost_20260330/summary.mdhttps://eu.jerrypsy.top/momentum/reading/quant_digests/2026-03-30_2344_current-next-funding-closecost-carry-alpha.htmlhttps://github.com/Aureliano90/Futures-Spot-Arbitrage-OKEx-V5https://raw.githubusercontent.com/Aureliano90/Futures-Spot-Arbitrage-OKEx-V5/main/README.mdsrc/open_position.pysrc/close_position.pysrc/monitor.pysrc/trading_data.pyhttps://www.okx.com/docs-v5/en/https://www.okx.com/docs-v5/en/#public-data-rest-api-get-funding-ratehttps://www.okx.com/docs-v5/en/#public-data-rest-api-get-tickerhttps://www.okx.com/docs-v5/en/#market-data-rest-api-get-candlesticks-historyBTC/ETH/SOL/DOGE/XRP 的 OKX spot + USDT perpetual,最近 4 小时 1m premium 统计 + funding 快照,对比 current+next funding 与 close-cost hurdle