第 15 章 · 流动性是什么
市值十亿的币,为什么卖十万就能砸穿?
- 练习的能力
- Financial LiteracyOnchain LiteracyResearch
- 动手
- 挑一个小市值代币,算出它「卖出 5% 流通量会跌多少」,把计算过程写下来。
- AI Lab
- 让 AI 解释市值与流动性的区别,再让它用真实池子数据算一次,检查它有没有把 FDV 当成可兑现价值。
一个现实问题
行情网站上写着:市值 8 亿美元。
你持有这个代币总量的 0.5%。界面很贴心地帮你算好了:你的持仓价值 400 万美元。
你决定退出。点开交易界面,输入全部数量,确认。
交易成功了。到账 61 万美元。
中间那 339 万去哪了?没有人偷走它,没有合约漏洞,没有滑点设置错误。那 339 万从来就没有存在过。
「市值 8 亿」这个数字是这样算出来的:最后一笔成交的价格,乘以流通中的代币总数。它的完整含义是——如果所有人都能按最后一笔成交价卖出,总共值 8 亿。 而「所有人都能按最后一笔成交价卖出」这件事,从来没有成立过。
这一章要回答的问题很具体:在按下卖出之前,怎样知道自己真正能拿回多少?
思想实验
一个小镇,镇上所有房子加起来值一亿。镇上只有一家当铺,当铺的柜台抽屉里,今天放着五十万现金。
现在问:这个镇「值」多少钱?
一亿是对的——有足够的时间,一栋一栋慢慢卖,最终确实能卖到接近一亿。五十万也是对的——如果今天下午所有人同时想换成现金,全镇能拿到的总额就是五十万,多一分都没有。
这两个数相差 200 倍,而且都不算错。一亿回答的是「按最后一笔成交价估算,这些东西值多少」;五十万回答的是「现在立刻,最多能变出多少现金」。
把当铺换成一个链上池子,把镇民换成代币持有者,整件事就搬到链上了。而且链上这个版本更极端,因为规则更死板:
池子另一侧有多少钱,就是这个代币此刻能被兑换出的现金上限。一分不多。
你卖 100 万枚也好,卖 1 亿枚也好,池子里那 50 万美元就是天花板。卖得越多,你越接近这个天花板,但永远够不到——因为按恒定乘积,你要拿走全部 50 万,得投入无穷多的代币。
现在,把它变成一个能算的东西。
你来决定
你持有一个小市值代币,账面价值 40 万美元。你想全部退出。
观察结果
先用手感建立直觉。拖下面这个模拟器:把左边的池子深度拉到最小,把右边的金额拉到最大,看看成交均价偏离了多少。
没有做市商在报价,价格只由 x·y=k 这条曲线决定。池子越浅、买得越多,你付的价格就越偏离市价—— 这笔差价不会凭空消失,它被套利者和 LP 拿走了。
你会看到两件事。一是深度减半,池子价格被推动的幅度不止翻倍——它不是一条直线。二是不管你把金额拉到多大,能从池子里换走的东西始终有一个够不到的上限。
好消息是,这两件事有一个非常干净的形式。对恒定乘积池子来说:
设 x = 池子里的代币储备量(枚数,不是美元)
y = 池子里另一侧的资金量(美元)
你卖入 D 枚代币
令 r = D ÷ x (你的卖单相当于池子储备的多少倍)
卖完之后:
池子价格变成原来的 1 ÷ (1 + r)²
你实际拿到的美元 y × r ÷ (1 + r)两个式子,整章都在用它们。注意第一个式子里的平方——价格跌幅对卖单规模是平方级的敏感。 这就是「不线性」的来源。
把它列成一张表。这张表是纯数学,不会过期:
| 你卖的量相当于池子储备的 | 价格变成原来的 | 也就是跌了 | 你拿到池子资金的 |
|---|---|---|---|
| 10%(r = 0.1) | 82.6% | 17.4% | 9.1% |
| 25%(r = 0.25) | 64.0% | 36.0% | 20.0% |
| 50%(r = 0.5) | 44.4% | 55.6% | 33.3% |
| 100%(r = 1) | 25.0% | 75.0% | 50.0% |
| 200%(r = 2) | 11.1% | 88.9% | 66.7% |
| 500%(r = 5) | 2.8% | 97.2% | 83.3% |
| 1000%(r = 10) | 0.8% | 99.2% | 90.9% |
最后一列是这张表里最重要的一列。看它的上限:无论你卖多少,永远拿不到池子另一侧资金的全部。 卖到池子储备的 10 倍,也只能拿走 90.9%。
现在回到开头那个「市值十亿的币,卖十万就砸穿」。它是怎么发生的:
| 代币 A | 代币 B | |
|---|---|---|
| 流通量 | 10 亿枚 | 10 亿枚 |
| 最后成交价 | 1 美元 | 1 美元 |
| 市值 | 10 亿美元 | 10 亿美元 |
| 池子里的代币储备 | 500 万枚 | 5 万枚 |
| 池子另一侧的资金 | 500 万美元 | 5 万美元 |
| 卖 10 万美元的代币会跌 | 3.9% | 88.9% |
| 卖 5% 流通量能拿回 | 455 万(名义 5000 万) | 4.99 万(名义 5000 万) |
两个代币在行情网站上看起来完全一样。它们唯一的区别是那两行你在行情网站上看不到的数字。
代币 B 就是标题里那个「卖十万砸穿」的例子。它的 10 亿美元市值,是由 5 万美元的池子撑起来的——这不是异常情况,这在新发行的代币里非常常见。
建立模型
把上面的东西固化成一个四步动作。这是这一章唯一需要你带走的东西,以后看任何一个代币都可以跑一遍,三分钟。
- 查池子里的代币储备量 x
- 查流通量 S
- 算 r = 你要卖的量 ÷ x
- 查表得出跌幅与实际回款
逐步说明:
| 步骤 | 具体做什么 | 常见的坑 |
|---|---|---|
| 1. 查 x | 在区块浏览器上打开池子地址,看代币一侧的余额(枚数) | 看成了 TVL。TVL 是两侧加起来的美元数,不是 x |
| 2. 查 S | 流通量,不是总供应量,也不是最大供应量 | 用了总供应量,会高估可卖出的比例 |
| 3. 算 r | 要卖的枚数 ÷ x | 把美元数除以枚数,量纲就错了 |
| 4. 查表 | 上一节那张表,或者直接算 1 ÷ (1+r)² | 以为可以按市价成交 |
两个现实情况:多个池子、多条链时,把每个池子的 x 加起来是一个乐观的近似,真实结果更差;有订单簿时公式不直接适用,但动作一样——看买一档往下累积到某个价位总共有多少钱,那就是你的 y。
最后,把三个经常被混为一谈的数放在一起:
| 数字 | 它回答什么 | 它不回答什么 | 谁在用它 |
|---|---|---|---|
| Market Cap | 按最后成交价估算,流通部分值多少 | 能不能卖出 | 排行榜、媒体、比较大小 |
| FDV | 假设全部代币都流通,按当前价值多少 | 那些币现在根本不存在于市场上 | 项目方宣传、估值对比 |
| Liquidity / Depth | 现在立刻能换出多少钱,代价是多少 | 长期价值 | 真正要进出仓位的人 |
前两个是估算,后一个是事实。第 19 章会专门拆 FDV,这里只需要记住:FDV 是把还没出生的代币也算了价格的数字,它和你能拿回的钱距离最远。
它叫什么
一项资产在不显著改变其价格的前提下,能被买入或卖出的能力。
注意定义里的两个限定:不显著改变价格、能被买卖。缺任何一个,资产就不是流动的。一栋房子有价值但流动性差,一张一百元钞票价值不高但流动性完美。
在某个价格区间内,市场能吸收的成交量。
在 AMM 里,深度就是池子的储备量;在订单簿里,深度是各档挂单量的累积。它是流动性唯一可被直接测量的形式,也是你查完就能算的那个 x。
买一价和卖一价之间的差距。它是「立刻买入再立刻卖出」的即时成本。
价差反映的是小额交易的成本,深度反映的是大额交易的成本。两者可以背离:一个代币的价差可能只有 0.1%,但池子里只有 5 万美元——小单看起来很便宜,大单照样砸穿。只看价差是不够的。
你实际的成交均价与下单时看到的价格之间的偏差。
它和「价格冲击」(Price Impact)是两个数:滑点是你付出的均价偏离了多少,价格冲击是成交之后池子里的新价格偏离了多少。后者总是大于前者,因为你是沿着曲线一路滑上去的,均价落在起点和终点之间。
一段时间内的总成交额。
它常被当作流动性的代理指标,但两者不是一回事:成交量是过去发生的事,深度是此刻存在的东西。 更麻烦的是成交量很容易被制造——同一个人左手倒右手,成交量就上去了,深度一分钱没增加。判断的经验是:拿 24 小时成交量除以池子深度,如果这个比值高得离谱,值得怀疑。
最后成交价 × 流通量。
它是一个估算,用途是横向比较不同资产的规模,不是衡量「能拿回多少钱」。把它当成可兑现金额,是这一章要纠正的首要误解。
动手
挑一个市值在几千万到几亿之间的代币——太大的算不出戏剧性,太小的数据不全。全程不需要任何资金,不需要连接钱包。
找到它的主要池子。 在行情网站的交易对列表里找成交量最大的那个,点进去拿到池子的合约地址。
顺手数一下:它总共有几个池子?分布在几条链上?记下来。
查 x 和 y。 在区块浏览器上打开这个池子地址,看它持有的两种代币余额。
- x = 代币一侧的枚数
- y = 另一侧的美元金额(如果另一侧是 ETH 之类,先按当前价格折成美元)
记下查询时间。这两个数每分钟都在变。
查 S。 在行情网站上找流通量,不是总供应量。两个数往往差很远,用错会让你的结论偏乐观。
算 r,查表。
要卖的枚数 D = S × 5%
r = D ÷ x
价格变成原来的 = 1 ÷ (1 + r)²
实际拿到 = y × r ÷ (1 + r)
名义价值 = D × 当前价格写下完整的计算过程和一句结论。
| 数值 | |
|---|---|
| 池子代币储备 x | |
| 池子资金 y | |
| 流通量 S | |
| 5% 流通量 = D | |
| r = D ÷ x | |
| 价格跌幅 | |
| 名义价值 | |
| 实际拿回 | |
| 实际拿回 ÷ 名义价值 |
再算一遍 1%。 把 5% 换成 1%,看跌幅变成多少。
两种结果都有意义:如果跌幅大致按比例降下来了,说明你的 r 还在小数区间,拆单确实有用;如果跌幅几乎没变(从 99% 降到 89% 这种),说明这个池子相对你的仓位已经完全不够用了,拆单救不了,只能换问题。
最后一行的比值是这个 Lab 的产出。记住它的数量级,以后看到任何一个「市值」,你的第一反应会不一样。
AI Lab
分两步。第一步先让它讲概念,第二步逼它落到真实数据上——出错几乎都发生在第二步。
第一步:
用一个具体的数字例子说明 Market Cap、FDV 和 Liquidity 三者的区别,
并说明为什么前两个不能当作「持有人能拿回的钱」。
第二步:
代币 [名称],池子地址 [地址],链 [链名]。
请:
1. 查出该池子当前的两侧储备量,给出你的数据来源和取数时间
2. 查出该代币的流通量与总供应量,分别列出
3. 计算:卖出流通量的 1%、5%、10% 分别会让池子价格下跌多少,
以及每种情况下实际能拿到多少美元
4. 把「名义持仓价值」和「实际回款」并排列出,算出回款比例
5. 说明你的计算用了什么公式,写出每一步的代入数字
查不到的数据写「未找到」,不要估算,不要用记忆里的旧数据。然后自己按上一个 Lab 的四步重算一遍,逐行对。
这个任务的设计意图是制造一个特定的陷阱:模型非常容易在第 3 步里,用「市值 × 5%」当作可卖出的金额,或者用 FDV 去算持仓价值。这两个错误在语言上完全通顺,只有你手算过才抓得住。
另外注意它的训练数据里有大量「某代币流动性充足」这类表述。追问依据,你会发现依据往往是成交量而不是深度。
AI 说完之后,你必须自己验证
- 它给的池子储备量,你能在区块浏览器上打开那个地址核对到
- 它用的是流通量还是总供应量——这里出错会让结论偏乐观好几倍
- 它有没有在某一步把 FDV 或市值当成「可以卖出的金额」
- 它算的价格跌幅,是否符合平方关系:把卖出量翻倍,跌幅应该明显超过翻倍
- 它说「流动性充足」时,依据是成交量还是深度——如果是成交量,追问它怎么排除刷量
- 它有没有把多条链上的池子直接相加,却没说明这个加法是乐观近似
- 凡是数字,是否标注了取数时间:池子储备分分钟在变
真实案例
在一些交易场所,同一批资金反复自成交,可以把 24 小时成交量做到一个很大的数字,而池子深度毫无变化。
分辨方法不复杂:拿成交量除以深度。一个健康的市场,这个比值通常在个位数到几十之间;如果一个池子里只有几万美元,却报出几百万的日成交量,那么这个成交量在讲一个与你无关的故事。
成交量是宣传材料,深度是你的退出通道。
一些代币的深度并非由分散的 LP 提供,而是由项目方与一两家做市机构按协议提供。协议到期、合作终止或机构自身出问题时,深度会在很短时间内消失。
价格在撤离之前可能毫无异常——因为深度消失本身不产生成交,它只是让下一笔成交变得昂贵。 这是为什么「查深度」必须定期重做,而不是建仓时做一次。
市场剧烈下跌期间,大量 LP 和做市商同时撤出或缩窄报价,深度在几小时内大幅收缩。于是形成一个恶性组合:想卖的人变多,能接的钱变少。 平时算出来能承受 5% 跌幅的卖单,在那一天可能造成 30%。
对研究的含义是:用平静时期的深度去估算压力时期的退出成本,会系统性低估。 保守的做法是把算出的深度打一个折扣,再看结论还成不成立。
一种反复出现的结构:项目方只释放很小比例的代币进入流通,并只为其中一部分提供池子。价格由这个小池子决定,而市值和 FDV 按全部供应量计算。
结果是一个几十万美元的池子,撑起一个上亿美元的估值数字。这个数字本身是算术上正确的,问题在于它被当成了别的东西用。
第 19、20 章会从代币供应的角度再看一次同一个结构。
改一个变量
表面上深度变成五倍,实际上要打折扣。
原因有三:你的资产分布在某一条链上,跨过去要时间和成本;每一条链上的卖出都需要单独发交易;而且你在一条链上砸下去之后,套利者会把其他链的价格也拉平——你等于在跟自己的下一笔单竞争。
更实际的算法是:分别算每条链上你能拿回多少,加总,再打一个折。分散的流动性是流动性,但不是相加的流动性。
市值和 FDV 之间会差出 30 倍以上。
真正的风险不在今天,而在解锁表上:那 97% 会在未来某些日期进入流通。用今天这个小池子去承接未来几十倍的供应量,是算不过来的。
判断动作:把每次解锁的数量除以当前池子储备 x,用那张表读一次跌幅。第 19 章会把这件事做成一条完整的解锁曲线。
深度上去了,你的退出成本立刻下降。这对你是好事。
但要问一句:这笔钱是谁的,为什么愿意放进来。 如果它是靠补贴吸引来的,那么它会在补贴停止时离开;如果它是项目方自己放的,那么它可以被项目方在任何一刻取走(除非被锁定,而是否锁定你可以去链上查)。
别人提供的深度,随时可能被别人收回。 第 17 章会讲补贴的寿命怎么算。
单笔的价格冲击被大幅摊薄,这是真实的改善。
但引入了两个新东西:一是时间暴露,100 小时里价格自己会动,而且如果链上能看到你在持续出货,别人会提前行动;二是套利者需要真的把池子补回来,而补回来的资金来自外部愿意在这个价格接货的人——如果外面没有买盘,池子被补回的速度会一次比一次慢。
拆单解决的是「冲击成本」,它不能凭空创造买家。这就是为什么正确的动作是在建仓时就算一遍,而不是在退出时。
带走的问题
这一章把这个问题变成了可执行的:谁提供流动性、提供了多少、在什么条件下会撤走。 前两个去链上查,第三个去看补贴与锁仓安排。三个都答不上来,这个代币的市值对你就没有意义。
深度不足时,风险由最后想退出的人承担。这是一个排队结构:前面的人按较好的价格走掉,后面的人按越来越差的价格走。看懂这一点,你就知道为什么「流动性风险」永远在事后才被所有人同时意识到。
如果代币价格归零,池子里另一侧的资金会被换代币的人全部取走,LP 手上只剩下归零的那一种。流动性会随着价格一起消失,而且消失得更快。 这两件事是同一个循环里的两个环节。
补贴停止之后,LP 会撤走,深度下降,滑点上升,交易者也会走。流动性是最先被补贴吸引来、也最先离开的东西。 评估任何一个依赖流动性的产品,这一条都要单独问一遍。
本章自测
Market Cap 是乘出来的估算:最后一笔成交价乘以流通量,它假设所有人都能按那个价格卖出。
Liquidity 是查出来的事实:此刻池子里(或订单簿上)真实存在的、能接住你的钱。
一句话:市值是别人给你的估价,流动性是你自己能拿回的钱。 前者写在行情网站上,后者要你去链上查。
因为恒定乘积下,价格是两侧储备量的比值,而卖入会同时让一侧变大、另一侧变小——分子分母朝相反方向走。
结果是价格变成原来的 1 ÷ (1+r)²,那个平方就是非线性的来源。
一个直觉版本:卖出第一批的时候,池子还很满,价格没怎么动;卖到后面,池子里代币越来越多、钱越来越少,每多卖一枚,剩下的钱就更难挤出来。它不是一条直线,是一条越来越陡的滑梯。
至少说明这两个数需要解释。比值是 250,意味着池子里每一美元一天要周转 250 次。
三种可能:第一,存在大量自成交或机器人刷量;第二,深度主要不在这个池子里,而在别处(其他链、中心化交易所的订单簿),你只查了一部分;第三,确实有极高频的套利活动在这个池子上跑。
无论哪一种,结论都一样:不能用成交量估算你的退出成本。 去查深度,按四步动作算一遍。
不能,只能说明小额交易便宜。
价差衡量的是最靠近市价的那一层,深度衡量的是往下累积的总量。两者完全可以背离:报价可以很紧,但每档只有几千美元。
做市商在压力时期的典型反应恰恰是保持价差、撤掉数量——报价看上去还在,实际能成交的量已经没了。所以判断的顺序应该是:先看深度,再看价差。
没有标准答案,但至少要完成这几件事:
- 列出全部池子,包括各条链,分别记下 x 和 y,记下取数时间。
- 跑一遍四步动作,算出卖 1%、5%、10% 流通量分别跌多少、能拿回多少。
- 算成交量与深度的比值,异常高就去核对是否存在刷量。
- 查深度的来源:是分散的 LP,还是项目方或做市机构?有没有锁定?
- 查未来解锁:接下来 12 个月新增的流通量,相当于当前池子储备的多少倍。
- 打折:把算出的深度打个折,重看结论——因为你真正需要退出的那天,深度通常比今天差。
最后一步最重要:说清楚你在哪里不确定。 一个诚实的「我查不到这条链上的池子数据」,比一个编出来的结论有用得多。
一句话带走
Market Cap 是估算,Liquidity 才是你真正能拿回来的钱。