记录一次动量跟随多头回测被数据拒绝(2026-08-12)
记录一次动量跟随多头回测被数据拒绝(2026-08-12)
不调参,先攒满 ≥12 笔已平 A/B 确认期望符号——若正再加 regime 过滤,若负就重估而非优化。
今天一整天基本都在 factor_ic 上打转。早上先实拉了一轮 SHORT-only A/B 的跑批数据,中午因为一句“上涨市做多”起了争论,下午干脆用 _tmp_xs_pair_bt.py 同款框架把动量跟随多头回测跑了一遍。结果很干脆:这条路被数据拒绝了。
一、先拉现状:19:54 那轮实拉
晚上 7 点 54 分,我把当前 factor_ic 的实盘状态完整拉了一遍。进程态没毛病:signal 75444 已经跑了 53.1 小时,SHORT-only 模式(LONG_N=0),watchdog 单实例在岗。全量 factor_ic 一共 29 笔,+$11.01,其中 LONG 腿 9 笔 +$2.92,SHORT 腿 20 笔 +$8.09。
但真正要看的是 A/B 窗口,也就是 SHORT-only 这段。53 小时里总共 4 笔信号,全是 SHORT,已经平仓 3 笔,没有 1 笔 LONG 漏单。这 3 笔已平的净盈亏是 -$1.74,分别是 +$0.31、-$1.72、-$0.33。当前还挂着一笔 DOGE SHORT,仓位 $80。
A/B 进度是 3/12,离能下初步结论的闸还差 9 笔。
二、两个要直说的点
看这组数,我当时直接在日志里写了两条,不给它绕弯子。
第一,SHORT-only 首批 3 笔已平是小幅亏损。 -$1.74 这个数样本太小,基本在噪声范围内,但开局的负号肯定不乐观。需要继续攒笔数,不能因为 3 笔就下结论。
第二,这恰好印证了“edge 依赖 regime”。 历史 SHORT 腿累计 +$8.09,看着还行,但那段 A/B 窗口大概率处在震荡/中性 regime 里。21 页的 regime 计算当时显示的是震荡市,震荡市里 SHORT 腿没表现出正 edge,这就对上了回测里“SHORT 只在下跌/震荡 regime 有正贡献”的结论。
三、我提了“上涨市做多”,被拽了回来
看完数据,我心里冒出来一个念头:既然 21 页已经有现成的 regime 计算,那直接让策略在下跌/震荡市做空、上涨市做多,岂不是更对称更聪明?
助手没同意,而且把这里面的含糊地带掰得很清楚。factor_ic 是反转策略——做空最高动量、做多最低动量,赌的是极值回归,不是动量跟随。所以“上涨市做多”落到代码上只有两种解释,两种都没有证据:
- 解释 (a):做多 factor_ic 自己的 LONG 腿(最低动量币)。这条腿在回测里是 -38.1% 的系统性输家腿,把它在上涨市加回来就是纯亏。
- 解释 (b):做多最高动量币(动量跟随)。这是另一个独立策略,整个回测框架里从来没测过,零证据。可能有效,但那是另一套逻辑,不能顺手焊到 factor_ic 上。
所以结论是:“暂停”比“切换”更稳。 上涨市暂停交易,既避开 LONG 输家腿,又不引入未验证组件。
四、那就用同款框架写动量跟随多头回测
吵完之后,我决定不再空想,直接动笔。要求很明确:用 _tmp_xs_pair_bt.py 同款框架,写一个“动量跟随多头”横截面回测,限定上涨 regime。
框架和口径对齐花了不少时间。关键对齐点有几个:
momentum_24h的定义是过去 24 根收益率的close[t]/close[t-24]-1,和 21 页 regime 判定同源。- 上涨 regime 定义对齐 21 页:
REGIME_THRESHOLD=2.0%,即 12 币 24h 收益均值 > +2%。 - 回测参数完全对齐 factor_ic:
HOLD=24h、COOLDOWN=120min、SL/TP=5%/15%、FEE=0.0001、OOS_TS=2026-07-31 16:00 UTC。 - 币池 12 币,5000 根 1h 主网 K 线,约 208 天。
策略本身很简单:做多动量最高的币,上涨 regime 门控(12 币 24h 收益均值 > +2%)。IS/OOS 切分点沿用 _tmp_xs_pair_bt 的常量,也就是 2026-08-01,即 07-31 后为真 OOS。
五、实跑结果:负 edge,被数据拒绝
回测跑完,报告落盘。数字很直接:
| 段 | 笔数 | 总收益 | 胜率 | 最大回撤 |
|---|---|---|---|---|
| 仅上涨 regime | 81 | -50.50% | 33.3% | 54.9% |
| 不限 regime | 184 | -49.56% | 45.1% | 58.7% |
仅上涨 regime 内 81 笔,总收益 -50.50%,胜率只有 33.3%,最大回撤 54.9%。不限 regime 的对照段 184 笔,同样深亏 -49.56%。也就是说,动量跟随多头在上涨 regime 里也是负 edge,而且比随机还差。
这就彻底堵死了“上涨市做多”的路子:不是没测过,是测完负的。
六、下一步:继续攒 A/B,不调参
回测只是验证,不是交易决策。当天的纪律没变:现在不调参,先攒满 ≥12 笔已平 A/B 确认期望符号。 若最终为正,再加 regime 过滤;若为负,就重估策略,而不是继续优化参数。
具体遗留:
- A/B 进度 3/12,还差 9 笔,继续让 signal 75444 跑着。
- regime 过滤做成可切换 env 开关,默认关,等 A/B 满 12 笔再看。
- 动量跟随多头回测报告已落盘,但当天晚些时候收到一份对另一份回测的核验,指出 5 处实质错误,其中 2 处会直接污染结论。具体错误细节还没完全整理完,明天得先把核验清单过一遍,确认手头报告有没有踩同样的坑。