一、做市系统概述
1.1 什么是做市系统
做市系统,说白了就是一套自动报价的机器人。
它的核心任务很简单:同时挂买单和卖单,赚取差价。你想想看,传统交易中你得等对手盘出现,做市商不一样——它主动提供流动性。我在项目中遇到过不少新手,以为做市就是高频交易,其实两者差别挺大的。
做市系统的本质是「双边报价」。它会在买一价挂单,也在卖一价挂单。只要市场波动不大,两边都能成交,赚的就是那个微小的价差。嗯,这里要注意:价差通常只有0.1%甚至更小,靠的是量取胜。
核心特征:
- 同时提供买入和卖出报价
- 报价频率极高,通常每秒更新数十次
- 库存管理是命门,做不好会亏大钱
1.2 做市策略的核心逻辑
做市策略听起来玄乎,其实就三个核心问题:
- 报什么价?——定价模型
- 报多少量?——仓位管理
- 什么时候撤?——风险控制
我个人习惯把做市策略分成两类:
| 策略类型 | 核心逻辑 | 适用场景 |
|---|---|---|
| 被动做市 | 基于订单簿深度报价 | 高流动性市场 |
| 主动做市 | 结合预测模型调整报价 | 波动较大市场 |
举个例子。被动做市就像摆地摊——你看着周围的价格,稍微低一点买、高一点卖。主动做市则像天气预报——你得预测接下来价格会涨还是会跌,提前调整报价位置。
我曾经踩过一个坑:在波动剧烈的市场里用纯被动策略,结果库存被单向吃光,亏了不少。后来我学乖了,必须加上动态调整机制。
1.3 做市系统的技术栈概览
做市系统对技术要求很高。为什么?因为延迟就是金钱。你报价慢了0.1秒,可能就被别人抢了先机。
我整理了一个典型的技术栈:
| 层级 | 技术选型 | 我的建议 |
|---|---|---|
| 编程语言 | C++ / Rust / Java | 核心引擎用C++,辅助用Python |
| 网络框架 | ZeroMQ / Aeron / 自研UDP | 别用HTTP,延迟太高 |
| 数据库 | Redis / ClickHouse / InfluxDB | 实时用Redis,分析用ClickHouse |
| 硬件 | FPGA / 低延迟网卡 / 托管服务器 | 资金充裕就上FPGA |
这里有个关键点:做市系统对延迟极其敏感。我见过一个团队用Python做核心引擎,结果每次报价都要等几十毫秒——这在做市领域基本等于自杀。
避坑指南:我曾经以为用Kafka做消息队列没问题,结果发现Kafka的批处理机制会导致报价延迟抖动。后来换成了ZeroMQ的点对点模式,延迟稳定在微秒级。
做市系统的架构通常分三层:
- 数据层:行情接入、订单簿维护、历史数据存储
- 策略层:定价引擎、风险管理、仓位计算
- 执行层:订单管理、交易所接口、延迟监控
下面这张图展示了做市系统的核心流程:
嗯,这张图基本概括了做市系统的全貌。数据从交易所进来,经过策略层计算,再到执行层下单,同时监控系统全程跟踪。反馈回路是很多新手容易忽略的——没有反馈,策略就是瞎子。
重要提醒:做市系统不是「搭好就能赚钱」的。我见过太多团队把精力花在策略上,忽略了基础设施。结果行情一波动,系统直接崩了。记住:稳定比聪明更重要。
最后说一句:做市系统的技术栈选择,取决于你的交易规模和延迟要求。小团队用Python+Redis也能跑,但要做到专业级别,C++和FPGA几乎是标配。我个人建议从简单开始,逐步迭代——别一开始就想搞个大而全的系统。