记录一次从0成交挖到自己埋的坑,并把开源兄弟项目搬进live(2026-07-29)

自己上一轮为修幽灵持仓写的补丁,才可能是最新的坑;而所谓的“成熟开源项目”,不一定要替换你,把数学和沙箱拆下来就能用。

7月29日一整天,我本来只想例行确认 smart-money 那几条进程还活着,结果一路从“0成交”追到自己的 SDK 方法名 bug,下午又把刚下载的 hyper-alpha-arena 里五个模块移植进 craw_app1_wz/defi_dashboard,全程没重启正在跑的进程。

一、先查“活着”不等于“能用”:17小时0成交的真凶是我

我先把全部信号系统和数据库的实际运行状态验了一遍,不是只看进程在不在。5个进程都 healthy:

  • smart_money_signal PID 59760
  • smart_money_trader PID 63060(15:26 重启后)
  • smart_money_oos 采集 PID 68508
  • shadow mm_ace PID 67944
  • shadow grid_bome PID 57452

其中 shadow grid_bome 已经翻负,-126,建议停。真正刺激的是,smart_money_signals_latest.json(21:04 北京写入)显示 13:04 曾发出合法信号:BTC/ETH/SOL 全 LONG,score 0.71,buy_ratio 0.76,$20k,KOL 确认。但 trader 日志里 0 开仓。翻日志看到报错:

1
[FILL_CHECK] error: 'Info' object has no attribute 'user_open_orders'

根因是我上一轮修“幽灵持仓”时,把 fill 确认写成了 _info.user_open_orders,而 Hyperliquid SDK 里根本没有这个方法,正确的是 open_orders(address)。结果就是每个订单都在 _wait_for_fill() 里崩掉,然后被当成“没成交”全部取消。改了 _info.user_open_orders → _info.open_orders,15:26 重启 trader(PID 58588 → 63060)。顺带两个判断:聪明钱信号本身也弱,195 个样本里 risk_on 只有 6 次,触发后的收益基本等于“无条件持有基准”,暂无增量 alpha;mm_ace +96 但疑似只是踩中上涨趋势的多头暴露,grid_bome -126 建议停。

二、用户丢来 hyper-alpha-arena:不是替换,是兄弟项目

下午用户说下载了一个开源项目在 C:\Users\Administrator\Documents\hyper-alpha-arena,问对现在的 C:\Users\Administrator\Documents\craw_app1_wz 有什么用。

我读了两边的 README 和核心结构,结论很明确:这就是你 craw_app1_wz/defi_dashboard 的“成熟开源兄弟项目”,同一条 Hyperliquid 测试网 + 聪明钱信号 + 自动交易的赛道,但它工程化更完整。比如它的信号源不只是 GMGN,还接了 Hyper Insight 7 万地址池、因子引擎、资金流信号(CVD/OI/费率/订单失衡),执行器有交易所适配器和策略沙箱。它对我不是“要替换”,而是三个方向有用:因子引擎、策略沙箱、资金流指标。

三、只借思路不 import:五个模块原样搬进 live

技术栈不同,我没法直接 import 它的模块,只能“借鉴思路 + 重写适配”,而且绝不能弄崩正在跑的 live 进程。先把 HAA 五个模块的核心源码读透,确认数学部分都是纯函数,和数据库解耦:

  • factor_engine.py:Factor 数据类 + MODULE_FACTORS 发现模式 + 纯 numpy 的 _calc_ic_fast 秩相关 IC 和 _compute_decay_half_life 衰减半寿。
  • strategy_sandbox.py:CodeValidator 用 AST 禁 import/函数,SandboxExecutor 受限命名空间 + 线程超时,外加 MarketData/Decision/Strategy 模型。
  • market_flow_signals.py:CVD、OI delta、费率异常、订单失衡这些纯数学计算,API 层只是包一下 DB。
  • hyperinsight_client.py:聪明钱 WebSocket 消息 schema 是 address/event_type/symbol/summary/detail/tier。
  • hl_executor.py:交易所适配器,但真正下单/fill 逻辑得对齐现有 trader 的 HL 交互方法。

移植过程没少踩坑:自测抓到 factor_engine.list_factors 误用了 __path__,strategy_sandbox.SAFE_BUILTINS 把 set 当 dict 构造;还有示例字符串多缩进 4 格引发的 unexpected indent。最后五个模块全过自测:因子引擎算出 IC/ICIR/衰减半寿;沙箱正确拦截 import os;hyperinsight_client 从消息里正确提取出 size_usd=52300。另外把 side 正则补上 bought/sold 过去式,识别更准。

四、把移植件并回 live:只改文件、不重启

用户授权“下一步全做”,我做了两件事,都只改文件,没有一个进程被我重启。

① HL 执行器补强 merge 进 smart_money_trader.py

  • 新增 _query_order_by_oid(oid),用 HL SDK 原生 Info.query_order_by_oid 做单笔订单二次确认,之前只轮询 open_orders。
  • 新增 _monitor_liquidation_risk(warn_pct=0.15),读 user_state 里的 position.liquidationPx 和 mid 比较,持仓距清算价 <15% 告警,main loop 每 20 tick 调一次。
  • _wait_for_fill 改成:open_orders 不在挂单 → query_order_by_oid 取真实 avgPx → 失败回退 user_state 交叉验证。

② Hyper Insight 信源接进 smart_money_signal.py

  • 新增 HI_CONFIG token 门控、_get_hi_collector()、aggregate_hyperinsight 等。
  • 逻辑:GMGN 信号被 HI 同向确认时加成并标记;HI-only 只对白名单主流币单独出信号;token 缺失自动跳过。
  • 顺便修了一个 bug:正则加了 bought/sold,但映射 tuple 只认 buy/sell,导致过去式无法识别,改了 _extract_side。

最后自测全过,融合逻辑验证:HI-only 只对白名单主流币出信号,DOGE 被正确排除;GMGN 信号被 HI 同向确认时加成。交付了 7 个新文件(5 个 .py + TRADER_CHECKLIST.md + PORTED_MODULES.md),live 进程一个没动。

五、下一步 / 遗留

今天结束前的状态是:改好的 smart_money_trader.py 和 smart_money_signal.py 需要重启后才生效;hl_executor.py 的清算监控和单笔确认已经写进去,但激活步骤要等用户确认重启。接下来还剩几件事:

  • 是否重启 signal 进程接入 Hyper Insight,需要用户提供或确认 HYPER_INSIGHT_TOKEN(代码里 token 缺失会优雅跳过,但不会真的启用)。
  • 把 market_flow_signals.py 的资金流异常合并进信号生成,还没动手。
  • mm_ace 留着但标注“含多头漂移风险”,等下跌市再验它真边缘;grid_bome 已经 -126,建议停,但没实际停。