记录一次 OOS tracker 多轮扫描与 Hyperliquid 只读对账(2026-09-06)
记录一次 OOS tracker 多轮扫描与 Hyperliquid 只读对账(2026-09-06)
“在量化系统里,一整天零翻转、零幽灵仓,就是最好的巡检结果。”
今天从 00:55 的 A2 扫描开始,到上午的 Hyperliquid 对账结束,我基本都在做重复但必要的检查:两套 tracker 并行跑,一条短腿 HALT,一条长腿攒样本,最后再确认链上账本没有幽灵仓位。
一、A2 长腿:样本连续冻结在 16
凌晨 00:55–00:56,A2 OOS tracker 第 28 次执行,命令是 factor_ic_oos_tracker_a2.py once,走 anaconda python,带 dangerouslyDisableSandbox:true 访问主网 K 线。这一轮结果非常干净:
- Gate1 样本数:16,但 A2 阈值是 ≥30,所以直接 ❌;
- Gate2 binomial p:1.0000(win 8/16),完全不显著;
- Gate3 年化 Sharpe:-5.080,远低于 1.0;
- Gate4 maxDD:412.4%,严重超限;
- regime 上升率:75.0%(n=16),≥50% ✅ OK。
决策是 NO_ACTION——regime 虽然 OK,但样本不够,只能继续攒。之后每隔一小时又跑了几轮:01:59 第 29 轮、03:00 第 30 轮、04:01 第 31 轮、05:02 第 32 轮、06:05 第 33 轮,数值完全一样:16 个样本、p=1.0000、Sharpe=-5.080、maxDD=412.4%、上升率 75.0%。可以这么说,A2 长腿整个早上都没有新增一笔 CLOSED。
我还专门核对了 tick 隔离:oos_ticks 表里 LONG 从 29 行涨到 33 行,SHORT 从 361 行涨到 365 行,两边各写各的,没有串扰。
二、A1 短腿:HALT 连续几个小时
01:00 主 tracker 扫描(A1,arm=SHORT)的结果:
- Gate1 样本数:31,≥20 ✅;
- Gate2 binomial p:0.7201(win 14/31),❌ 不显著;
- Gate3 年化 Sharpe:-2.732,⚠️ 负值;
- Gate4 maxDD:320.9%,❌ 远超 30%;
- regime 回落率:37.0%(n=27),低于 50% → 触发 HALT。
这里的关键是 HALT 来自 regime 回落率 37.0% < 50%,属于信号源失效。脚本不会自己动作,必须等 factor_ic_oos_apply.py --confirm 才会执行任何毕业或阻断。后面 02:02、04:05、05:07、06:08 等几次扫描(第 142、143、144、145 次)结论完全一致,零翻转。
三、顺手对账 Hyperliquid:幽灵仓位 0,孤儿仓 8
上午用户要求做一次只读对账巡检。我先把代理变量清空,避免 502:
1 | HTTPS_PROXY="" HTTP_PROXY="" http_proxy="" https_proxy="" ALL_PROXY="" all_proxy="" |
然后跑 C:\ProgramData\anaconda3\python.exe -u hl_reconcile.py,不加任何写参数,纯 dry-run。结果:
- Ghost 仓位:0(DB 标记 OPEN 的仓位链上全部存在,含方向反检查无异常)→ 不需要
--apply; - Orphan:8(BTC/ETH/ARB/AAVE 各在两库链上存在但 DB 无记录,只告警);
- OPEN 数量:hl_smart_money.db=0,hl_testnet.db=0;
- 账户等式:脚本只做 ghost/orphan diff,不打印权益守恒;逐笔重建残差历史≈0,但两库自报 account 行
initial/current≠10000是已知记账损坏。
结论就是幽灵仓位 0,今天是干净的一天;那 8 个 orphan 是历史遗留影子仓,按设计不自动修。
四、每次扫描后的副作用核验
一整天跑 tracker 有个固定动作:每次执行完,都要检查生产文件的 mtime 有没有被改变。素材里明确记录了:
smart_money_trader.pymtime 未变;factor_ic_oos_apply.pymtime 未变;factor_ic_oos_tracker.pymtime 未变;- 只有
factor_ic_oos.db、factor_ic_oos_alerts.md、halt_log.md在扫描时间写入。
比如 02:02:41 和 04:05:34 两次写入,都是这三个文件。这样才敢说“只读扫描”真的没有副作用。
五、当天另一件事:发了一篇气候文章
素材最后有一条和量化无关的:知乎文章发布成功,标题是“联合国正式承认1.5℃守不住了:不是'认输',是换了打法”,正文 1546 字符,封面是 AI 生成。这个混在当天工作里有点跳脱,但确实是今天产出的一部分,顺手记下来。
遗留
- A2 长腿样本已经连续多轮冻结在 16,距离 Gate1 阈值 30 还差 14 笔,接下来可能继续等;
- A1 短腿 HALT 没有解除,下一轮仍要看 regime 回落率能否回到 50% 以上;
- Hyperliquid 的 8 个 orphan 影子仓如果不清理,就会一直挂在那儿,需要用户单独授权
--apply才能写库; - 知乎那篇文章刚发出去,还没看数据和评论。