☰
AI做市研究:从经典报价模型到学习型市场的风险定价
2026/10/17 8:09:54 网站建设 项目流程

1. 做市商的生存逻辑:价差背后的风险定价

刚开始接触做市(Market Making)的时候,我脑子里想得很简单:低价买、高价卖,两边挂单赚价差,这不就是躺赚吗?真正下场做了一轮模拟盘之后才明白,做市其实是金融市场里最考验风险定价能力的行当之一。AI做市研究能在近几年成为量化领域的热点,不是因为大家突然对"挂单赚价差"这件事有了兴趣,而是因为传统做市模型在面对高波动、信息不对称和对手方策略进化时,越来越显得力不从心。所谓"最优报价",从来不是某个静态的公式能算出来的数字,而是要在库存风险、信息风险、市场冲击和竞争对手行为之间不断动态权衡的结果。

1.1 做市商到底在赚什么钱

做市商的利润来源表面上来自买卖价差(Bid-Ask Spread),但拆开来看,真正承担的成本有三大块:库存持有成本、逆向选择成本、交易执行成本。库存持有成本好理解——你手里囤了一批资产,价格波动一下,未实现盈亏就跟着抖,这种风险必须用价差来补偿。逆向选择成本则更隐蔽:市场上的对手方不一定都是散户,有些人掌握着你不知道的信息,他们会在你报价太"大方"的时候精准地成交在你这边,等你意识到价格该变了,已经亏了一笔。

所以一个合格的做市报价模型,本质上是在回答三个问题:当前最优买价和卖价应该设在什么位置?理论上可以同时挂买价和卖价,但两边价格的距离(价差)设多宽才不至于亏钱?每次成交之后,库存发生了变化,报价该怎么调整?

经典的做法是用存货模型来刻画这个权衡:库存偏移越大,报价就越要向"把库存甩出去"的方向倾斜。比如你手里积累了过多的多头库存,卖价就会相对降低,买价也会跟着压得更低,目的是吸引对手方来买走你的货,把库存恢复到中性位置。这个逻辑听起来很顺,但在实际市场里,最优的价差宽度不是固定的,它会随波动率、成交量、订单簿深度、新闻事件等因素实时变化。靠人工盯盘调参数,反应速度和精度都跟不上。

1.2 库存风险与信息风险:两类定价约束的博弈

把做市问题建模成风险控制问题,大致上有两条主线。一条是库存派,代表人物做的是把库存变化看作随机游走,用效用函数和风险厌恶系数来决定报价偏移。另一条是信息派,关注的是订单流中隐含的知情交易信号——如果买单突然密集出现,说明市场上可能有你不知道的利好,这时候你的最优报价应该迅速变"虚":价差拉大、深度减少,防止被知情交易者反复收割。

真实场景里,这两类约束是叠加的。比如一个刚发布重大消息的品种,波动率飙升,订单流信号噪音极大,库存也快速偏离中性。你做市策略如果只盯库存,就会在信息冲击下暴露;如果只盯信息信号,又可能过度收缩报价导致完全没成交量。AI做市研究的切入点就在这里:能不能用强化学习等方法,让系统在每一条新的订单、每一次成交、每一笔价格变动之后,自动重新估计"当前环境下最优的报价策略"?这不是简单地把库存和波动率塞进公式,而是让模型从数据里学出库存-信息-市场微观结构之间的非线性关系。

1.3 为什么传统做市公式在真实市场里会失灵

学术界给了很多漂亮的闭式解做市公式,比如著名的Avellaneda-Stoikov框架,把做市问题放在连续时间随机最优控制的框架下求解,输出一条关于最优买价和卖价的解析曲线。这个框架解决了一个很关键的问题:给定当前库存、剩余时间、风险厌恶系数和波动率,理论上你该在什么价位挂单。我在模拟环境里验证过,这个框架在平稳市场、低波动场景下表现相当稳健,价差设置、库存回归速度都很合理。

但一放到真实市场就会露馅。首先,公式假设价格遵循简单的几何布朗运动,可真实价格的跳跃、聚集波动、买卖盘不均衡,完全超出了这个假设。其次,它假设订单流到达率是常参数或随时间变化的确定函数,但实际上到达率和市场深度是密切联动的,你的报价策略本身会影响别人的行为,进而改变订单流参数。第三,公式里几乎不考虑对手方的学习能力——对手方也会根据你的报价行为来调整自己的策略。

