挂单成交概率架构设计

建模目标

本项目旨在构建一个高频交易中的成交概率建模系统,最终服务于最优挂单策略决策。我们不止关注“是否成交”,而是关注每一个可能挂单位置所带来的期望收益最大化。因此,整个建模目标可以概括为:

选择一个挂单档位 ( x^ ),使得该位置的成交概率与潜在收益的乘积(期望收益)最大。*

数学表达为:

[
x^* = \arg\max_x \ P_{\text{fill}}(x) \cdot \text{Profit}(x)
]

其中:

  • ( P_{\text{fill}}(x) ):当前市场状态下,挂在第 ( x ) 档的成交概率;
  • ( \text{Profit}(x) ):成交后该档位能获得的每单收益;
  • ( x ):挂单相对于当前中间价的价格档位。

系统架构

为了实现上述建模目标,我们设计了两种不同的系统架构思路,分别强调可解释性与动态更新、以及端到端的高性能预测能力


架构一:Scoring 模型 + 卡尔曼滤波在线更新

该架构将成交倾向函数 ( f(x; \theta_t) ) 拆分为两部分:

  • 静态函数形式(如 sigmoid、多项式等);
  • 状态参数 (\theta_t) 随市场状态通过卡尔曼滤波进行在线更新。

结构流程如下:

  1. 构建静态 scoring 函数族 ( f(x; \theta) ),例如:

    • Sigmoid: ( f(x; \mu, \alpha) = \frac{1}{1 + \exp(\alpha \cdot (x - \mu))} )
    • 单调 spline / 多项式曲线等
  2. 模型训练阶段

    • 使用历史数据拟合最优 (\theta)(scoring 曲线形状)
    • 可选加入市场状态特征预测初始 (\theta_0)
  3. 实时推理阶段

    • 根据订单流、盘口变化,利用卡尔曼滤波实时更新 (\theta_t)
    • 实时生成 ( f_t(x) ) 成交倾向曲线
  4. 策略阶段

    • 结合利润函数 ( \text{Profit}(x) )
    • 输出最大期望收益对应档位 ( x^* )

架构二:神经网络 + 多头输出端到端学习

该架构直接构造一个多头输出的神经网络模型,端到端从盘口输入预测 100 档成交倾向得分(或概率):

结构流程如下:

  1. 输入特征

    • 当前 LOB(ask1~ask100 的价格和数量)
    • Order flow / imbalance 等上下文信息
  2. 模型结构

    • MLP / GRU / Transformer 编码器
    • 输出层为 100 维多头输出:每个头对应 ask1~ask100 的成交倾向分数
  3. 训练方式

    • 可使用 pairwise ranking loss、softmax 多分类、或 soft-label 分布拟合
  4. 策略阶段

    • 计算每档 ( x ) 的成交概率 ( P_{\text{fill}}(x) )
    • 联合利润曲线 ( \text{Profit}(x) )
    • 输出最大期望收益档位 ( x^* )

工程化中可能存在的问题与解决方案

1. 真实标签获取困难

由于实际系统中挂单是否成交受到撮合逻辑、订单队列、对手单行为等复杂因素影响,因此:

  • 如果不真的挂单,就很难获得真实的成交与否标签;
  • 因此,我们更关注一个极小时间窗口 (\delta t) 内的“相对成交概率”,而不是绝对概率。

解决方案:

  • 将建模目标转为学习“各档位之间的相对成交倾向”;
  • 使用多头输出或排序学习方法刻画档位之间的排序关系。

2. 离散与连续建模的工程权衡

虽然连续建模(如使用隐函数)在表达能力和可插值性上具有优势,但在高频场景中:

  • 连续模型往往计算开销大,不适合低延迟部署;
  • 神经网络输出所有档位分数( 100 档)时,必须在每个推理周期全部计算完成,如果档位数大,则反向传播和前向传播的成本高,每个时间步都需要计算梯度并且更新权重。

对策:

  • 使用离散化建模,仅对有限关注的价格档位建模;
  • 对于在线更新的问题,可以使用元学习等方法轻量化在线更新参数,也可以用一个稍小的神经网络构造初始分布参数然后用Kalman滤波等更新器做在线更新;