一、做市商系统概述

大家好,我是这次课程的主讲人。在量化交易这个圈子里摸爬滚打了十几年,我见过太多系统因为高可用设计不到位,在行情剧烈波动时直接「躺平」——那场面,真是惨不忍睹。今天咱们就来聊聊做市商系统,以及为什么高可用对它来说就是命根子。

1.1 什么是做市商系统

做市商系统,说白了就是一套自动报价和成交的软件。它的核心任务很简单:同时挂出买单和卖单,赚取中间的价差。

你可能会问:「这不就是低买高卖吗?」嗯,道理是这么个道理,但实际操作起来,复杂度完全不在一个量级。

我举个例子。假设你在交易ETH/USDT这个币对。做市商系统需要实时监控盘口深度、计算合理价格、动态调整报价、管理库存风险……所有这些操作,必须在毫秒级完成。手动交易?想都别想。

核心定义:做市商系统是一套自动化交易软件,它通过持续提供双边报价(买入价和卖出价),为市场提供流动性,并从买卖价差中获利。

1.2 做市商的核心业务逻辑

做市商的业务逻辑,其实可以拆解成几个关键环节。我在项目中遇到过不少团队,连这几个环节都没搞清楚就开始写代码,结果可想而知。

1.2.1 报价生成

这是最基础的一步。系统需要根据市场行情,计算出合理的买入价和卖出价。通常我们会参考以下几个因素:

  • 中间价(Mid Price):通常是买一价和卖一价的均值,或者从多个交易所加权计算
  • 价差(Spread):根据市场波动率、库存情况动态调整
  • 库存偏移(Inventory Skew):如果手里某个币太多,报价就要偏向卖出

我曾经接手过一个项目,他们的报价逻辑写死了价差,结果市场一波动,直接亏掉了一周的利润。嗯,从那以后我养成了一个习惯:所有参数必须可动态配置。

1.2.2 订单管理

报价生成之后,需要把订单发到交易所。这里涉及几个关键操作:

  1. 挂单:把买单和卖单同时挂到盘口
  2. 撤单:当价格变化或需要调整时,撤销旧订单
  3. 重挂:根据新价格重新挂单
  4. 成交处理:订单成交后,更新库存和盈亏

你想想看,如果撤单延迟了100毫秒,而行情在这100毫秒内剧烈波动,会发生什么?对,你会以不利价格成交。这就是为什么低延迟在做市商系统里如此重要。

1.2.3 风险管理

做市商不是印钞机,风险控制不到位,分分钟爆仓。我个人习惯把风险分为三类:

风险类型 说明 常见应对措施
市场风险 价格不利波动导致亏损 动态调整价差、设置止损
库存风险 某个币种持仓过大 库存偏移算法、对冲交易
操作风险 系统故障、网络延迟 冗余设计、熔断机制

注意:很多新手做市商只关注市场风险,忽略了操作风险。我见过最惨的一次,交易所API升级,他们的系统没做兼容处理,结果所有订单都卡住了,库存敞口暴露了整整30分钟……

1.3 高可用的重要性

做市商系统对高可用的要求,怎么说呢,比银行系统还苛刻。为什么?因为做市商是「7×24小时」运行的,而且每一秒都在产生盈亏。

我给大家算一笔账。假设你的做市商系统每天交易量是1000万U,利润率是0.01%。那么:

  • 每秒钟的预期利润大约是:1000万 × 0.01% ÷ 86400 ≈ 0.0116 U
  • 看起来不多对吧?但如果你停机1小时,损失就是:0.0116 × 3600 ≈ 41.76 U
  • 更重要的是,停机期间可能错过行情,实际损失远不止这个数

这还只是直接损失。间接损失更可怕:

  • 信誉损失:交易所可能降低你的做市商等级
  • 机会成本:错过一波大行情,可能损失几天的利润
  • 合规风险:某些交易所对做市商的在线率有硬性要求

我的经验:做市商系统的高可用设计,不能只盯着「不宕机」这一个指标。还要考虑「降级运行」——也就是系统部分功能失效时,还能不能继续报价。我曾经设计过一个方案,即使数据库挂了,系统也能基于本地缓存继续运行30分钟。这30分钟,可能就是救命的时间。

1.4 做市商系统的整体架构

说了这么多,咱们来看看做市商系统的整体架构长什么样。下面这张图是我根据多年经验总结的,你可以把它当作一个参考模板。

做市商系统核心架构图 行情数据层 交易所API | 行情聚合 | 数据清洗 | 延迟监控 策略引擎层 报价生成 | 价差管理 | 库存控制 | 风险计算 订单管理层 挂单 | 撤单 | 重挂 | 成交处理 | 订单状态机 风控与监控层 实时风控 | 熔断机制 | 告警系统 | 日志审计 高可用保障层 数据流方向

这张图展示的是做市商系统的核心分层。从上到下依次是:行情数据层、策略引擎层、订单管理层、风控与监控层。每一层都有自己独立的高可用设计,后面几章我会详细展开。

你可能会注意到,左侧有一个「高可用保障层」。这不是一个独立的模块,而是贯穿所有层的设计理念。包括:

  • 冗余设计:关键组件至少双活
  • 故障转移:主节点挂了,备用节点秒级接管
  • 数据一致性:即使发生故障,订单状态也不能乱
  • 降级策略:部分功能失效时,系统还能继续运行

一句话总结:做市商系统的高可用,不是「要不要」的问题,而是「必须做到什么程度」的问题。我见过太多团队在这个问题上栽跟头,希望你能从这门课里学到真正的实战经验。

好了,这一章就到这里。做市商系统的概念和核心逻辑,咱们已经讲清楚了。下一章我会深入讲解高可用架构设计的具体方案,包括如何做冗余、如何做故障转移、如何保证数据一致性——这些都是我在实战中踩过坑之后总结出来的经验。


专注资料整理