这就是"学习型市场"这个概念开始登场的地方。当市场里的参与者都具备学习能力时,最优做市策略不再是对固定环境的优化,而是要和环境共同演化。AI做市研究的核心难度,恰恰在于如何处理这个动态博弈的味道。

2. 报价模型的三次跃迁:从静态公式到策略学习

做市报价的方法论演进,大致可以分成三个阶段。第一阶段是纯解析模型,追求的是"给定假设、求出最优解";第二阶段是经验参数化,把订单簿特征、波动率聚类等变量引入模型,用历史数据回归出报价偏移系数;第三阶段是学习型算法,直接让模型在和市场环境的交互中自己发现定价规则。

2.1 经典框架的核心思想与局限

Avellaneda-Stoikov框架的核心思路可以这样理解:做市商设定一个"基准价格",然后对称地给出买价和卖价,价差宽度取决于波动率和剩余时间。库存偏离中性越远,基准价格就越要向库存的反方向调整。这套逻辑在数学上很优美,但在工程上要先估算很多参数:瞬时波动率、订单到达率强度、库存惩罚系数等。参数的估计误差会直接传导到报价上,估计得不准,报价就忽宽忽窄。

更麻烦的是,它假设市场环境是"外生"的。也就是说,模型认为你的报价行为不会反过来大幅改变市场的波动特性和订单流特征。但在实际市场里,一个大玩家调整报价深度,会对其他参与者的策略产生显著影响,这是做市研究和传统最优执行(Optimal Execution)研究最大的不同点:做市的对手方会观察你,你的报价本身是一个信号。

2.2 深度强化学习怎样改写做市决策流程

强化学习(RL)为什么适合做市问题?因为它天然是一个序贯决策问题:每一个时刻,做市商观察市场状态,决定挂单还是不挂单、买价和卖价各是多少、挂多少量,然后市场给出成交结果和价格变动,系统获得奖励(盈亏和库存风险的变化),进入下一个状态。

用深度Q网络或者策略梯度方法,可以直接从原始市场特征中学出报价策略,不需要显式建模价格的随机微分方程。我实验过一种简化设定:状态空间包含订单簿前几个档位的买卖价差、盘口深度、最近一段时间的成交量加权价格、库存净头寸、距离目标库存的偏差,动作空间则是买价偏移和卖价偏移的三档离散值。模型通过环境的奖励信号不断调整策略,最后竟然自己学会了"库存偏多时主动压低卖价出货"这类经典规则——但它不是背下来的规则,是学出来的行为。

当然,这里有个常见误区:以为RL做市是"让模型自己瞎试,试出个赚钱策略"。实际上,如果环境设计不好,RL模型很容易学到"刷交易量"或者"在某个固定价位反复吃单边"的坏策略。好的AI做市研究,多数时间花在环境建模、奖励函数设计和模拟器校准上,而不是花在调网络结构上。

2.3 模拟环境与真实撮合机制之间的鸿沟

做市策略的训练离不开模拟环境。但模拟环境可靠吗?我用过几种不同的环境设计,体验差别非常大。最粗糙的是"价格随机游走+成交概率泊松到达"的环境,这种环境里学到的策略,拿到真实市场基本不可用。原因是真实订单簿有离散价位、有排队优先级、有不同类型订单的交互,完全不是简单的到达率过程。

中间档的模拟环境会引入限价订单簿的撮合规则,模拟对手方订单的到达和匹配,效果好了很多。但依然缺失一个关键环节:对手方的策略行为。真实市场里,对手方也在学习和调整,他们的订单行为不是纯随机的。我在搭建模拟环境时,会专门给对手方注入一些"行为模式",比如某类对手方会在价格快速下跌时撤单、某类大单会拆单进场,模拟环境里的行情特征才逐渐接近真实盘的感觉。这也是后面"学习型市场"概念在工程上落地时必须面对的:你训练AI做市时用的环境,本身就包含了对市场演化的假设。

3. 学习型市场:AI做市如何反过来塑造价格发现

