工程与管理交易策略机制系统架构

从硬止损到自适应恢复:Recovery Mode 的进化

交易策略总会遇到”事故”:持仓被交易所强平、被外部系统关闭、或者策略自己判断失误止损出场。

旧的处理方式很简单:等 N 小时,然后重新开仓。问题在于——N 是固定的,但事故的原因不是固定的。

  • 如果是因为极端行情被强平 → 市场可能还在极端状态 → 立即重开 = 送死
  • 如果是因为网络抖动导致外部关闭 → 行情没变 → 等 N 小时 = 白白错过机会

Recovery Mode v2 把固定冷却改成了状态机驱动的自适应恢复


状态机

IDLE(等待事故)

  ├─ 事故触发

COOLING(冷却中)

  ├─ 冷却到期 + 信号重新出现 → ENTRY_SCORING


ENTRY_SCORING(入场评分)

  ├─ 评分 > 阈值 → ACTIVE(正常交易)
  ├─ 评分不足 → COOLING(延长冷却)


ACTIVE(正常交易)

  └─ 再次事故 → COOLING(冷却时间加倍)

关键创新在 ENTRY_SCORING 阶段:不是冷却完就自动开仓,而是重新打分。 分数不够就继续冷却。


三层评分

入场评分由三个维度组成:

  1. 趋势确认(TREND_CONFIRMED):微趋势方向是否与事故前的持仓方向一致?一致加分,反转减分。
  2. 信号质量:事故前的信号是否仍然有效?信号质量是衰减的——时间越久,分数越低。
  3. 资金费率:当前资金费率是否支持这个方向?

三层都通过才开仓。而且冷却时间不是线性的——连续事故会指数级延长冷却时间。 第一次事故冷却 30 分钟,第二次 60 分钟,第三次 120 分钟。避免在错误的方向上反复被揍。


Per-Group Baseline

一个重要的并行改动:按标的分组统计 PnL。

为什么?因为 Recovery Mode 需要知道”这个标的之前是赚是亏”。全局 PnL 把赚钱的标的和亏钱的混在一起——某个标的明明一直在亏,但全局看起来还行,就会继续开仓。

按标的独立统计 → 亏钱的标的冷却更久 → 赚钱的标的更快恢复。

这和广告系统按广告主独立核算预算一样——不会因为全局预算还有余量就让某个 ROI 为负的广告主继续投放。


一句话

固定冷却 = 闭着眼睛等。自适应恢复 = 根据恢复质量动态调整——事故原因不同,恢复策略应该不同。