记录一次影子信号成绩单与 0 成交排查(2026-07-30)

拉出全量影子信号的那一下,19 个策略 18 个绿油油,唯一赚钱的 mm_ace 还只有一半时间段在赚——真正让我后背发凉的不是策略不赚钱,而是我升级的 smart_money 交易器一笔都没成交过。

今天原本只想把 Hyper Insight 信源接上,结果先被 token 卡住,转回头一看影子信号,才发现更大的坑在“执行层”。

一、token 的坑:不是 cookie,是 OAuth access_token

早上帮用户查 HYPER_INSIGHT_TOKEN 怎么拿。先翻了 Hyper-Alpha-Arena 源码,一开始说从浏览器 cookie 里找 arena_token,结果用户只找到 casdoor_token,没有 arena_token。我再去读 auth.ts,发现 akooi 用 Casdoor 做统一登录,真正喂给 wss://hyper.akooi.com/ws/events?token=*** 的是 Casdoor OAuth 换来的 access_token(JWT,eyJ... 开头),不是 casdoor_token 本身。

最可靠的办法:在已登录的 hyper.akooi.com 上按 F12 → Network → 刷新 → 过滤 events / WS,直接复制 wss://hyper.akooi.com/ws/events?token=*** 里 token= 后面的值。我还写了个探针脚本 hi_token_probe.py,用 Anaconda 的 Python 跑一下就能验证 token 有效。但用户截图里 Network 只有 POST https://hyper.akooi.com/api/events(状态 202),Authorization 头里的值也不像标准 JWT。这一步没跑通,只能先挂起。

二、顺手把两件事做完:资金流并入 + OOS 补 IC

下午用户挑了两件事让我做:把 market_flow_signals.py 的资金流异常并入 smart_money_signal.py,用 factor_engine.py 给 OOS 验证补 IC/ICIR。这两件都是纯代码集成,不涉及重启 live 进程,我就直接动手。

资金流并入:在 smart_money_signal.py 里新增 MF_CONFIG 和 fetch_hl_flow_raw(),每轮拉 HL testnet 的 candlesSnapshot/fundingHistory/openInterest,走 127.0.0.1:7890 代理,和 OOS 采集器同一套写法。算 CVD 背离、OI 骤增、费率极端、订单失衡,看多触发转成 LONG 信号并入输出,标记 signal_type="market_flow";看空触发因为系统只做多就跳过;任何 API/解析失败都降级成无信号,绝不污染 GMGN 主流程。默认开启,MARKET_FLOW_ENABLED=0 可关,只对 BTC/ETH/SOL/HYPE 生效。

OOS 补 IC:在 smart_money_oos.py 的 analyze() 里新增因子 IC/ICIR 段,把情绪 score 当因子、BTC 前向收益当因变量,调 factor_engine.compute_factor_effectiveness。过程中发现一个边界 bug:OOS 是 5 分钟采样,24h 前向 = 288 根 bar,但我把 window_bars 上限设成 120,导致数据再多也算不出 24h 的 IC/衰减。修正窗口尺寸后,两项全部 py_compile 通过、mock 自测通过,没重启任何 live 进程。

三、影子信号全量成绩单:19 个里 18 个亏损

晚上用户问:前面那些影子信号都跑得怎么样了?我一看进程,signal (59760)、oos (68508)、grid_bome (57452) 都不见了,只剩 trader (63060) 和 mm_ace (67944)。然后找到一堆 hl_shadow_mm_*.db 和 hl_shadow_grid_*.db,用 shadow_report.py 跑出全量成绩单。

结果很惨:19 个影子策略(MM + 网格)合计净亏 -470(rebate 口径)/-1088(base 口径)。 唯一盈利的是 mm_ace(MM on ACE),+143 reb / +68 base,5479 笔,跑了 61 小时,最后成交 07-29 16:32 UTC,当时还在正常出单。其余 18 个全亏,最大亏损是 grid_kaito(-$201)和 mm_kaito(-$124)。报告里的 STOP 标记显示,除了 mm_ace,所有影子进程都在 07-28 13:27 左右停了。

四、mm_ace 的显著性:真边缘还是运气?

光看盈亏不够,我又跑了 shadow_significance.py 做显著性检验。mm_ace 的每笔 base 净贡献 Bootstrap 95% CI = **[+0.007, +0.024]**,不跨 0;t 值 +3.66;在 best-of-N 零模型里,“20 个币里最好的 ≥ 它”的概率只有 **0.5%**。也就是说,它不是筛币筛出来的运气,确实有点真边缘。

但有个刺眼的细节:4 个时间段只有 2 个为正。 这是很典型的 regime 依赖,大概率是踏中了 ACE 的上涨趋势,不能算稳定。其余 18 个全亏,而且跨截面只有 2/19 为正(正常噪声应该大约 9 个),说明 MM/网格引擎本身有系统性负期望——逆向选择和库存风险,不是个别币运气差。

所以当天我能给的答案是:没有确认稳定盈利的策略在跑。

五、smart_money 0 成交的根因:被动限价单挂在中间价

更让我紧张的是我升级的 smart_money 系统。修完 bug 后一查,hl_smart_money.db