"学习型市场"这个词听起来偏理论,实际上它在真实交易数据中有很具体的体现:当越来越多参与者用算法报单时,市场价格的形成过程和行为模式会发生系统性的变化。一个最典型的观察是,日内的价差模式越来越"非人性化"——开盘时的价差特征、消息冲击后的恢复速度、尾盘的流动性状态,都和人工做市时代明显不同。

3.1 AI做市对流动性与价差结构的真实影响

从市场质量的角度看,AI做市对价差的影响有两面性。一方面,运行良好的做市算法可以做得很细腻:毫秒级调整报价、根据订单簿状态动态控制深度,在高频尺度上提供更好的流动性,让普通投资者的成交成本下降。另一方面,如果多个做市商都用相似的算法模型,就会出现"策略同质化"——大家在同一时刻对同一信号做出相似反应,造成流动性骤停的现象。

我记得在某个数字资产交易对的数据里观察到一个很典型的现象:市场出现小幅波动时,价差可以自动调整到非常窄的水平;但一旦出现较大幅度的价格跳变,多个做市算法的报价会同步收敛到很宽的价差甚至直接撤单,流动性在几秒内快速蒸发。这个模式在人工做市时代是不常见的。这不是某个算法的问题,而是"多个学习型策略在同一个市场里互相影响"的涌现特征。

做市研究的理论框架,如果只研究"单个做市商如何优化自己的报价",显然是不够的。需要在微观结构模型里加入其他做市商、套利者和知情交易者的行为反馈,让算法意识到自己的报价会改变市场参与者的预期。这正是从"最优报价问题"走向"学习型市场问题"的核心转折。

3.2 策略反身性与博弈:你的最优报价取决于别人的报价

索罗斯讲的反身性概念,在做市研究里其实非常具体:你的报价会影响市场价格,市场价格又会反过来影响你的库存和盈亏状态。这种双向反馈,让"最优报价"变成了一个动态博弈的均衡问题,而不是一个静态优化问题。

具体拆解一下:假设市场上存在两种做市算法,算法A的报价规则相对激进,喜欢在偏离基准价格较远的位置挂单抢成交量;算法B则相对保守,通常在价差较窄时才会提供报价。A的激进策略会消化大量订单流,导致B观察到"成交率下降、库存波动变小",B就会倾向于提高报价的积极程度。反过来,B的变化又会传导给A。这个过程反复迭代,最后市场形成的价差和深度水平,是两个策略相互博弈的均衡结果,而不是任何一个策略单独优化就能决定的。

我在自建的模拟环境里专门测试过这种多智能体做市场景,把两个参数稍有不同的强化学习做市模型放在同一个订单簿里对弈。结果很反直觉:对单个智能体而言"最优"的策略参数,在博弈环境下表现反而更差;而能够在"报价积极程度"和"对对手方行为的敏感度"之间找到平衡的策略,长期表现更稳定。这就是"学习型市场"对AI做市研究的第一个实战启示:不要只优化自己的策略参数,要考虑你的策略行为会影响市场环境本身。

3.3 激励兼容与监管边界:AI做市不能触碰的几条线

经济机制设计里有"激励兼容"的概念,放在AI做市里可以这样理解:一个设计良好的做市算法,其自身的盈利动机应该和市场整体的流动性需求方向一致。如果算法发现"在特定市场变盘时快速撤单"最能保护自己,对个体来说是理性的,但多个算法同时这样做,市场就会在关键时刻失去流动性,最终反噬所有的市场参与者。

这就牵扯到做市义务(Obligation)的问题。一些交易所用做市商激励计划来引导算法在特定时段、特定价差范围内持续报价,本质上就是在"个体最优策略"和"市场整体流动性需求"之间做一个机制上的调和。AI做市系统在这些约束下训练时,奖励函数要加入"义务履行率""报价时间占比"等维度,而不是只看损益。我在实际搭建奖励函数时也体会过这个教训:单纯奖励盈利,模型最终会学到"市场平稳时积极做市、波动来临时躲起来"的机会主义行为,这在考核做市义务的交易场所里会被视为失职,严重时还会被扣保证金。

