高频交易系统中的成交概率模型架构设计
挂单成交概率架构设计
建模目标
本项目旨在构建一个高频交易中的成交概率建模系统,最终服务于最优挂单策略决策。我们不止关注“是否成交”,而是关注每一个可能挂单位置所带来的期望收益最大化。因此,整个建模目标可以概括为:
选择一个挂单档位 ( 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) 随市场状态通过卡尔曼滤波进行在线更新。
结构流程如下:
构建静态 scoring 函数族 ( f(x; \theta) ),例如:
- Sigmoid: ( f(x; \mu, \alpha) = \frac{1}{1 + \exp(\alpha \cdot (x - \mu))} )
- 单调 spline / 多项式曲线等
模型训练阶段:
- 使用历史数据拟合最优 (\theta)(scoring 曲线形状)
- 可选加入市场状态特征预测初始 (\theta_0)
实时推理阶段:
- 根据订单流、盘口变化,利用卡尔曼滤波实时更新 (\theta_t)
- 实时生成 ( f_t(x) ) 成交倾向曲线
策略阶段:
- 结合利润函数 ( \text{Profit}(x) )
- 输出最大期望收益对应档位 ( x^* )
架构二:神经网络 + 多头输出端到端学习
该架构直接构造一个多头输出的神经网络模型,端到端从盘口输入预测 100 档成交倾向得分(或概率):
结构流程如下:
输入特征:
- 当前 LOB(ask1~ask100 的价格和数量)
- Order flow / imbalance 等上下文信息
模型结构:
- MLP / GRU / Transformer 编码器
- 输出层为 100 维多头输出:每个头对应 ask1~ask100 的成交倾向分数
训练方式:
- 可使用 pairwise ranking loss、softmax 多分类、或 soft-label 分布拟合
策略阶段:
- 计算每档 ( x ) 的成交概率 ( P_{\text{fill}}(x) )
- 联合利润曲线 ( \text{Profit}(x) )
- 输出最大期望收益档位 ( x^* )
工程化中可能存在的问题与解决方案
1. 真实标签获取困难
由于实际系统中挂单是否成交受到撮合逻辑、订单队列、对手单行为等复杂因素影响,因此:
- 如果不真的挂单,就很难获得真实的成交与否标签;
- 因此,我们更关注一个极小时间窗口 (\delta t) 内的“相对成交概率”,而不是绝对概率。
解决方案:
- 将建模目标转为学习“各档位之间的相对成交倾向”;
- 使用多头输出或排序学习方法刻画档位之间的排序关系。
2. 离散与连续建模的工程权衡
虽然连续建模(如使用隐函数)在表达能力和可插值性上具有优势,但在高频场景中:
- 连续模型往往计算开销大,不适合低延迟部署;
- 神经网络输出所有档位分数( 100 档)时,必须在每个推理周期全部计算完成,如果档位数大,则反向传播和前向传播的成本高,每个时间步都需要计算梯度并且更新权重。
对策:
- 使用离散化建模,仅对有限关注的价格档位建模;
- 对于在线更新的问题,可以使用元学习等方法轻量化在线更新参数,也可以用一个稍小的神经网络构造初始分布参数然后用Kalman滤波等更新器做在线更新;
All articles on this blog are licensed under CC BY-NC-SA 4.0 unless otherwise stated.