24、做市商利润模型中的机器学习应用:订单流预测、波动率预测、最优执行

做市商这行当,说白了就是靠「预测」吃饭的。你预测得准,就能在别人还没反应过来的时候把利润揣进兜里。传统模型靠的是数学公式和统计假设,但市场越来越复杂,那些假设经常被打破。我做了这么多年,越来越觉得——机器学习不是锦上添花,而是生存必需品。

今天咱们就聊聊三个最核心的应用场景:订单流预测波动率预测最优执行。这三个东西,就像做市商的三根支柱,缺一根都站不稳。

订单流预测:提前看到对手的底牌

做市商最怕什么?怕被「吃」。你刚挂了个买单,下一秒大单就砸下来把你吃掉。如果你能提前知道接下来几秒谁会买、谁会卖,你就能提前调整报价,避免被狙击。

我个人习惯用LSTM(长短期记忆网络)来做订单流预测。为什么?因为订单流数据是典型的时间序列,而且有长期依赖关系。一个大的机构订单,往往会在几分钟内拆成几十笔小单慢慢执行。LSTM能捕捉到这种「拆单」的痕迹。

核心思路: 把过去N笔订单的「方向、大小、到达时间间隔」作为特征,预测下一笔订单的方向(买/卖)和大小。

举个例子,我曾在某个ETF做市项目中遇到过这种情况:

# 简化版特征工程
features = [
    'last_trade_direction',      # 上一笔方向:1买 -1卖
    'last_trade_size',           # 上一笔大小
    'time_since_last_trade',     # 距上一笔时间(ms)
    'bid_ask_spread',            # 当前买卖价差
    'order_imbalance_5s',        # 过去5秒订单不平衡度
    'volume_ratio_1min'          # 过去1分钟成交量/均值
]

# 模型输出:下一笔是买单的概率
# 阈值0.6以上,我倾向于认为接下来会有买单涌入

嗯,这里要注意一点:不要只预测方向。我见过很多团队只预测「买还是卖」,结果准确率60%多,但实际交易中根本赚不到钱。为什么?因为大小也很关键。一笔大买单和十笔小买单,对价格的影响完全不同。

我的经验: 把预测任务拆成两步——先预测方向(分类),再预测大小(回归)。或者直接用多任务学习,两个目标一起优化。效果比单任务好不少。

波动率预测:给报价定个「安全垫」

做市商的利润来源是买卖价差。但价差设多大?设小了,容易被波动吃掉;设大了,没人跟你交易。波动率预测就是用来解决这个矛盾的。

传统方法用GARCH模型,但GARCH对非线性关系捕捉能力有限。我建议试试梯度提升树(XGBoost/LightGBM)。为什么?因为波动率的影响因素很多——隔夜跳空、宏观数据发布、期权到期日、甚至推特上的情绪。树模型能自动处理这些特征的交互作用。

我记得有一次,某个做市项目里,我们加入了「期权隐含波动率」和「VIX期货期限结构」作为特征,波动率预测的R²直接从0.3跳到了0.55。效果非常明显。

特征类别 具体特征 重要性评分
历史波动 过去5分钟、30分钟、2小时的已实现波动率
衍生品市场 隐含波动率、波动率偏斜、期限结构斜率
微观结构 买卖价差、订单簿深度、成交频率
宏观事件 距下次FOMC会议天数、非农数据发布倒计时
情绪指标 推特情绪得分、新闻情感极性 低(但有时很关键)
避坑指南: 我曾经犯过一个错误——直接用预测的波动率去设置价差。结果市场剧烈波动时,模型预测滞后,价差设得太小,连续被吃了几笔大的。后来我加了「预测置信度」这个维度:当模型不确定性高时,强制扩大价差。这才稳住了。

最优执行:把利润「挤」出来

订单流预测和波动率预测,最终都要服务于一个目标——怎么执行。你预测到有大买单要来,你是现在就提高报价,还是等它来了再调?你预测到波动率要飙升,你是缩小价差还是扩大价差?

这就是最优执行要解决的问题。我个人习惯用强化学习(RL)来做。为什么?因为执行决策是序列化的——你今天的决策会影响明天的库存,而库存又会影响后天的报价。RL天然适合这种「多步决策」问题。

具体来说,我常用深度Q网络(DQN)或者近端策略优化(PPO)。状态空间包括:当前库存、订单簿状态、预测的订单流方向、预测的波动率。动作空间包括:调整买价、调整卖价、调整双边报价、等待。

奖励函数设计: 我一般用「已实现盈亏 + 库存风险惩罚」。库存风险惩罚用VaR(在险价值)来量化。这样RL agent既会追求利润,又不会把库存堆得太极端。

你想想看,RL模型训练好了之后,它会学到一些人类很难直觉感知的策略。比如:当预测到有大买单要来时,它不会立刻拉高卖价,而是先小幅提高买价,吸引更多卖单进来,把库存补足,然后再拉高卖价去赚那波大买单的钱。这种「先吸筹再出货」的策略,人工很难持续执行,但RL可以。

下面这张图展示了三个模块之间的关系:

做市商利润模型:机器学习应用框架 市场数据输入 订单流预测 LSTM / Transformer 波动率预测 XGBoost / LightGBM 最优执行 DQN / PPO 策略融合与报价生成 最优买卖报价

说白了,这三个模块不是孤立的。订单流预测告诉你「谁会来」,波动率预测告诉你「市场有多颠」,最优执行告诉你「怎么接招」。三者配合好了,做市商的利润才能稳定。

一个小技巧: 在实际部署时,我建议把三个模型做成「级联」结构。订单流预测和波动率预测的输出,作为最优执行模型的状态输入。这样RL agent能看到更丰富的信息,决策质量会高很多。

最后说一句,机器学习模型不是万能的。市场结构会变,模型会过时。我每隔三个月会重新训练一次模型,并且每天监控预测误差。一旦发现某个特征的预测能力下降,立刻排查原因——是市场变了,还是数据出了问题?

做市商这行,赚的是「信息差」和「速度差」的钱。机器学习帮你把信息差拉大,把速度提上去。但最终拍板的,还是你这个人。