有朋友问过我:AI做市会不会最终导致市场被少数算法控制?我觉得短期内不会,但"学习型市场"确实会让做市行为的演化速度加快,监管层面需要关注的是算法的脆弱性——多个同类策略在极端行情下的共振风险,远比"算法是否会串谋"更现实。好的做市算法设计,应当在奖励函数里显式地加入"保持市场存在感"的软约束,让算法在行情剧烈时依然能维持一个合理的最小报价义务,而不是一味收缩自保。

4. 从理论到实盘:构建一个AI做市系统的工程细节

理论框架说得再漂亮,最终要落到实盘才能验证。我把自己在搭建AI做市研究原型过程中的工程经验拆成几个关键部分:状态特征怎么选、奖励函数怎么设计、训练和回测如何避免过拟合、实盘部署有哪些容易被忽略的坑。

4.1 状态空间与特征工程:哪些信息真正影响报价决策

做市模型的状态空间设计,是所有环节里最决定成败的部分。一个常见的做法是把订单簿的前N档价格和数量直接作为原始特征输入,再叠加一些累计统计量。但实际做下来,我发现原始订单簿特征噪声极大,直接把几千维的订单簿数据丢给模型,效果往往不如精心构造的低维特征。

我习惯把特征分成四个层次。第一层是价格统计特征:最近一段时间的成交量加权平均价、价格变动的均值与波动率、买卖价差的中位数。第二层是订单簿微观特征:盘口失衡度(买单数量与卖单数量的比值)、订单簿斜率(价格变化对数量的敏感度)、大单挂单的占比。第三层是库存状态特征:当前净头寸、偏离目标库存的比例、剩余做市时间。第四层是市场状态特征:近期成交量趋势、波动率状态切换信号、是否有明显的大单成交痕迹。

这四个层次的特征组合,基本上能覆盖做市决策所需要的大部分信息。有一个容易忽略的点是:模型的输入特征要区分"价格水平"和"价格变化趋势"。比如绝对价格水平对做市决策往往意义不大,但价格变化的加速度、订单簿失衡度的变化方向,才是真正驱动报价偏移的信号。我最初就踩过这个坑,把绝对价格当作重要特征输入,模型反而学到了不少和做市策略无关的干扰模式。

4.2 奖励函数设计的真实逻辑:盈亏、库存风险与连续性的平衡

奖励函数是做市RL的核心,也是我和同行交流时争论最多的点。最简单粗暴的奖励设计是:每一步的账户净值变化。这样设计的问题在于,它在时间尺度上不敏感——做市商今天可以承受小幅亏损,但库存风险和未来收益能力才是更关心的。我倾向于用"经风险调整的收益增量"作为奖励信号,即每一步的收益减去库存风险的增量。

具体来说,可以这样拆解奖励 R_t = reward_part,reward_part = delta_pnl_t - lambda * delta_inventory_risk_t。delta_pnl_t 是这一步的已实现和未实现收益变化,delta_inventory_risk_t 是库存风险的一项度量(可用当前库存量乘以波动率估计值的平方来近似)。lambda 作为风险厌恶系数,控制模型是更激进的赚价差还是更保守的控库存。lambda 太大,模型会变得过于谨慎,成交量会显著下降;lambda 太小,模型赚得多但回撤也大,遇到极端行情容易把利润全部吐回去。

另外一个重要的奖励维度是"连续性惩罚",这是我在学习型市场这个概念启发下加进去的:如果模型在一段时间内完全没有提供报价(完全撤单状态),即使这段时间没有亏损,也应在奖励中给予惩罚。原因是做市商在市场中的核心价值就是持续提供流动性,如果模型学会了"看情况不对就跑",虽然单次表现更好,但长期来看会失去市场参与者对做市报价的信任,也会在考核机制里被扣分。

4.3 训练、回测与过拟合:用"市场切换"思路验证鲁棒性

做市策略的回测有个特殊性:普通的方向性策略可以用历史行情做一次全样本回测来评价,但做市策略是微观结构策略,对行情的采样频率、订单簿重建质量、手续费和滑点假设都极度敏感。同一套策略,在不同的回测环境里可能得出完全相反的结论。

