3. 验证规则体系总览

验证规则体系是灰度发布策略的核心决策引擎。它定义了“什么样的回测结果可以被视为有效”、“哪些异常必须阻断发布”以及“如何在不同灰度阶段动态调整验证标准”。本章从规则分类、优先级和依赖关系三个维度构建完整的规则体系视图。

3.1 规则分类

验证规则按关注领域划分为四大类别:数据规则、逻辑规则、性能规则和风控规则。每类规则对应回测流程中的不同风险点。

规则类别 关注焦点 典型规则示例 阻断等级
数据规则 输入数据的完整性、一致性与时效性 缺失率 < 5%、时间戳无跳跃、复权因子连续 高
逻辑规则 策略逻辑的正确性与可复现性 买卖信号无未来函数、持仓计算与成交记录匹配 极高
性能规则 回测执行效率与资源消耗 单标的回测耗时 < 30s、内存峰值 < 2GB 中
风控规则 策略在极端行情下的风险暴露 最大回撤 < 20%、VaR 95% 在阈值内 高
灰度阶段与规则激活: 在灰度发布的早期阶段(如 5% 流量),优先激活数据规则和逻辑规则;性能规则和风控规则可在流量扩大至 30% 后逐步启用,避免因资源抖动导致误阻断。

3.2 规则优先级

规则优先级决定了当多条规则同时触发时,系统以哪条规则的判定结果为准。优先级采用 P0–P3 四级分级,P0 为最高优先级,直接阻断发布流程。

  • P0(致命):数据损坏、逻辑错误、严重风控越界。一旦触发,立即终止灰度发布并回滚。
  • P1(严重):数据质量不达标、性能严重退化。触发后暂停灰度,等待人工确认或自动修复。
  • P2(警告):性能轻微退化、风控指标接近阈值。触发后记录告警,不阻断发布,但需在最终评审中说明。
  • P3(提示):数据格式建议、逻辑冗余提示。仅记录日志,不影响发布决策。
优先级冲突处理原则: 当同一回测结果同时触发 P0 和 P2 规则时,以 P0 判定为准;当多条同优先级规则触发时,按“数据 → 逻辑 → 风控 → 性能”的默认裁决顺序执行。

3.3 规则依赖关系

规则之间存在明确的执行依赖,错误的执行顺序会导致验证结果失真。依赖关系分为三种类型:强依赖、弱依赖和独立。

依赖类型 定义 示例
强依赖 前置规则必须通过,后置规则才能执行 数据完整性规则 → 逻辑规则(数据不完整则逻辑验证无意义)
弱依赖 前置规则未通过时,后置规则仍可执行但结果需标记 性能规则 → 风控规则(性能差时风控结果仍可参考,但需标注性能影响)
独立 规则之间无执行顺序要求 数据时效性规则 ↔ 数据缺失率规则(可并行执行)
验证规则依赖关系图 验证规则依赖关系与执行顺序 数据规则(P0/P1) 逻辑规则(P0) 性能规则(P1/P2) 风控规则(P0/P1) 强依赖 强依赖 弱依赖 数据规则内部:独立 执行顺序说明: 1. 数据规则(P0/P1)先执行,通过后进入逻辑规则(P0)验证。 2. 逻辑规则通过后,风控规则(P0/P1)与性能规则(P1/P2)可并行执行。 3. 性能规则对风控规则为弱依赖:性能未达标时风控结果仍可参考,但需标记性能影响。

3.4 规则执行引擎架构

验证规则体系通过一个轻量级规则引擎实现自动化编排。引擎采用 DAG(有向无环图) 调度模型,确保依赖关系被正确解析,同时支持并行执行独立规则。

规则执行引擎架构 规则执行引擎架构(DAG 调度) 回测结果输入 DAG 调度器 解析依赖关系 · 拓扑排序 · 并行调度 数据规则执行器 逻辑规则执行器 性能规则执行器 风控规则执行器 验证结果聚合
工程注意: DAG 调度器必须处理循环依赖检测。如果规则配置中出现 A → B → A 的循环,调度器应在初始化阶段抛出异常并拒绝执行,避免死锁。

3.5 规则配置示例

以下是一个 YAML 格式的规则配置片段,展示了规则分类、优先级和依赖关系的实际声明方式:

rules:
  - id: data_completeness
    category: data
    priority: P0
    depends_on: []  # 无依赖
    condition: "missing_rate < 0.05"
    action: block

  - id: logic_no_future
    category: logic
    priority: P0
    depends_on: ["data_completeness"]  # 强依赖数据规则
    condition: "signal_lead_time >= 0"
    action: block

  - id: perf_exec_time
    category: performance
    priority: P2
    depends_on: []  # 独立规则
    condition: "exec_time_sec < 30"
    action: warn

  - id: risk_max_drawdown
    category: risk
    priority: P1
    depends_on: ["logic_no_future"]  # 强依赖逻辑规则
    condition: "max_drawdown < 0.20"
    action: pause
灰度发布中的规则动态调整: 在灰度流量从 5% 提升至 50% 的过程中,规则引擎支持动态修改规则的 priority 和 action。例如,在 5% 阶段将性能规则的 action 设为 warn,在 50% 阶段提升为 block,以平衡验证严格度与发布效率。