一、做市商概述:从零理解这个“中间商”生意
大家好,我是你们的老朋友。今天咱们正式开始《做市商报价引擎从零搭建》的第一课。
做市商,英文叫 Market Maker。说白了,就是市场里的“批发商”。
你去菜市场买菜,有没有发现一个现象?菜贩子永远在喊“收菜啦!卖菜啦!”他左手从农民手里收菜,右手卖给顾客。赚的是中间的差价。
做市商在金融市场里,干的就是一模一样的事。
我当年刚入行时,老板跟我说:“咱们就是给市场提供流动性的。”我当时心想,流动性是什么?后来干久了才明白——流动性就是“你想买的时候有人卖,你想卖的时候有人买”。
做市商,就是那个永远站在买卖两边的人。
1.1 什么是做市商
做市商,是交易所指定的专业机构。它的核心职责是:
- 同时报出买入价和卖出价(Bid & Ask)
- 承诺在任何时候都按报价成交
- 维持市场的连续性和深度
你想想看,如果没有做市商,一个冷门股票可能一天都没人交易。你想卖,挂单挂三天没人理。这市场还怎么玩?
做市商就是来解决这个问题的。它像一根“定海神针”,始终站在市场中间。
核心定义:做市商 = 流动性提供者 + 双边报价者 + 风险承担者
1.2 做市商怎么赚钱?
这个问题,我每次讲课都有人问。其实盈利模式非常清晰,就三个字:吃差价。
具体来说:
- 买卖价差(Bid-Ask Spread)
- 买入价 100.00,卖出价 100.02
- 你每成交一笔,赚 0.02 的差价
- 别小看这 0.02,一天几万笔交易,利润可观
- 交易所返佣(Rebate)
- 交易所为了鼓励做市,会给返佣
- 每提供一笔流动性,交易所返你几毛钱
- 我见过有些团队,光返佣就覆盖了团队成本
- 库存增值(Inventory Appreciation)
- 做市商手里永远有货
- 行情上涨时,库存本身也在升值
- 但这部分有风险,后面会讲
个人经验:我刚开始做做市商时,总想着靠差价赚钱。后来发现,真正赚钱的大头其实是返佣和库存管理。差价只是“保底收入”。
1.3 做市商的风险——别光看贼吃肉
做市商这行,看着风光,其实风险很大。我见过太多人,前三个月赚得盆满钵满,第四个月一把亏光。
主要风险有这几类:
| 风险类型 | 具体表现 | 我踩过的坑 |
|---|---|---|
| 库存风险 | 手里囤的货跌了 | 曾经一天亏了200万,因为没及时对冲 |
| 方向性风险 | 单边行情,做反了方向 | 2015年股灾,很多做市商直接破产 |
| 流动性风险 | 市场突然没对手盘了 | 某次小币种闪崩,我挂单根本成交不了 |
| 技术风险 | 系统延迟、断网、bug | 有一次报价引擎挂了,被交易所罚款50万 |
| 监管风险 | 政策变化,规则调整 | 某交易所突然改返佣规则,利润直接腰斩 |
警告:做市商不是无风险套利。它本质上是“用承担风险来换取收益”。如果你没有完善的风控体系,建议不要轻易尝试。
1.4 做市商系统架构概览
好了,前面讲了概念和风险。现在咱们聊聊最核心的部分——系统架构。
一个完整的做市商系统,到底长什么样?
我画了一张图,你可以看看:
这张图,是我这些年做做市商系统的核心总结。从上到下,一共五层:
- 行情数据层:接收交易所的实时行情。这是系统的“眼睛”。
- 策略引擎层:核心大脑。算价格、算风险、算库存。
- 订单管理层:负责把策略算出来的价格,变成真正的订单。
- 执行与风控层:对接交易所,同时做最后一层风控检查。
- 监控与日志层:记录一切,出了问题好复盘。
我的建议:很多新手一上来就想写策略引擎。其实不对。你应该先从监控和日志层开始。为什么?因为做市商系统,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 本章小结
好,第一课咱们就聊到这。总结一下:
- 做市商就是市场的“中间商”,赚差价、返佣和库存增值
- 风险很大,库存风险、方向性风险、技术风险都要防
- 系统架构分五层:行情、策略、订单、执行、监控
- 报价逻辑的核心是:算中间价 → 加价差 → 调库存 → 过风控
下一课,咱们会深入讲行情数据层——怎么接行情、怎么处理数据、怎么保证不丢数据。这些都是实战中血泪换来的经验。
我是你们的讲师,咱们下节课见。