二、订单簿做市:限价单与市价单、买卖价差、订单簿深度
好,咱们进入正题。订单簿做市,说白了就是你在交易所的挂单簿上跟其他交易者「抢饭吃」。我做了这么多年交易,见过太多人一上来就搞什么复杂策略,结果连订单簿都没看明白。今天咱们就把这层窗户纸捅破。
2.1 限价单 vs 市价单:两种武器
先说说最基础的东西。限价单和市价单,就像你手里的两把刀——一把用来防守,一把用来进攻。
限价单(Limit Order):你指定一个价格,只有市场达到这个价格时才会成交。说白了,你是在「等鱼上钩」。我习惯把限价单叫做「被动单」,因为你是在提供流动性,等着别人来吃你的单子。
市价单(Market Order):你不管价格,直接按当前最优价成交。这就像你冲进菜市场喊「给我来一斤猪肉」,摊主给你啥价你就得接着。市价单是「主动单」,你在消耗流动性。
嗯,这里要注意一个关键点:限价单不一定能成交,市价单不一定有好价格。我在项目中遇到过有人挂了个限价单,结果行情直接跳空,单子一直没成交,眼睁睁看着利润变成亏损。所以啊,用限价单的时候,你得想清楚——你是愿意等,还是愿意接受滑点?
核心公式:
限价单风险 = 未成交风险 + 逆向选择风险
市价单风险 = 滑点风险 + 手续费风险
2.2 买卖价差:做市商的饭碗
买卖价差(Bid-Ask Spread),就是买一价和卖一价之间的差值。你想想看,做市商靠什么赚钱?就是靠这个价差。低价买,高价卖,中间的差价就是利润。
举个例子:
| 类型 | 价格 | 数量 |
|---|---|---|
| 卖一(Ask) | 100.50 | 100 ETH |
| 买一(Bid) | 100.30 | 100 ETH |
价差 = 100.50 - 100.30 = 0.20 USDT。如果你同时挂买一和卖一,每成交一个ETH,你就能赚0.20 USDT。当然,这是理想情况。现实中,价差会随着市场波动而变化。
我曾经在ETH剧烈波动时做过一次统计:价差从平时的0.05 USDT瞬间扩大到0.80 USDT。那会儿你要是还按平时的策略挂单,基本就是送钱给别人。所以,动态调整价差是做市的核心能力。
我的经验:
价差不是越小越好。太小的价差会让你暴露在逆向选择风险中——专业交易者会专门盯着你的单子吃。我一般会把价差设在市场平均水平的1.2倍左右,既能保证成交率,又能保护自己。
2.3 订单簿深度:你的护城河
订单簿深度,说白了就是「你的单子能扛住多大的冲击」。深度越厚,市场越稳定。我见过一些新上线的DeFi项目,订单簿薄得像纸一样,一个100 ETH的市价单就能把价格砸穿5%。
深度通常用「市场深度图」来表示。咱们画个简单的SVG图,帮你理解一下:
这张图里,左侧是买盘深度,右侧是卖盘深度。深度越陡峭,说明流动性越差——一点点资金就能把价格推得很远。深度越平缓,说明流动性越好——大资金进出都不会引起太大波动。
2.4 做市策略的核心逻辑
好了,有了这些基础,咱们聊聊怎么做市。我个人习惯把做市策略分成三个层次:
- 基础层:对称挂单——在买一和卖一同时挂单,赚取价差。这是最原始的做法,适合波动小的市场。
- 进阶层:动态调整——根据市场波动率、订单簿不平衡度、库存风险等因素,动态调整挂单价格和数量。
- 高级层:做市+对冲——在多个交易所或衍生品市场同时操作,锁定利润,降低风险。
我曾经在Uniswap V3上做过一个实验:用对称挂单策略在ETH/USDC池子里做市,结果一周下来,无常损失吃掉了我一半的利润。后来我改成动态调整策略,根据池子里的流动性分布来调整挂单区间,收益才稳定下来。
避坑指南:
我曾经犯过一个低级错误——在订单簿深度不足的市场里用大仓位做市。结果一个巨鲸砸盘,我的所有买单都被吃掉,库存直接变成负数。后来我学乖了:做市前先看深度,深度不够就减仓。
2.5 实战中的几个关键指标
做市不是拍脑袋,得有数据支撑。我一般会盯着这几个指标:
- 价差比率 = (卖一价 - 买一价) / 中间价 × 100%。正常市场在0.1%-0.5%之间。
- 订单簿不平衡度 = (买盘总量 - 卖盘总量) / (买盘总量 + 卖盘总量)。正值说明买盘强,负值说明卖盘强。
- 库存风险 = 当前库存 / 目标库存。超过1说明库存过多,需要调整。
- 成交率 = 成交笔数 / 挂单笔数。低于30%说明你的策略太保守了。
举个例子,假设你在ETH/USDT池子里做市:
# 伪代码示例
def calculate_spread(mid_price, volatility):
# 波动率越高,价差越大
base_spread = 0.001 # 0.1%
spread = base_spread * (1 + volatility * 10)
return mid_price * spread
def place_orders(mid_price, spread, inventory_ratio):
bid_price = mid_price - spread / 2
ask_price = mid_price + spread / 2
# 库存过多时,降低买单数量,提高卖单数量
if inventory_ratio > 1.2:
bid_qty = base_qty * 0.5
ask_qty = base_qty * 1.5
elif inventory_ratio < 0.8:
bid_qty = base_qty * 1.5
ask_qty = base_qty * 0.5
else:
bid_qty = base_qty
ask_qty = base_qty
return bid_price, ask_price, bid_qty, ask_qty
这段代码虽然简单,但核心逻辑都在了——根据波动率和库存风险动态调整挂单。你想想看,如果市场突然波动加剧,你还用固定的价差挂单,那不是等着被套吗?
总结一下:
订单簿做市,本质上是一场信息不对称的博弈。你作为做市商,要同时管理好价差、深度、库存三个维度。别想着赚快钱,做市是个苦活,靠的是日积月累的微薄利润。
嗯,今天就先聊到这儿。记住一句话:做市不是赌博,是精算。下一章咱们聊聊更高级的做市策略——如何利用期权和永续合约来对冲风险。
公众号:蓝海资料掘金营,微信deep3321