我的习惯是准备三种不同的市场场景切片:平稳区间行情、剧烈趋势行情、高频震荡行情。分别用强化学习训练三套策略副本,再在交叉场景下测试,看模型的泛化能力能到多少。如果某套策略在A段行情训练后,在B段行情下表现严重退化,说明它可能过拟合到了特定行情模式上。更严格的做法是引入"市场状态切换"训练——在训练过程中动态切换不同的行情切片,让模型必须适应环境的变化,这套方法显著提升了实盘样本外的稳定性,但也明显增加了训练时间,大概要付出1.5到2倍的计算成本。

过拟合的问题,不只是模型层面的,还有策略参数层面的。做市策略里有很多微妙的参数,比如最大挂单量、撤单阈值、报价更新时间间隔。这些参数在历史数据上打磨得越精细,在实盘上就越容易失效。我越来越倾向于用较粗的参数网格加上稳健性约束来选参数,而不是用小步长搜索去找"历史最优"——历史最优几乎总是未来表现差的同义词。

4.4 实盘部署中最容易被忽略的五个细节

实盘部署和仿真环境的差距,可以用"魔鬼在细节里"来形容。第一个细节是:延迟不对称。模拟环境里,你发出限价单,系统会立刻告诉你是否成交;实盘里,限价单的成交回报可能因为网络延迟、撮合引擎排队等原因晚到几十或几百毫秒,而你的报价策略在这段时间里是"盲飞"的,模型必须额外设计应对延迟的超时逻辑。

第二个细节是:撤单改价的成本。很多做市策略在理论上假设可以随时撤单重挂,但实盘里频繁撤单会带来不小的压力,且可能触发交易所的撤单限制或费用惩罚。模型需要在奖励函数里加入撤单率约束,才能让学到的行为更贴近实盘的物理限制。

第三个细节是:手续费和返佣的精确建模。做市策略的盈亏对费率极其敏感,微小的费率差异就可能把盈利策略变成亏损策略。我在回测环境里用的费率参数通常比申请到的实际费率还要保守一点,给自己留安全边际。

第四个细节是:订单最小价位变动和最小数量约束。有些模拟环境把价格当作连续变量来优化,到实盘才发现品种的最小变动价位是0.5或0.01,很多精细调整根本无法落地。最早的版本吃了不少这种亏,现在我在搭建模拟环境时就直接加入价位离散化逻辑,在高仿真的基础上再训练。

第五个细节是:监控和风控的独立性问题。做市模型在正常行情下表现良好的时候,很容易让人放松对风险监控的重视。但如果监控阈值设置不当,可能在极端行情里做出"修复性"的操作反而放大了损失。我的做法是把交易策略模块和风险管理模块完全分离,策略只负责报价,风控模块独立判断库存上限、亏损上限和撤单开关。两者的参数不能互相干扰,这是做市系统能否长期稳定运行的底线。

5. 关于AI做市研究边界的最后几个思考

一路从最优报价问题走到学习型市场问题,我最大的感受是:做市研究的迷人之处,不在某个具体算法的精度提升,而在于它逼着研究者不断重新思考"市场是什么"这个元问题。你以为是你在优化一个做市策略,实际上是策略在主动参与和改造市场的微观结构。当你用RL训练出来的做市模型在实盘开始运行之后,它会逐渐影响订单簿的形状、价差的分布、甚至其他参与者对流动性的预期,这些反馈又会进入你的模型训练经验里——这种循环迭代,某种程度上很像一个自组织系统,而不是一个静态的优化器。

做市研究领域的边界也在不断外扩。传统的做市研究关注的是"如何让单一做市商在给定的市场里活得更好",新的研究问题开始关注"多个做市策略共存的生态是不是稳定的""流动性提供者的学习速度会不会导致市场本身变得不稳定""当算法变得越来越适应市场时,市场的演化方向是什么"。这些问题没有标准答案,但它们恰好构成了"学习型市场"这个研究方向的吸引力所在。

我的个人体会是,要在这个领域做出真正有价值的工作,光会调模型是不够的。需要同时理解随机控制理论、市场微观结构、博弈论和工程化的交易系统设计,更重要的是要在实践中保持对市场数据的敏锐度——因为算法学到的规律,终归只是市场无数维度中的一小部分。经验永远提醒我:对回测结果和模拟表现保持恰当怀疑,对实盘观察保持深度投入,这两者之间的平衡,才是AI做市研究走得远的根基。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询