一、做市商系统概述
1.1 什么是做市商
做市商,说白了就是「双边报价商」。
我在2015年刚接触这个领域时,觉得做市商就是个中间商——你买我卖,赚个差价。后来才发现,事情远没那么简单。
做市商的核心职责是:同时挂出买单和卖单,为市场提供流动性。比如在比特币现货市场,我挂一个100美金的买单,同时挂一个100.5美金的卖单。有人想卖,我就接;有人想买,我就给。
你想想看,如果没有做市商,一个散户想卖100个比特币,可能等半天都找不到买家。做市商的存在,让市场「活」了起来。
关键点:做市商不是投机者,而是流动性的提供者。我们赚的不是方向性收益,而是「服务费」。
1.2 做市商的核心盈利模式
很多人以为做市商就是吃价差。嗯,这只是最基础的部分。我拆解一下,其实有四种主要盈利方式:
| 盈利模式 | 说明 | 我的经验 |
|---|---|---|
| 买卖价差 | 低买高卖,赚取bid-ask spread | 在流动性好的市场,价差可能只有0.01%,但量大了也很可观 |
| 手续费返佣 | 交易所给做市商的手续费折扣甚至返现 | 我曾经靠返佣覆盖了团队一半的服务器成本 |
| 资金费率套利 | 永续合约市场的资金费率波动 | 这个需要实时监控,我踩过坑——资金费率突然反转,亏了一晚上 |
| 库存管理收益 | 通过动态调整库存,减少方向性风险 | 说白了就是别让自己「死扛」 |
这里我要强调一点:做市商不是赌方向。我见过太多人把做市商当趋势交易做,结果爆仓了。做市商的核心是「赚概率的钱」,不是「赚预测的钱」。
避坑指南:我曾经在2018年尝试用趋势策略做市,结果市场突然反转,库存亏损远大于价差收益。从那以后,我坚持「库存中性」原则——任何时候,净头寸不能超过总资金的5%。
1.3 技术栈选型:C++ / Python / Go
这个问题我经常被问到。说实话,没有银弹。我根据实际项目经验,给你一个参考:
| 语言 | 适用场景 | 我的建议 |
|---|---|---|
| C++ | 高频核心引擎、低延迟交易 | 如果你做纳秒级交易,C++是唯一选择。但开发成本高,调试起来想砸键盘 |
| Python | 策略研究、回测、数据分析 | 我80%的策略原型都是用Python写的。快,灵活,但别用它做实盘交易 |
| Go | 中间件、API网关、风控系统 | 我个人最喜欢Go。并发好,部署简单,性能也够用 |
为什么会这样?我解释一下:
- C++:适合做「最后一公里」。比如订单簿管理、行情解码、交易指令发送。延迟可以控制在微秒级。
- Python:适合做「大脑」。策略逻辑、数据分析、可视化。但Python的GIL是硬伤,别用它做高频。
- Go:适合做「骨架」。连接各个模块,处理网络请求,做风控检查。我团队现在的主力语言就是Go。
我的经验:一个成熟的做市商系统,通常是「C++ + Go + Python」三件套。C++做底层,Go做中间层,Python做策略层。各司其职,互不干扰。
1.4 系统整体架构概览
好了,我们来看看一个典型的做市商系统长什么样。我画了一张图,你感受一下:
这张图我画了四个层次:
- 行情层:负责接入交易所行情,解码并重建订单簿。我建议用C++写,因为行情数据量大、频率高。
- 策略层:核心逻辑所在。根据行情计算报价,生成买卖指令。Python写原型,Go上生产。
- 执行层:负责把策略生成的订单发到交易所,处理成交回报。延迟敏感,C++或Go都行。
- 风控层:贯穿始终。检查资金、仓位、频率,防止「手滑」造成巨额亏损。
重要提醒:风控层一定要独立于策略层。我见过一个团队,风控和策略写在一起,结果策略出bug,风控也跟着失效——一天亏了200万。从那以后,我坚持风控系统必须「物理隔离」。
嗯,这就是做市商系统的整体轮廓。说白了,就是「行情进来,策略计算,订单出去,风控兜底」。每个环节都有坑,后面我会一一展开讲。
一个小建议:刚开始搭建时,别追求完美。先用Python把整个流程跑通,再逐步用C++/Go替换性能瓶颈。我当年就是太追求「一步到位」,结果花了三个月还没上线。