第1章:加密货币做市:CEX与DEX做市差异、AMM机制与做市、无常损失管理、跨交易所套利做市
大家好,我是你们的老朋友。今天咱们聊聊加密货币做市这个领域。说实话,我刚从传统金融转过来时,也被这玩意儿震住了——同样是做市,CEX和DEX完全是两码事。别急,咱们一点点拆开看。
1.1 CEX与DEX做市:根本差异在哪?
先问个问题:你在币安做市,和在Uniswap做市,感觉一样吗?
答案显然是否定的。我个人习惯把CEX(中心化交易所)比作「传统菜市场」——有管理员、有固定摊位、买卖双方都看得见。而DEX(去中心化交易所)更像是「自动售货机」——你投币进去,机器自动给你吐货。
具体差异我列了个表,你一看就明白:
| 维度 | CEX做市 | DEX做市 |
|---|---|---|
| 订单簿 | 有,买卖挂单可见 | 无,依赖AMM自动定价 |
| 资金托管 | 交易所托管 | 用户自托管(智能合约) |
| 做市门槛 | 高(需API、低延迟、大资金) | 低(任何人都可提供流动性) |
| 收益来源 | 买卖价差 + 返佣 | 交易手续费 + 流动性挖矿 |
| 风险类型 | 市场风险、交易所风险 | 无常损失、智能合约风险 |
我在项目中遇到过不少新手,一上来就把CEX那套策略直接搬到DEX上,结果亏得底裤都不剩。为什么?因为DEX的定价机制完全不同——它用的是AMM(自动做市商)。
1.2 AMM机制:自动做市商到底怎么玩?
AMM,说白了就是一条数学曲线。最经典的当属Uniswap的恒定乘积公式:x * y = k。x和y是两种代币的储备量,k是常数。
举个例子:假设池子里有100个ETH和200,000个USDC,那么k = 100 * 200,000 = 20,000,000。这时候你想用1个ETH换USDC,系统会怎么算?
嗯,这里要注意:交易后池子里ETH变成101个,那么USDC必须变成20,000,000 / 101 ≈ 198,019.8个。所以你拿到的USDC是200,000 - 198,019.8 = 1,980.2个。这就是AMM的定价逻辑——滑点天然存在,交易量越大滑点越高。
我刚开始做DEX做市时,总觉得这公式太简单了,能赚钱吗?后来发现,恰恰是这种「简单」带来了巨大的套利空间。你想想看,如果某个池子的价格和外部市场不一致,套利者就会蜂拥而至,直到价格回归平衡。
核心要点:AMM做市本质上是在「被动提供流动性」,你无法像CEX那样主动挂单、撤单。你的仓位会随着交易不断变化——这就是无常损失的根源。
1.3 无常损失管理:做市商的头号敌人
无常损失(Impermanent Loss,简称IL),我愿称之为「做市商的隐形杀手」。它指的是:你存入流动性池子的资产价值,相比你单纯持有这些资产,可能产生的损失。
为什么会这样?因为AMM的定价机制决定了:当价格大幅波动时,你的仓位会被「低卖高买」——价格涨时你卖得少,价格跌时你买得多。结果就是,你持有的资产比例会偏离初始状态。
我给大家一个直观的表格:
| 价格变化幅度 | 无常损失比例 |
|---|---|
| ±10% | 约0.5% |
| ±25% | 约3.0% |
| ±50% | 约11.1% |
| ±100% | 约33.3% |
我曾经踩过一个坑:在2021年5月,我把ETH和USDC按50:50的比例存入Uniswap池子。结果ETH从4000美元跌到2000美元,我心想「没事,手续费赚回来了」。结果一算账——无常损失加上价格下跌,总亏损超过40%。嗯,从那以后我再也不敢忽视IL了。
避坑指南:我曾经以为只要选波动小的币对就能避免IL,结果发现稳定币对(如USDC/USDT)虽然IL极小,但手续费收益也低得可怜。真正的平衡点在于:选择波动适中、交易量大的币对,同时利用流动性挖矿奖励来对冲IL。
1.4 跨交易所套利做市:把价差变成利润
聊完AMM,咱们说说套利。跨交易所套利做市,说白了就是「低买高卖」——在价格低的交易所买入,在价格高的交易所卖出。但这里有个关键点:你要同时做市,才能持续吃到价差。
我常用的策略是这样的:
- 监控价差:用脚本实时监控多个交易所的同一币对价格。当价差超过阈值(比如0.5%)时触发。
- 双边挂单:在价格低的交易所挂买单(做市),在价格高的交易所挂卖单(做市)。
- 对冲风险:如果价差消失或反向,立即撤单并反向操作。
这里有个代码示例,是我个人常用的价差监控逻辑(Python伪代码):
import time
import requests
def get_price(exchange, symbol):
# 假设从交易所API获取价格
response = requests.get(f"https://api.{exchange}.com/price/{symbol}")
return response.json()['price']
def arbitrage_check():
price_binance = get_price('binance', 'ETHUSDT')
price_uniswap = get_price('uniswap', 'ETH/USDC')
spread = abs(price_binance - price_uniswap) / min(price_binance, price_uniswap)
if spread > 0.005: # 0.5%阈值
print(f"套利机会!价差:{spread:.4%}")
# 执行套利逻辑
else:
print(f"无套利机会,当前价差:{spread:.4%}")
while True:
arbitrage_check()
time.sleep(1) # 每秒检查一次
你想想看,这个策略的核心是什么?不是代码多复杂,而是「速度」和「资金利用率」。我在项目中遇到过,有时候价差只存在几秒钟,你慢了就没了。所以很多专业做市商会把服务器放在交易所机房旁边,甚至用FPGA加速。
小技巧:我个人习惯在套利时,把资金分成多份,同时监控多个币对。这样即使某个币对价差消失,其他币对还能补上。另外,别忘了计算手续费和Gas费——有时候看起来有价差,扣完费用反而亏钱。
1.5 知识体系总览
最后,我用一张图把本章的核心逻辑串起来。这张图是我自己画的,你一看就明白CEX做市、DEX做市、AMM、无常损失、套利做市之间的关系:
这张图其实已经说得很清楚了:CEX和DEX是两条不同的路,但最终都指向同一个目标——赚取价差和手续费。AMM是DEX的基石,无常损失是DEX做市必须面对的代价,而跨交易所套利则是把不同市场的价差变成利润的手段。
好了,第一章就聊到这儿。记住一句话:做市不是赌博,是数学和速度的游戏。下一章咱们会深入CEX做市的具体策略——包括订单簿分析、挂单技巧、以及如何用Python搭建一个简单的做市机器人。到时候见。