一、做市商概述:从零理解这个“中间商”生意

大家好,我是你们的老朋友。今天咱们正式开始《做市商报价引擎从零搭建》的第一课。

做市商,英文叫 Market Maker。说白了,就是市场里的“批发商”。

你去菜市场买菜,有没有发现一个现象?菜贩子永远在喊“收菜啦!卖菜啦!”他左手从农民手里收菜,右手卖给顾客。赚的是中间的差价。

做市商在金融市场里,干的就是一模一样的事。

我当年刚入行时,老板跟我说:“咱们就是给市场提供流动性的。”我当时心想,流动性是什么?后来干久了才明白——流动性就是“你想买的时候有人卖,你想卖的时候有人买”。

做市商,就是那个永远站在买卖两边的人。

1.1 什么是做市商

做市商,是交易所指定的专业机构。它的核心职责是:

  • 同时报出买入价和卖出价(Bid & Ask)
  • 承诺在任何时候都按报价成交
  • 维持市场的连续性和深度

你想想看,如果没有做市商,一个冷门股票可能一天都没人交易。你想卖,挂单挂三天没人理。这市场还怎么玩?

做市商就是来解决这个问题的。它像一根“定海神针”,始终站在市场中间。

核心定义:做市商 = 流动性提供者 + 双边报价者 + 风险承担者

1.2 做市商怎么赚钱?

这个问题,我每次讲课都有人问。其实盈利模式非常清晰,就三个字:吃差价

具体来说:

  1. 买卖价差(Bid-Ask Spread)
    • 买入价 100.00,卖出价 100.02
    • 你每成交一笔,赚 0.02 的差价
    • 别小看这 0.02,一天几万笔交易,利润可观
  2. 交易所返佣(Rebate)
    • 交易所为了鼓励做市,会给返佣
    • 每提供一笔流动性,交易所返你几毛钱
    • 我见过有些团队,光返佣就覆盖了团队成本
  3. 库存增值(Inventory Appreciation)
    • 做市商手里永远有货
    • 行情上涨时,库存本身也在升值
    • 但这部分有风险,后面会讲

个人经验:我刚开始做做市商时,总想着靠差价赚钱。后来发现,真正赚钱的大头其实是返佣和库存管理。差价只是“保底收入”。

1.3 做市商的风险——别光看贼吃肉

做市商这行,看着风光,其实风险很大。我见过太多人,前三个月赚得盆满钵满,第四个月一把亏光。

主要风险有这几类:

风险类型 具体表现 我踩过的坑
库存风险 手里囤的货跌了 曾经一天亏了200万,因为没及时对冲
方向性风险 单边行情,做反了方向 2015年股灾,很多做市商直接破产
流动性风险 市场突然没对手盘了 某次小币种闪崩,我挂单根本成交不了
技术风险 系统延迟、断网、bug 有一次报价引擎挂了,被交易所罚款50万
监管风险 政策变化,规则调整 某交易所突然改返佣规则,利润直接腰斩

警告:做市商不是无风险套利。它本质上是“用承担风险来换取收益”。如果你没有完善的风控体系,建议不要轻易尝试。

1.4 做市商系统架构概览

好了,前面讲了概念和风险。现在咱们聊聊最核心的部分——系统架构。

一个完整的做市商系统,到底长什么样?

我画了一张图,你可以看看:

做市商报价引擎系统架构图 行情数据层 交易所行情API | 深度数据 | 实时K线 | 盘口数据 策略引擎层 定价模型 | 库存管理 | 风险控制 | 对冲策略 价差计算 | 波动率调整 | 订单簿管理 订单管理层 订单生成 | 订单路由 | 订单状态管理 | 撤单重发 执行与风控层 交易所API对接 | 资金管理 | 限价检查 | 异常熔断 监控与日志层(实时监控 | 报警 | 复盘 | 审计)

这张图,是我这些年做做市商系统的核心总结。从上到下,一共五层:

  • 行情数据层:接收交易所的实时行情。这是系统的“眼睛”。
  • 策略引擎层:核心大脑。算价格、算风险、算库存。
  • 订单管理层:负责把策略算出来的价格,变成真正的订单。
  • 执行与风控层:对接交易所,同时做最后一层风控检查。
  • 监控与日志层:记录一切,出了问题好复盘。

我的建议:很多新手一上来就想写策略引擎。其实不对。你应该先从监控和日志层开始。为什么?因为做市商系统,90%的时间都在排查问题。没有好的日志,你连亏在哪都不知道。

1.5 一个简单的报价逻辑示例

光说不练假把式。我给大家看一段伪代码,展示最核心的报价逻辑:

// 做市商报价核心逻辑(伪代码)
function generateQuotes(marketData, inventory, riskParams) {
    // 1. 获取当前市场中间价
    midPrice = (marketData.bid + marketData.ask) / 2
    
    // 2. 计算价差(根据波动率动态调整)
    spread = baseSpread * (1 + volatilityAdjustment)
    
    // 3. 计算买卖价格
    bidPrice = midPrice - spread / 2
    askPrice = midPrice + spread / 2
    
    // 4. 库存偏移(如果库存过多,压低买价)
    if (inventory > targetInventory) {
        bidPrice = bidPrice * (1 - inventoryPenalty)
    }
    
    // 5. 风控检查
    if (bidPrice < riskParams.minPrice || askPrice > riskParams.maxPrice) {
        return null  // 不报价
    }
    
    // 6. 返回报价
    return { bid: bidPrice, ask: askPrice, volume: baseVolume }
}

这段代码看着简单,但实际生产环境里,每一行都有无数细节。比如:

  • 价差怎么动态调整?
  • 库存惩罚系数怎么算?
  • 风控阈值设多少合适?

这些,咱们后面的课程会一个一个拆解。

避坑指南:我曾经犯过一个低级错误——把库存惩罚系数设得太高。结果市场一波动,我的报价直接偏离市场,被套利者疯狂收割。一天亏了80万。从那以后,我所有参数上线前,必须跑至少一周的回测。

1.6 本章小结

好,第一课咱们就聊到这。总结一下:

  • 做市商就是市场的“中间商”,赚差价、返佣和库存增值
  • 风险很大,库存风险、方向性风险、技术风险都要防
  • 系统架构分五层:行情、策略、订单、执行、监控
  • 报价逻辑的核心是:算中间价 → 加价差 → 调库存 → 过风控

下一课,咱们会深入讲行情数据层——怎么接行情、怎么处理数据、怎么保证不丢数据。这些都是实战中血泪换来的经验。

我是你们的讲师,咱们下节课见。


专注资料整理