源文件:research/quant_digests/2026-04-15_1248_btc-anchor-24h-loserbasket-rv-shell.md
README.md + backtester/backtest/strategies/v1_ls.py + backtester/backtest/position_managers/v1_ls_pm.py + backtester/src/oms_simulation.py + backtester/backtest/v1_ls_bt.py)+ Binance USDⓈ-M 1h public-data portability probeLevRoz630(HKU x Avenir Quantitative Trading Challenge Round 2 参赛仓)2025-09-29,last updated 2026-03-19reports/artifacts/quant_digests/2026-04-15_btc_anchor_loser_basket_probe_summary.jsonreports/artifacts/quant_digests/2026-04-15_btc_anchor_loser_basket_probe_daily.csvreports/artifacts/quant_digests/2026-04-15_btc_anchor_loser_basket_probe_hourly.csv> base alpha = BTC-anchor cross-sectional loser basket short:做多 BTC,当过去 24h 跑输的 alt 出现负收益时,按 |24h return| / variance 加权去做空那篮子 loser,赚的是弱 alt 相对 BTC 的继续落后。
翻成人话:
pairs spread z-score fade;24h 为负的 alt;24h 波动方差更低的 alt,给更大空头权重;BTC,把组合写成 long BTC / short loser alts。所以这轮不是 filter,不是 overlay,而是一个可以直接落到多空、仓位、风控、成本的 完整 raw alpha 壳。
这轮值得进池,原因很直接:
最近 desk 已经堆了不少 funding、basis、pairs、lead-lag;但 BTC anchor × loser basket short 这种写法,把市场 beta 锚和横截面弱者筛选揉在一起,增量是明确的。
不是只有一句 README 想法,而是有:
信号本身是 24h 横截面状态,执行完全可以拆成 1h / 15m。这对 desk 很重要: > 信号慢,不代表不能服务短周期;只要 entry / rebalance / veto / execution schedule 能拆到 15m,它就是可用的 slow-alpha book 原料。
backtester/backtest/strategies/v1_ls.py 给出的规则很清楚:
BTC, ETH, SOL, ADA, XRP, DOGE;raw_weight_i = abs(log_return_24h_i) / variance_iBTC long = 10%Alt short basket = 90%也就是说,repo 的核心不是“看谁跌就全空谁”,而是: > 只空最近 24h 的 loser,而且优先空“跌得够狠、但不是纯高噪声”的 loser。
这条线更接近 BTC-anchored relative-value continuation / underreaction,而不是简单趋势跟随。
源码里两个触发条件:
参数默认值:
current_btc_ratio = 0.10drift_threshold = 0.05翻成人话:
这点很关键,因为它刚好解释了为什么它适合 short-cycle desk 的方式,不是去把信号硬压成 1m,而是: > 保留慢信号,用 15m / 1h 执行层去降低 drift、补风控、控制换手。
backtester/backtest/position_managers/v1_ls_pm.py 里有三块值得直接吸收:
200200060d这不是 alpha 本体,但非常适合 desk: > 新 book 不一定先满仓,把它当成“上线初期逐步放量”的标准模板很合理。
15%,直接强平。这对 BTC long / alt short 书尤其重要,因为 alt squeeze 经常是组合真正的尾部风险来源。
position manager 会优先执行 close,避免同一 symbol 同时出现互相打架的指令。
这是个小实现细节,但对 live shell 很关键:
backtester/src/oms_simulation.py 里,平仓 PnL 会扣:
0.00023 * notional,也就是大约 2.3 bps 的 close 成本;但要注意:
所以这份 repo 可贵的地方在于它给了完整策略骨架, 但真正能不能搬到 desk,还是要自己补更硬的成本假设。
/fapi/v1/klines1h K 线(本轮先做与 repo 更接近的快检)2025-12-16 13:00 UTC 到 2026-04-15 12:00 UTC,约 120dBTC/ETH/SOL/ADA/XRP/DOGE24h 负收益 alt、|ret|/var 加权、BTC 10% / alt basket 90%;4 bps * turnover 的较硬口径快检;+32.48%2.184 bps * turnover):约 +27.36%1.91-19.97%0.036+29.00%2.024 bps * turnover):只剩 +1.49%0.33-20.38%0.219一句话结论: > alpha 本体没有被成本直接打死;真正的问题是你不能因为 desk 喜欢快,就把它重写成每小时都折腾一次。
如果只是把 repo 原节奏搬到公开 Binance perp 快检里:
小时换仓版的 gross 还不错,但净后几乎被换手吃光:
2.02;0.33;0.036 直接跳到 0.219。这就是这轮最重要的 portability lesson: > short-cycle desk 应该把它当“慢信号 + 快执行控制”,而不是“快信号 + 高频重平衡”。
本轮样本里,平均同时入选的空头 alt 数约 2.44 个; 被选中次数最多的是:
ADA:1388 次XRP:1365 次DOGE:1327 次SOL:1266 次ETH:1218 次这意味着它不是一个“永远空同一只币”的单腿策略, 而更像:
原因很明确:
所以这轮不是“想法备忘录”,而是可以直接进复现池的 raw alpha / complete shell。
1m / 3m / 5m / 15m 的关系:信号慢,执行要快,但别乱快最正确的 desk 翻译不是把 24h 信号降采样成 5m alpha, 而是:
24h loser basket;15m 上安排开平和 drift control;也就是说,它服务 short-cycle desk 的方式,更像: > 一个慢信号的 relative-value book,交给 15m 执行层去做精细化。
真正上 perp,alt 侧双边 taker、滑点、funding、挤仓尾部都要单独补。
这更像“BTC 只是锚,不是对冲满 beta”的表达。若真上实盘,可能需要更高 BTC 权重或 sector/beta neutral 化。
扩到更多 liquid alt 后,alpha 可能更稳,也可能被尾部币的成本拖垮;这要再测。
若把它误用成 5m 连续翻仓策略,大概率会重演本轮 hourly 版本的成本塌陷。
> 这是一个合格的新 raw alpha 主题,而且比继续补一篇常规 pairs/funding 更值得。它真正可吸收的不是 repo 里的 pairs/cointegration 主线,而是这个更适合 desk 的旁支:BTC anchor × 24h loser basket short。
更具体地说:
按优先级,我建议直接做这 5 步:
信号仍按 24h 更新,但执行改成 15m schedule,只允许:
对比三版:
BTC 10% 原版;BTC beta-matched;BTC + ETH dual-anchor;看哪版更能压住组合 beta 与 squeeze 风险。
最少补:
15m execution veto给空头篮子加 3 个 veto:
5m/15m 级别出现 squeeze impulse;下一版不要只看裸 24h return,而要测试:
看 alpha 到底来自裸弱势,还是来自 idiosyncratic underperformance。