关于 slippage-modeling
用于估算 Solana DEX 执行成本,并根据 AMM 机制或实时报价建模滑点的技能。它帮助交易者设置交易规模限制、评估盈亏平衡成本,并提供参考资料与脚本。
主要功能
- 01AMM 与 CLMM 滑点建模
- 02基于 Jupiter 报价拟合曲线
- 03估算总执行成本与盈亏平衡点
- 04计算滑点阈值下的最大交易规模
- 05规划分批与 TWAP 执行
适用场景
- 01评估不同交易规模的滑点
- 02将交易成本纳入盈亏平衡分析
- 03为大额订单制定分批方案
安装
复制下面的命令,在终端中运行。
npx skills add https:/ / github.com/ agiprolabs/ claude-trading-skills --skill slippage-modeling安装后在 Claude Code 中输入/slippage-modeling确认已加载。
包含的文件
除 SKILL.md 外,安装时一起下载的参考资料和脚本。
references/cost_model.mdslippage_math.mdscripts/execution_cost.pyslippage_curve.py详细介绍
滑点建模
估算执行成本,根据 AMM 机制和经验报价建立滑点曲线,并确定能将成本控制在可接受阈值内的最佳交易规模。
什么是滑点?
滑点是你决定交易时的预期价格与最终获得的实际成交价格之间的差异。在去中心化交易所中,滑点是确定且可测量的;而在中心化交易所(CEX)中,滑点取决于不可见的订单簿动态。
示例:你预期以 0.001 SOL 的价格买入某个代币。你的交易最终以 0.00105 SOL 成交。这 5% 的差异就是滑点,它会直接减少利润,并提高盈亏平衡阈值。
滑点来源
1. AMM 价格影响(主要来源)
自动做市商使用绑定曲线,在流动性被消耗时推动价格变动。在恒定乘积 AMM(x * y = k)中:
price_impact = Δx / (x + Δx)
其中,x 是输入代币的储备量,Δx 是你的交易规模。对一个储备量为 100 SOL 的池子进行 1 SOL 的交易,会产生约 1% 的价格影响;对储备量为 10 SOL 的池子进行交易,则会产生约 10% 的价格影响。
完整推导和 CLMM 调整请参阅 references/slippage_math.md。
2. DEX 费用
每次兑换都会从交易中收取费用:
| DEX | 费用 | 说明 |
|---|---|---|
| Raydium | 0.25% | 标准 AMM 池 |
| Orca | 0.30% | Whirlpool 集中流动性池 |
| Meteora | 0.1–2.0% | 根据波动率动态调整的费用 |
| PumpFun | 1.0% | 绑定曲线阶段 |
3. 优先级费用
Solana 验证者会优先处理计算单元价格较高的交易。在网络拥堵期间或执行时效性较强的交易时:
- 普通:0.0001 SOL(可忽略不计)
- 竞争性:0.001–0.01 SOL
- 高度拥堵:0.01–0.1 SOL
4. MEV(夹击攻击)
搜索者会检测待处理的兑换交易并对其进行夹击——先于你的交易买入(推高价格),再在交易之后卖出(赚取差价)。MEV 成本取决于:
- 交易规模(越大 = 越有吸引力的目标)
- 代币流动性(流动性不足的池子 = 更容易操纵)
- 滑点容忍度设置(容忍度越高 = 可提取的价值越多)
易受攻击的交易通常会产生 0–200 bps 的 MEV 成本。
5. 过时报价
从收到报价到交易在链上确认之间(Solana 上为 0.4–2 秒),价格可能发生变动。在这段时间内,波动性较大的代币价格可能变动 50–500 bps。
恒定乘积滑点公式
对于储备量为 (x, y)、不变量为 k = x * y 的池子:
用 SOL 买入代币(输入 Δx SOL):
tokens_received = y * Δx / (x + Δx)
effective_price = Δx / tokens_received = (x + Δx) / y
spot_price = x / y
price_impact = effective_price / spot_price - 1 = Δx / (x + Δx)
卖出代币换取 SOL(输入 Δy 个代币):
sol_received = x * Δy / (y + Δy)
effective_price = sol_received / Δy = x / (y + Δy)
spot_price = x / y
price_impact = 1 - effective_price / spot_price = Δy / (y + Δy)
核心要点:滑点随 trade_size / (reserves + trade_size) 增长。小额交易时近似线性增长;当交易规模接近储备量时,滑点会急剧上升。
快速参考表
| 交易规模 / 储备量比 | 近似滑点 |
|---|---|
| 0.1% | 0.1%(1 bp) |
| 1% | 1.0%(100 bps) |
| 5% | 4.8%(476 bps) |
| 10% | 9.1%(909 bps) |
| 25% | 20%(2000 bps) |
| 50% | 33%(3333 bps) |
CLMM 滑点
集中流动性做市商(Orca Whirlpools、Meteora DLMM)会将流动性集中在特定价格区间内:
- 在当前活跃区间内:滑点会因集中系数的作用而低于恒定乘积模型
- 穿越刻度边界:由于下一个刻度的流动性可能较少,会产生额外滑点
- 近似公式:
clmm_slippage ≈ cp_slippage / concentration_factor
管理良好的仓位通常具有 5–50 倍的集中系数。
实测滑点
理论公式假设通过单个池进行路由。实际上,Jupiter 会聚合多个池和路由。实测更准确:
- 在多个交易规模(0.01、0.1、1、5、10、50 SOL)下查询 Jupiter
/quote - 记录每个规模下的输出数量和有效价格
- 计算相对于最小交易(作为现货价格的近似值)的滑点,单位为 bps
- 拟合幂律模型:
slippage_bps = a * trade_size^b
这能反映真实的路由行为、多池拆分和可用流动性。
完整实现请参见 scripts/slippage_curve.py。
总执行成本模型
total_cost_bps = price_impact_bps + fee_bps + priority_fee_bps + mev_risk_bps
total_cost_sol = trade_size_sol * total_cost_bps / 10_000
各项成本的细分和示例请参见 references/cost_model.md。
盈亏平衡分析
对于一轮交易(买入 + 卖出):
roundtrip_cost_bps = entry_impact + exit_impact + 2 * fee_bps + 2 * priority_bps + mev_bps
只有当代币价格朝有利方向变动超过 roundtrip_cost_bps 时,交易才会盈利。对于入场滑点为 200 bps、出场滑点为 200 bps、费用为 50 bps 的代币:
roundtrip = 200 + 200 + 50 = 450 bps = 4.5%
价格至少需要变动 4.5% 才能达到盈亏平衡。
自动成本估算请参见 scripts/execution_cost.py。
最优交易规模
滑点阈值下的最大规模
给定滑点曲线 s(q) = a * q^b,求解最大交易规模:
q_max = (threshold_bps / a) ^ (1/b)
多批次执行
对于大额订单,拆分交易可以降低总滑点,因为每一批交易面对的订单簿都已部分重置(在 CLMM 上),或者套利者可以在各批次之间重新平衡:
n_tranches = ceil(total_size / q_max)
tranche_size = total_size / n_tranches
wait_between = 2-10 seconds (allow arb rebalancing)
TWAP 策略
时间加权平均价格执行:
- 将总订单拆分为大小相等的批次
- 每隔一段时间执行一个批次(例如,每 10 秒)
- 总滑点显著低于单次执行
- 权衡:执行期间价格可能朝不利于你的方向变动
不同代币类别的滑点
| 类别 | 典型池 TVL | 1 SOL 的滑点 | 10 SOL 的滑点 |
|---|---|---|---|
| 蓝筹 | >$10M | <5 bps | <20 bps |
| 中市值 | $100K–$10M | 10–50 bps | 50–500 bps |
| 小市值 | $10K–$100K | 50–200 bps | 500–2000 bps |
| 微型/PumpFun | <$10K | 200–2000 bps | 通常无法交易 |
集成点
- liquidity-analysis:获取池 TVL 和储备数据,用于滑点估算
- position-sizing:使用滑点曲线中的最大交易规模作为仓位规模限制
- jupiter-api:获取实时报价,用于实测滑点
- risk-management:在风险/回报计算中纳入执行成本
- dex-pool-analysis:了解影响滑点的池机制
文件
参考资料
| 文件 | 描述 |
|---|---|
references/slippage_math.md | AMM 滑点推导、CLMM 调整、多池路由数学 |
references/cost_model.md | 总执行成本构成、盈亏平衡分析、成本比较表 |
脚本
| 文件 | 描述 |
|---|---|
scripts/slippage_curve.py | 根据 Jupiter 报价构建实测滑点曲线,拟合幂律模型 |
scripts/execution_cost.py | 估算特定交易的总执行成本和盈亏平衡点 |