2. 交易市场基础

做Pre-Trade实盘风控,第一步不是写规则,而是把“订单从哪来、长什么样、经过哪些环节、最终去哪”彻底搞清楚。风控拦截点如果放错位置,要么拦不住风险,要么误杀正常交易。本节围绕订单类型、交易生命周期、交易所接口和典型业务场景四个维度,建立后续所有风控逻辑的基础坐标系。

一、核心原理:订单是风控的最小输入单元

订单(Order)是交易意图的结构化表达。风控系统看到的不是“用户想买股票”,而是一组字段:证券代码、买卖方向、价格、数量、订单类型、有效期、账户、席位、通道等。不同订单类型决定了价格与数量的约束方式,也决定了风控校验的复杂度。

  • 市价单(Market Order):只指定数量,不指定价格,追求立即成交。风控重点在于数量上限、可用资金/持仓、涨跌停保护,以及极端行情下的价格偏离。
  • 限价单(Limit Order):指定价格与数量,价格是硬约束。风控需校验价格是否在涨跌停范围内、是否偏离最新价过多。
  • 止损单/条件单(Stop / Conditional Order):触发条件满足后才转为市价或限价单。风控要关注触发价与当前价的偏离、触发后的二次校验。
  • 冰山单/隐藏单(Iceberg / Hidden):只显示部分数量,风控需按总数量而非显示数量计算敞口。
  • FOK / IOC:FOK要求全部成交否则撤销,IOC要求立即成交否则撤销。风控需结合有效期字段判断是否允许部分成交。

关键原则:风控校验必须基于订单的完整语义,而不是只看价格和数量两个字段。例如冰山单若只按显示数量校验,会严重低估真实敞口。

二、交易生命周期:订单的六个关键状态

一笔订单从生成到终结,通常经历以下阶段。理解每个阶段的“可拦截窗口”,是Pre-Trade风控设计的核心。

  1. 订单生成(New):客户端或策略生成订单,尚未发送。这是最理想的拦截点,可在本地完成大部分校验。
  2. 风控校验(Pre-Trade Check):检查资金、持仓、价格、数量、频率、权限等。通过则放行,不通过则拒绝并返回原因。
  3. 报单(Sent / Pending):订单发送至交易所或柜台,等待确认。此时订单已离开本地,拦截成本变高。
  4. 交易所确认(Accepted / Rejected):交易所返回接受或拒绝。被拒绝的订单需记录原因,用于复盘。
  5. 部分成交 / 全部成交(Partially Filled / Filled):订单进入撮合阶段,风控需实时更新敞口。
  6. 撤销 / 终结(Cancelled / Expired):订单失效,释放冻结资金或持仓。

Pre-Trade风控的最佳拦截窗口在“订单生成”与“风控校验”之间。一旦进入“报单”阶段,撤单和改单都会带来额外延迟与风险,尤其在极端行情下可能无法及时撤回。

三、交易所接口:订单如何真正到达市场

不同交易所和柜台提供的接口差异很大,但核心字段和交互模式有共性。以下是一个典型的报单请求结构:

{
  "account": "A123456",
  "symbol": "600519.SH",
  "side": "BUY",
  "order_type": "LIMIT",
  "price": 1680.00,
  "quantity": 100,
  "time_in_force": "DAY",
  "client_order_id": "c-20240612-0001"
}

常见接口类型包括:

  • 柜台API(如CTP、恒生、金证):国内期货、证券常用,字段规范,需处理会话与重连。
  • 交易所直连(如FIX、Binary):低延迟场景,字段紧凑,风控需在网关层完成。
  • 券商/期货公司网关:封装了部分风控,但机构仍需自建Pre-Trade层。

接口返回的“已接受”不等于“已成交”。风控系统必须区分“报单成功”与“成交回报”,否则会误判敞口。建议以成交回报(Fill)为准更新持仓和资金。

四、常见业务场景与误区复盘

以下场景在实盘中高频出现,也是风控规则最容易出错的地方。

场景 风险点 风控动作
市价单在涨跌停附近 成交价严重偏离预期 限制市价单最大数量,或强制转限价
冰山单只校验显示数量 真实敞口被低估 按总数量校验资金与持仓
条件单触发后行情跳空 触发价与成交价差距大 触发后二次校验价格偏离阈值
高频撤单 触发交易所异常交易监控 设置撤单频率上限与冷却时间
多账户同标的集中下单 超出自营/资管持仓限制 按账户组维度合并计算敞口

复盘时常见误区:一是把风控规则写死在客户端,导致策略绕过;二是只校验单笔订单,忽略账户组和标的维度的合并敞口;三是忽略订单类型差异,用同一套阈值处理市价单和限价单。正确做法是按订单类型、账户维度、标的维度分层校验,并在报单前完成全部检查。

订单生命周期与Pre-Trade风控拦截点 订单 生成 New 风控 校验 Pre-Trade 报单 发送 Sent 交易所 确认 Accepted 成交 终结 Filled 拦截窗口 放行通道 本地生成 资金/持仓/价格/频率 网关/柜台 回报确认 更新敞口