源文件:research/quant_digests/2026-04-13_0233_postcost-fundingbasis-deltaneutral-shell.md
README.md + docs/features.md + docs/labels.md + docs/baselines.md + docs/signals.md + docs/backtest.md + configs/models/baseline.yaml + configs/labels/default.yaml + configs/backtests/default.yaml + src/funding_arb/features/builders.py + src/funding_arb/labels/generator.py)+ Binance public 15m portability probeshort perp + long spot,同时赚 funding carry 与 basis 收敛;repo 的关键升级不是“又一个 funding 阈值”,而是把它明确写成 post-cost net return 标签、统一信号层与完整 backtest 壳。> base alpha = positive funding + rich perp-vs-spot spread 这组状态,意味着 short perp / long spot 这笔 delta-neutral 交易的未来净收益更可能为正;repo 真正值钱的地方,是把这件事直接写成“成本后还能不能赚钱”的可训练、可回测、可执行壳。
翻成人话:
2026-03-192026-04-10docs/features.mddocs/labels.mddocs/baselines.mddocs/signals.mddocs/backtest.mdconfigs/models/baseline.yamlconfigs/labels/default.yamlconfigs/backtests/default.yamlsrc/funding_arb/features/builders.pysrc/funding_arb/labels/generator.py这轮不是把 repo 当“课程项目工程展示”看,而是先问:
> 里面到底有没有一条能被我们 desk 直接拿来做最小实验的完整 raw alpha 壳?
答案是:有。 而且比“谁 funding 高就去空谁”更完整,因为它已经把:
全部串起来了。
repo 默认数据就是:
BTCUSDT1h2021-01-01 到 2026-04-07这很重要,因为它意味着:
repo 的 feature 设计里,最核心的是两组:
#### Funding 组
funding_rate_bpsfunding_mean_8h / 24h / 72h / 168hfunding_zscore_*funding_positive_share_*#### Basis / spread 组
spread_bps = ((perp_close / spot_close) - 1) * 10000spread_zscore_72hspread_deviation_*spread_reversion_signal_*再往上它还做了 interaction / state:
positive_funding_regime = 1{funding_mean_24h > 0}wide_spread_regime = 1{|spread_zscore_72h| > 1}funding_x_spread_bps这套写法的价值在于:
configs/models/baseline.yaml 里给了三个 rule baseline:
funding_threshold_2bpsfunding_rate_bps >= 2.0spread_zscore_1p5spread_zscore_72h >= 1.5combined_funding_spreadfunding_rate_bps >= 1.0spread_zscore_72h >= 1.5positive_funding_regime == 1对我们 desk 最值得先拿的,就是第三条:
> positive funding 和 rich spread 要同时成立,才做 short perp + long spot。
这比单看 funding 或单看 basis 更诚实,因为:
更值钱的地方在 label 层。
configs/labels/default.yaml 和 src/funding_arb/labels/generator.py 里,repo 明确把目标定义成:
target_future_net_return_bps_8htarget_future_net_return_bps_24htarget_is_profitable_8h / 24htarget_is_tradeable_8h / 24h而且净收益定义得很清楚:
```text future_net_return_bps = perp_leg_return_bps + spot_leg_return_bps + funding_return_bps
```
成本也不是口头说说,而是显式进标签:
默认成本参数对应到 repo 回测壳,大约是:
taker_fee_bps = 5slippage_bps = 3gas_cost_usd = 2position_notional = 10000也就是 roughly:
4 * (5 + 3) + 2/10000*10000 ≈ 32.2 bps这点很关键:
> repo 的升级,不是“我也觉得 funding carry 可能有 alpha”;而是“这笔交易扣完成本后,到底还能不能留下正净收益”,并把这件事做成统一标签。
configs/backtests/default.yaml 给的执行壳已经很清楚:
short_perp_long_spot1 baropen24h48htrue10000 USD所以这不是“研究直觉卡片”, 而是已经具备:
的完整策略原型。
不是直接说:
而是要改写成:
> repo 提供的是一个慢状态的 carry/basis admission shell;短周期 desk 要做的,不是强行把核心逻辑改成逐根 1m/3m/5m 主信号,而是把它当成 1h state,再下沉到 15m/5m 执行层。
也就是说:
1m/3m/5m/15m 更适合承担:15m portability probe:结果很诚实BTCUSDT / ETHUSDT / SOLUSDT120d15mlast_funding_bps >= 1.0spread_zscore_72h >= 1.5positive_funding_regime == 1short perp + long spot20 bps total32.2 bps repo-like/root/clawd/jerry/momentum/reports/artifacts/quant_digests/2026-04-13_menger_funding_basis_shell_probe.py/root/clawd/jerry/momentum/reports/artifacts/quant_digests/2026-04-13_menger_funding_basis_shell_probe/fetch_status.csv/root/clawd/jerry/momentum/reports/artifacts/quant_digests/2026-04-13_menger_funding_basis_shell_probe/trade_log.csv/root/clawd/jerry/momentum/reports/artifacts/quant_digests/2026-04-13_menger_funding_basis_shell_probe/summary.csv/root/clawd/jerry/momentum/reports/artifacts/quant_digests/2026-04-13_menger_funding_basis_shell_probe/summary_8h_fixed.csv/root/clawd/jerry/momentum/reports/artifacts/quant_digests/2026-04-13_menger_funding_basis_shell_probe/summary_24h_fixed.csv15m threshold shell,不过线#### repo 风格的 signal-off 直译版(3 个 symbol 聚合)
781.32 bars(约 20 分钟)0.91 bps20 bps total 下平均单笔净收益:-18.87 bps32.2 bps repo-like 下平均单笔净收益:-31.07 bps#### 固定持有 8h 也没救回来
3020 bps total 下平均单笔净收益:-18.40 bps0.21 bps#### 固定持有 24h 仍然不够
1920 bps total 下平均单笔净收益:-17.10 bps0.57 bps相反,这个 probe 恰好说明:
> repo 值钱的部分,不是朴素阈值本身,而是“post-cost label + ranking model + unified signal/backtest shell”这一整套研究框架。
因为在 15m 上直接把规则硬翻下来,会出现两个问题:
signal-off 直译版平均只拿了 1.32 根 bar;而是:
5m / 15m 用在 execution 和 event-time router 上。换句话说:
15m 裸 threshold 信号。我的判断是:
raw alpha因为它的 base alpha 很清楚:
这也是为什么它值得写:
carry / funding / basis / delta-neutral 这条 完整 shell 素材;15m 裸信号”。1m / 3m / 5m / 15m 的关系最合理的 desk 化映射是:
1h 负责状态15m / 5m 负责执行所以它和短周期 desk 的关系不是“无关”, 而是:
> 它更像 carry/basis 家族的上层录取器与完整研究壳,下层执行再交给 15m / 5m。
target_future_net_return_bps_8h / 24h 当主目标;30m / 60m / 120m;1h state 下沉成 15m / 5m execution shell1h state 合格时允许入场;15m 上要求 spread 再次扩张或 micro lower-high / micro fade;> 这份 2026 funding-rate repo 值钱的,不是“funding 高就空”这句老话,而是它把 positive funding × rich perp spread 这条 delta-neutral carry/basis raw alpha,写成了公开数据可复现、成本后可打标签、信号层与回测层统一的完整研究壳;但我这轮 15m public-data probe 也很明确地告诉我们:别把它误读成现成 fast-lane 裸信号,当前更诚实的用法是把它当 1h state / post-cost ranking shell,再下沉到 5m/15m 做执行。