跳转至

Decision 背后的规则:Buckets、Routing、VMD 与 MCB

本页回答一个核心问题:Decision 行中的 Buckets、Rule、Route、Mode、Base VMD、M、C、B 是怎样连接起来的?

这些 Controls 页面解释当前规则结构,但历史订单仍以 Decision 中保存的命中结果为准。不要用今天看到的配置覆盖订单发生时的记录。

从检测到最终决策

DETECTION BUCKETS
只分类流量
ROUTING
选择 STP / B-Book / Reject
ORDER RULES
按订单类型选择 Mode
BASE VMD + M/C/B
形成参数组成
DECISION
保存实际命中结果

Detection buckets:只负责分类

Controls → Detection buckets

页面明确说明:Bucket 只做 classification,不决定 disposal;同一订单可以同时命中多个 Bucket,Bucket 本身没有优先级。命中后的处理由 Routing、Order rules 和 VMD 通过 Buckets 条件决定。

每条 Bucket 需要一起读:

字段 用途
Bucket name Decision 中可能出现的分类名称
Range 该检测适用的账户组、品种或其他范围
Aggregation 按 Account、Client、Group、Broker、Symbol、Side 等怎样聚合
Window 指标累计的时间窗口
Metrics & thresholds 达到什么组合条件才命中
Status Active、Shadow 或 Inactive

Shadow 不能简单翻译为“无效”。页面中的说明显示 Shadow bucket 仍可作为分类结果出现,但是否参与具体治理要看下游规则。调查时记录状态,不自行推断影响。

Routing:选择订单去哪里

Controls → Routing

Routing rules 从上到下匹配,first match wins。未命中任何规则的订单会被拒绝。Target 的含义在页面中明确为:STP 路由到 LP,B-Book 内部化,Reject 阻止订单。

Routing 条件可以读取 Bucket membership。因为一个订单可同时处于多个 Buckets,组合条件需要用多条 AND 条件表达;最终仍由规则顺序决定,不由 Bucket 决定优先级。

例:Force STP — T5 条件为 Tier = T5,Target 为 STP。这与 DEC-89234 的 Rule 和 Route 完全对应。

Order rules:同一路由下怎样处理不同订单类型

Controls → Order rules

Order rules 同样从上到下匹配、first match wins,未命中会拒绝。页面按订单类型分别给出处理 Mode:Open Limit、Open Stop、Open Mkt、Close TP、Close SL、Close Mkt、Close SO。

页面列出的 Mode 包括 Direct、MCB、BFC、Market、Market (worst-of)、Reject。此外还应核对 Quote check、VMD lot、Bypass 和 Status。不能只看 Rule name 就假定所有订单类型采用相同 Mode。

例如 Scalper detected 的条件是 Tag = Scalper OR Tag = LatencyArb,不同订单类型分别可能采用 BFC、MCB 或 Market (worst-of)。这解释了为什么 Decision 必须把 RuleMode 一起读。

Base VMD:规则选择哪个参数 Profile

Controls → Base VMD

Base VMD 的 Rules 页同样按从上到下、first match wins。每条规则引用一个 VMD profile,而实际的 per-symbol 参数定义在对应 profile 中。当前核实到的示例包括:

  • GoTrading — tight spread:Broker = GoTrading → Tight execution;
  • IB-2088 / IB-3021 channels:Group 命中指定渠道 → IB size-discouraging。

调查历史订单时,Decision 的 Base VMD 是当次记录;Controls 中当前 Rule/Profile 只能用于理解结构或检查现状。

Market (M):订单当时的市场组成

Controls → Market (M)

页面公式显示 M_add 为各 M module 结果之和并受全局上下限约束,M_delay 为各模块 delay 之和并受 1000ms cap;模块会按 request 采样其配置区间。

当前页面显示的模块包括实时区间评分 M_micro 和日历/事件 M_evt,并支持有 Scope、Reason、Activated、Expires、Triggered by 的 Emergency override。因此调查异常 M 值时,不只看模块,还要检查当时是否有 override。

Client scoring (C):UID 评分映射到 Tier、C_add 和 C_delay

Controls → Client scoring (C)

页面显示这是 UID-level scoring:Score A、B、C 合成 Client Risk Score,再映射到 Tier、C_add / C_delay。保存配置不会立刻重算现有 UID score,要等下一次 scoring refresh;这对调查“配置刚改但客户 Tier 没变”非常重要。

Tier mapping 同时给出 Score range、C_add、C_delay、Routing hint 和 Description。例如 T5 对应最高区间、C_add +1.00、较高 delay 范围及 Force A-Book hedge 提示。Routing hint 是提示,实际订单 Route 仍以 Decision 命中结果为准。

Behavior tags (B):人工标签与系统标签进入同一管线

Controls → Behavior tags (B)

Manual tags 可由用户在 Client 页面或 CRM webhook 管理;System tags 由已部署 detector 注册,检测逻辑由 engineering 管理,而业务属性可在此配置。两类标签都进入 B_coeff / B_spread_x / B_delay 管线。

新人需要区分:

  • 标签来源:Manual 还是 System;
  • Effect mode;
  • B_coeff、B_spread_x、B_delay;
  • System detector 的 Schedule、Trigger 与 Status;
  • OnShadow 状态。

例如 Decision 中出现 LOCKCHURN B4 / PSEUDOSCALP B4 时,可在此理解标签配置,但应到 Client detail 和 Decision 记录核对客户当时实际携带的标签。

完整阅读规则

看到一张 Decision 时,按以下方式追溯:

  1. Buckets / Readings at hit:当时命中了什么流量分类及读数;
  2. Rule / Route:哪条 Routing rule 首先匹配,订单去向是什么;
  3. Mode:Order rule 对该订单类型选择了什么处理方式;
  4. Base VMD:当次记录引用什么基础配置;
  5. M / C / B:市场、客户评分、行为标签分别贡献了什么;
  6. Spread / Slippage / Delay / Final / Cost / Status:最后形成并记录了什么结果。

实战任务:比较两张 Decision

比较 DEC-89234DEC-89240:解释为什么前者显示 Force STP — T5 / STP,后者显示 Scalper detected / B-Book / BFC,并指出哪些内容是历史事实、哪些 Controls 只能帮助理解当前配置。

展开参考答案 `DEC-89234` 保存了 Tier T5、Rule `Force STP — T5`、Route STP;当前 Routing 中存在同名规则,条件为 Tier = T5,说明当前结构与该记录一致。`DEC-89240` 保存了 Tag `PSEUDOSCALP B3`、Rule `Scalper detected`、Route B-Book、Mode BFC;当前 Order rules 显示同名规则可按标签条件为不同订单类型选择 BFC/MCB/worst-of。订单当时实际命中的 Tier、Tags、Rule、Route、Mode 和数值以 Decision 为历史事实;当前 Controls 只能用于解释结构,不能证明配置在历史时刻完全相同。