2. 算法执行基础

算法执行风险控制的第一步,不是写风控规则,而是把算法从“策略想法”到“真实成交”的完整链路拆开看清楚。只有明确算法在什么阶段、什么环境下、以什么模式运行,以及哪些指标会先于事故发生变化,后续的异常处置才有抓手。本节围绕算法生命周期、执行环境、关键指标、常见执行模式与风险来源五个方面展开,为后续章节的监控、熔断与复盘建立共同语言。

一、算法生命周期:从研究到退役的六个阶段

算法并非“上线即完成”,它更像一个有生命周期的生产系统。典型生命周期可划分为六个阶段:研究回测、仿真验证、灰度上线、全量运行、监控调优、退役下线。每个阶段的输入、输出与风险特征都不同。

  • 研究回测:验证逻辑有效性,风险在于过拟合、幸存者偏差、未来函数。
  • 仿真验证:接入实时行情但不下真实单,风险在于仿真撮合与真实撮合差异。
  • 灰度上线:小资金、小仓位、限定标的,风险在于参数未适配真实流动性。
  • 全量运行:策略按目标规模执行,风险集中在容量、延迟与市场冲击。
  • 监控调优:根据实盘表现调整参数,风险在于频繁调参导致策略漂移。
  • 退役下线:逐步减仓并停止信号,风险在于退出过程中的流动性与敞口残留。
生命周期管理的核心原则是:每个阶段都要有明确的准入条件与退出条件,禁止跨阶段“跳级”上线。

二、执行环境:算法运行的四个关键层面

算法执行环境决定了策略“能不能跑、跑得多快、跑得准不准”。可以从四个层面理解:

  1. 硬件与网络层:服务器位置、网络延迟、时钟同步、冗余链路。
  2. 系统与中间件层:操作系统、消息队列、数据库、行情与交易网关。
  3. 算法运行层:策略进程、参数配置、状态存储、日志与监控埋点。
  4. 市场与合规层:交易所规则、涨跌停、最小变动单位、报撤单限制。

很多“算法异常”其实不是算法逻辑错,而是环境层出了问题。例如行情时间戳错乱、交易网关重连、系统时钟漂移,都会让算法在错误的时间做出正确的计算。下面是一段典型的执行环境配置片段:

execution:
  gateway: "ctp_prod"
  market_data: "level2_udp"
  clock_sync: "ntp:10.0.0.1"
  max_order_rate: 50   # 每秒最大报单数
  cancel_ratio_limit: 0.8
  reconnect:
    retry: 5
    backoff_ms: 200

三、关键指标:算法执行的“仪表盘”

算法执行不能只看盈亏。盈亏是结果,指标是过程。过程指标先恶化,结果才会恶化。常用关键指标可分为四类:

类别 指标 含义 异常信号
执行质量 滑点、成交率、撤单率 实际成交与预期的偏差 滑点突增、撤单率接近上限
系统性能 延迟、吞吐、丢包率 算法与市场的交互效率 延迟抖动、行情丢包
风险敞口 净头寸、集中度、杠杆 当前暴露的风险规模 头寸超限、单标的集中
行为合规 报撤单频率、自成交 是否符合交易所规则 频繁报撤、疑似自成交
只监控盈亏而不监控过程指标,等于等到事故发生后才知道算法已经失控。过程指标必须设置阈值与告警。

四、常见执行模式与风险来源

算法执行模式决定了风险的类型。常见模式包括:

  • 市价单执行:追求成交确定性,风险是冲击成本与滑点。
  • 限价单执行:追求价格优势,风险是未成交与逆向选择。
  • TWAP/VWAP:按时间或成交量拆分,风险是行情突变时仍机械执行。
  • 冰山/隐藏单:减少市场影响,风险是暴露后引发跟单。
  • 做市/双边报价:赚取价差,风险是库存累积与单边行情。

风险来源可以归纳为五类:市场风险(价格跳空、流动性枯竭)、模型风险(参数失效、逻辑缺陷)、系统风险(延迟、断连、进程崩溃)、操作风险(误配置、误触发)、合规风险(违反报撤单与自成交规则)。理解这五类来源,才能在异常处置时快速定位。

算法执行链路与风险来源 行情输入 延迟/丢包 信号计算 模型/参数 订单生成 报撤单规则 交易网关 断连/重连 成交 回报 风险来源 市场风险 模型风险 系统风险 操作风险 合规风险 关键监控指标 滑点/成交率 延迟/丢包 净头寸/集中度 报撤单频率

五、案例与复盘:一次“正常”的异常

某量化团队在开盘后 15 分钟发现策略成交率骤降,滑点扩大。初步排查算法逻辑无异常,最终定位为行情源切换后时间戳精度从毫秒变为秒,导致信号计算使用了过期价格。算法本身没有错,但执行环境变化未被监控覆盖。复盘结论有三点:

  • 行情源切换必须纳入变更管理,并同步更新监控阈值。
  • 时间戳精度、延迟分布应作为独立指标持续监控。
  • 异常处置不能只看算法层,要按“环境—系统—算法—市场”顺序排查。
算法执行风险控制的本质,是把“不可见的执行过程”变成“可观测、可度量、可干预”的工程系统。生命周期提供阶段框架,执行环境提供运行底座,关键指标提供预警信号,执行模式与风险来源提供定位地图。四者结合,才能在异常发生时快速判断是市场问题、系统问题,还是算法本身的问题。

掌握本节内容后,读者应能画出自己算法的执行链路图,标注每个节点的输入输出、关键指标与潜在风险来源。这张图将成为后续异常处置与熔断设计的起点。