AMM 原理:自动做市商的核心公式
做市商这个行当,说白了就是「提供流动性,赚取手续费」。但传统做市商那套东西——挂单、撤单、对冲——门槛太高了。直到自动做市商(AMM)出现,才真正把做市这件事「平民化」了。
我个人最早接触 AMM 是在 2019 年,当时看到 Uniswap 的代码,第一反应是:就这么简单? 一个公式 x*y=k,撑起了几百亿美金的流动性市场。嗯,今天我们就来拆解这个公式,以及它的几个变种。
一、恒定乘积公式:x*y=k
这是 AMM 最核心的公式,没有之一。Uniswap、PancakeSwap 都在用。
公式长这样:
x * y = k
其中:
- x = 代币 A 的储备量
- y = 代币 B 的储备量
- k = 常数(交易前后保持不变)
你想想看,这个公式意味着什么?
意味着无论你怎么交易,池子里两个代币的乘积永远不变。
数学推导:为什么是 x*y=k?
假设池子里有 100 个 ETH 和 200,000 个 USDC。
那么 k = 100 * 200,000 = 20,000,000。
现在你想用 ETH 换 USDC。你往池子里加了 1 个 ETH。
新的 ETH 数量 = 101。
为了保持 k 不变:
101 * y_new = 20,000,000
y_new = 20,000,000 / 101 ≈ 198,019.8
所以你能拿到的 USDC = 200,000 - 198,019.8 = 1,980.2 USDC。
我刚开始做这个计算时,总觉得哪里不对——为什么不是 1:2000 的比例?
后来才明白:滑点。你交易量越大,拿到的价格越差。这就是 x*y=k 的「自动定价」机制。
图形理解:双曲线
x*y=k 在坐标系里是一条双曲线。我画个图帮你理解:
看到没?
P1 到 P2 的移动,就是一次交易。曲线越陡,说明池子深度越浅,滑点越大。
二、恒定和公式:x+y=k
这个公式简单粗暴:两种代币的总和保持不变。
x + y = k
举个例子:
池子里有 100 ETH + 200,000 USDC,k = 200,100。
你拿 1 ETH 换 USDC,池子变成 101 ETH + 199,999 USDC。
你拿到 1 USDC?不对,你拿到的是 1 USDC。
等等,这价格是 1:1?
没错。恒定和公式只适用于稳定币兑换,比如 USDC/USDT、DAI/USDC。
我见过一些项目方想用这个公式做非稳定币交易,结果亏得底裤都不剩。为什么?
因为一旦市场波动,套利者会瞬间把池子搬空。
三、混合函数:Curve 的 Stableswap
Curve 的创始人 Michael Egorov 是个天才。他把恒定乘积和恒定和混合在一起,搞出了 Stableswap 公式。
公式长这样(简化版):
x + y + (x*y)/D = k
其中 D 是池子的总流动性参数。
这个公式的精妙之处在于:
- 当价格接近 1:1 时,表现像恒定和(滑点极低)
- 当价格偏离时,表现像恒定乘积(防止池子被搬空)
我曾在 Curve 的 3pool(DAI/USDC/USDT)里做过流动性提供者。说实话,体验比 Uniswap 好太多——大额交易滑点几乎为零,手续费还稳定。
四、三种公式对比
| 公式类型 | 表达式 | 适用场景 | 滑点特征 | 典型项目 |
|---|---|---|---|---|
| 恒定乘积 | x*y=k | 非稳定币对 | 随交易量增大而增大 | Uniswap, PancakeSwap |
| 恒定和 | x+y=k | 稳定币对 | 几乎为零 | 早期稳定币池 |
| 混合函数 | x+y+(x*y)/D=k | 稳定币/合成资产 | 低滑点+防搬空 | Curve, Saddle |
五、实际做市中的公式应用
光知道公式不够,你得会用。我分享几个实战技巧:
- 估算无常损失
用 x*y=k 可以算出:如果代币价格翻倍,你的 LP 持仓会损失多少。公式推导略复杂,但记住结论:价格波动越大,无常损失越大。 - 选择最优池子
我一般用这个标准:
- 稳定币对:选 Curve(混合函数)
- 主流币对:选 Uniswap V3(集中流动性)
- 长尾资产:选 Uniswap V2(x*y=k) - 监控 k 值变化
如果 k 值突然下降,说明有人撤走了流动性。这时候要警惕——可能是大户跑路,也可能是池子被攻击。
六、总结
AMM 的核心公式,说白了就三个:
- x*y=k:通用型,适合大多数场景
- x+y=k:稳定币专用,但风险高
- 混合函数:Curve 的杀手锏,稳定币做市首选
我个人觉得,理解这些公式最好的方式就是动手算一遍。拿个 Excel,模拟一下不同交易量下的价格变化,比看十篇文章都管用。
嗯,今天就聊到这。记住:公式是死的,市场是活的。做市商的核心不是背公式,而是理解公式背后的博弈逻辑。