一、做市商系统概述

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 系统整体架构概览

好了,我们来看看一个典型的做市商系统长什么样。我画了一张图,你感受一下:

做市商系统整体架构 行情层 (Market Data) 交易所行情API → 行情解码 → 订单簿重建 → 实时推送 策略层 (Strategy Engine) 定价模型 → 风险计算 → 订单生成 → 库存管理 执行层 (Execution Layer) 订单管理 → 路由分发 → 撤单重发 → 成交回报 风控层 (Risk Control) 资金监控 → 仓位限制 → 异常检测 → 熔断机制 数据流方向

这张图我画了四个层次:

  1. 行情层:负责接入交易所行情,解码并重建订单簿。我建议用C++写,因为行情数据量大、频率高。
  2. 策略层:核心逻辑所在。根据行情计算报价,生成买卖指令。Python写原型,Go上生产。
  3. 执行层:负责把策略生成的订单发到交易所,处理成交回报。延迟敏感,C++或Go都行。
  4. 风控层:贯穿始终。检查资金、仓位、频率,防止「手滑」造成巨额亏损。

重要提醒:风控层一定要独立于策略层。我见过一个团队,风控和策略写在一起,结果策略出bug,风控也跟着失效——一天亏了200万。从那以后,我坚持风控系统必须「物理隔离」。

嗯,这就是做市商系统的整体轮廓。说白了,就是「行情进来,策略计算,订单出去,风控兜底」。每个环节都有坑,后面我会一一展开讲。

一个小建议:刚开始搭建时,别追求完美。先用Python把整个流程跑通,再逐步用C++/Go替换性能瓶颈。我当年就是太追求「一步到位」,结果花了三个月还没上线。

专注资料整理