源文件:research/quant_digests/2026-04-04_1525_ml-basis-state-ensemble-alpha.md
main.py + robbie/main.py + robbie/research.ipynb)+ 2025 arXiv 摘要 grounding6h 变化,能被当前 basis level / z-score / basis momentum / funding pressure / ETH cross-basis 等状态变量部分预测;据此做 long basis = long perp + short spot 或 short basis = short perp + long spot 的 delta-neutral 头寸,吃的是 basis drift / reversion 本身,而不是裸方向。这轮我故意没再补一篇“又一个 pairs / copula / OFI 变体”,而是收一条不同家族的 raw alpha:
CryptoMeanBasisReversionStratb86fa60,提交时间 2025-11-17T19:10:31-05:00我这次要 intake 的不是“机器学习能不能统治 basis 交易”这种空话,而是 repo 里已经写出来的一条完整可下场的 delta-neutral basis shell:
> 用 basis / funding / cross-asset 状态去预测下一段 basis 会扩大还是收敛,然后切换 long basis 或 short basis 书。
这点很关键,因为它符合这轮优先级里最值钱的那档: 可独立复现、可直接落地为完整策略(entry / exit / sizing / risk / cost)的 raw alpha。
先把 base alpha 说清楚:
> base alpha = spot-perp basis 的短期状态依赖型可预测性。
不是:
而是:
basisbasis_mean_48hbasis_std_48hbasis_zscorebasis_change_1hbasis_change_24hbasis_momentumfunding_rate / funding_pressureeth_basis / ethbtc_ratio6h 的 basis_change;long perp + short spot;short perp + long spot;所以这不是 filter,也不是 overlay 伪装货;它本身就是一条delta-neutral raw alpha。
因为它补的是我们当前库里相对少的一块:
positive basis only carry;basis z-score 单阈值回归;翻成人话:
> 这条线在问的不是“basis 长期有没有回归”,而是“在这个状态下,接下来几小时的 basis 更可能扩还是收”。
这比“正 funding 就一直收”更像交易策略,比“basis 偏太多就反手”也更完整,因为它已经明确把:
全塞进代码里了。
如果这条壳跑得动,它会自然长出两条 desk 很实用的旁支:
1m/3m/5m/15m 哪个执行层最不容易被成本吃掉。robbie/main.py 里的 richer 版本,已经把策略骨架写得很完整:
prediction_horizon = 6(小时)168h24XGBoost + LSTM ensembletanh(ensemble_pred * 10)conviction_threshold = 0.05exit_conviction_threshold = 0.02512h5%2x0.5maker 2bps / taker 4bps / slippage 2bps5 USDT这意味着它不是“只有 alpha 没有壳”,而是已经天然适合被 desk 拆成:
training notebook 里定义了 26 个特征,最重要的几类是:
#### A. basis 本体
basisbasis_mean_48hbasis_std_48hbasis_zscorebasis_change_1hbasis_change_24hbasis_momentum#### B. funding / carry pressure
funding_ratefunding_rate_ma24hfunding_rate_std24hfunding_rate_change_1hfunding_pressure#### C. cross-asset context
eth_basisethbtc_ratio#### D. price / vol / volume state
1h return24h return24h volhour_of_dayday_of_week这组特征的好处是:
> 绝大部分都能直接映射到 15m/5m 版本,不需要私有数据,也不需要 order-book depth 才能开工。
robbie/research.ipynb 里没有保存最终输出,但它把作者想要满足的训练门槛写得很明确:
prediction_horizon = 6 小时2020-01-01 ~ 2023-12-31)n_estimators = 100max_depth = 3learning_rate = 0.05subsample = 0.8colsample_bytree = 0.8test_mse < 0.001test_dir_acc > 0.52这些断言不等于已经被证明达成,但至少说明作者 intended benchmark 是:
> 如果 6h basis 方向准确率没有超过 52%,这条线在他自己的标准里都不算过关。
对我们来说,这已经足够做第一轮 replication gate。
robbie/ 版本不一致,不能盲跑这是我这轮最在意的点。
根目录 main.py 是一个简化版 RandomForestClassifier 策略;而 robbie/main.py 是更完整的 XGB + LSTM ensemble 版本。两者不只是复杂度不同,连交易方向的实现都不一致:
pred == 1(未来 basis 上升)时,代码却执行 short future / long spotrobbie/ 版本:conviction > 0 时执行 long perp / short spot也就是说:
> 根目录版和 notebook / richer main 的 target 定义并不完全同向,直接抄根目录版有信号符号写反的风险。
这件事很重要,因为它决定了这份 repo 不能被当成“开箱即用结论”,而应被读成:
robbie/main.py 里如果 funding data 不可用,会把以下特征全置为 0.0:
funding_ratefunding_rate_ma24hfunding_rate_std24hfunding_rate_change_1hfunding_pressure这意味着:
> 如果你复现时没把 funding 历史真正接进来,策略会从“basis + funding state alpha”退化成“basis-only alpha”,结果不是同一条东西。
源码的 sizing 是:
expected_move / realized_vol 算 move_vol_ratio|conviction|[5%, 50%] portfolio 之间这个壳对 1h 也许还能接受,但如果直接搬到 15m / 5m,很容易太激进。
所以这条线虽然是完整策略,但在 short-cycle desk 上,第一件事不是卷模型,而是先缩 sizing。
1m / 3m / 5m / 15m 的最小可复现实验怎么做全部公开可得:
BTCUSDT, ETHUSDT)BTCUSDT, ETHUSDT)我不建议一上来就冲 1m 训练。
更合适的是:
15m5m 或 1m把原 repo 的 1h 时钟改写成:
48h mean/std → 12h mean/std(即 48 根 15m bar)6h horizon → 8 根 15m forward basis change24h return/vol → 96 根 15m 聚合第一版至少对比三条:
basis_z > +z 做 short basisbasis_z < -z 做 long basisXGBoost 即可,不必一开始就上 LSTMpred > q80 做 long basispred < q20 做 short basis先用最朴素的:
因为这次补的是一个更一般化的母壳:
> 不是“basis 大了就回”,也不是“funding 正了就拿”,而是把 basis 交易写成可分类的状态空间问题。
这会同时服务两类后续研发:
basis_state 当成别的策略的 veto / sizing router。而且它跟现在 desk 的 1m/3m/5m/15m 节奏是兼容的:
15m 的无 LSTM 最小复刻不要一开始就复刻整个 ensemble。
先做:
XGBoostbasis / basis_z / basis_change / funding / eth_basis / ethbtc_ratio8 根 15m 之后的 basis change先回答一个最硬的问题:
> 在成本后,这组状态变量能不能把 future basis move 的方向准确率推到 >52% 左右?
state bucket 归因重点看四个桶:
想看清楚:
这一步会决定你最后是做单一 basis MR,还是做双向 state router。
robbie/ 版和根目录版做 sign audit这一步必须做,不然后面全是脏结论。
至少确认:
long basis / short basis 的真实盈亏方向做两个模型:
basis-onlybasis + funding如果 funding 版没有稳定增量,那就别把策略复杂化。
5m / 1m只有当 15m discovery 层先过关,再做:
1 bar / 2 bar 再入场30m / 60m 特殊处理如果把 repo 当成“已验证 ML alpha”,那是高估; 但如果把它当成 一条已经把 signal / sizing / risk / cost 写成完整骨架的 basis raw alpha 候选,它是合格的,而且值得进研究池。
最重要的是:
15m discovery + 5m execution 非常自然;basis-only vs basis+funding 的 15m 最小复刻。我会把这条东西定义成:
> “basis state classification / regression” 这条 delta-neutral raw alpha 母壳。
它不是当前素材池里最硬的一条,但足够新、足够完整、足够能快速验证,值得收。
Repo:<https://github.com/Rbach24/CryptoMeanBasisReversionStrat>
<https://raw.githubusercontent.com/Rbach24/CryptoMeanBasisReversionStrat/main/main.py>
<https://github.com/Rbach24/CryptoMeanBasisReversionStrat/blob/main/robbie/main.py>
<https://github.com/Rbach24/CryptoMeanBasisReversionStrat/blob/main/robbie/research.ipynb>
DOI:<https://doi.org/10.48550/arXiv.2506.08573> URL:<https://arxiv.org/abs/2506.08573>
research/quant_digests/2026-04-04_1525_ml-basis-state-ensemble-alpha.mdhttps://eu.jerrypsy.top/momentum/reading/quant_digests/2026-04-04_1525_ml-basis-state-ensemble-alpha.html