mcpField
D
dex-pool-analysis

dex-pool-analysis

github.com/agiprolabs数据与数据库456444 次安装8 周前更新
代码仓库

关于 dex-pool-analysis

dex-pool-analysis 是面向 Solana DEX 研究者和交易者的技能,比较多种 AMM 池的机制、费用与风险。它还提供池健康度评估和交易执行选池方法。

主要功能

  1. 01比较 Solana AMM 池类型与费用
  2. 02评估 TVL、交易量和费用 APR
  3. 03识别新池及流动性风险信号
  4. 04按执行质量排列交易池
  5. 05监控池指标与流动性事件

适用场景

  1. 01比较 Raydium、Orca、Meteora 和 PumpSwap 池
  2. 02检查代币池的健康度和风险
  3. 03为交易规模选择执行池
  4. 04跟踪池的流动性变化

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/agiprolabs/claude-trading-skills --skill dex-pool-analysis

安装后在 Claude Code 中输入/dex-pool-analysis确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
pool_analysis_guide.md
pool_mechanics.md
scripts/
analyze_pools.py
pool_monitor.py

详细介绍

DEX 池分析 — Solana AMM 池机制与比较

Solana 的 DEX 生态涵盖多种 AMM 设计:恒定乘积池(Raydium V4)、集中流动性(Raydium CLMM、Orca Whirlpool)和基于 bin 的流动性(Meteora DLMM)。每种池类型都有不同的费用结构、资金效率特征和风险状况。了解这些差异,对于选择最佳执行场所、评估流动性质量和识别池级风险至关重要。

此技能涵盖:

  • Solana DEX 上各类池的机制与费用结构
  • 池健康度指标(TVL、交易量效率、费用 APR、LP 数量)
  • 池创建模式(PumpFun 毕业、手动创建)
  • 交易执行的最佳池选择
  • 池龄与风险评估

相关技能:AMM 公式参见 lp-math,深度评估参见 liquidity-analysis,LP 风险参见 impermanent-loss,执行成本参见 slippage-modeling。


1. Solana 上的池类型

Raydium V4(恒定乘积)

新发行代币最常见的池类型。采用经典的 xy = k 不变量,固定收取 0.25% 的兑换费用。与 OpenBook(原名 Serum)集成,结合 AMM 和订单簿流动性。

Program ID: 675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8
Fee: 0.25% per swap (0.22% to LPs, 0.03% to RAY buyback)

主要特征:

  • 全范围流动性(无限价格区间)
  • LP 提供流动性简单——按等值存入两种代币
  • 资金效率低于集中流动性
  • 创建池需要 OpenBook 市场 ID
Raydium CLMM(集中流动性)

集中流动性做市商池允许 LP 指定价格区间,与 V4 相比可将资金效率提高 10 至 100 倍。

Program ID: CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK
Fee tiers: 0.01%, 0.05%, 0.25%, 1%, 2%
Tick spacing: 1, 10, 60, 120, 240 (corresponding to fee tiers)

主要特征:

  • LP 为其头寸选择最低价和最高价
  • 头寸以 NFT 表示
  • 每美元存入资金可获得更高的费用收入(价格在区间内时)
  • 头寸可能超出价格区间(不产生费用)
  • 针对不同波动性特征提供多个费用档位
Orca Whirlpool(集中流动性)

Orca 的集中流动性实现,在主要代币对(SOL/USDC、SOL/USDT)中占主导地位。

Program ID: whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc
Fee tiers: 0.01%, 0.02%, 0.04%, 0.05%, 0.16%, 0.30%, 0.65%, 1%, 2%
Tick spacing: 1, 2, 4, 8, 16, 64, 128, 256, 512 (varies by fee)

主要特征:

  • 头寸以 NFT 表示(类似 Uniswap V3)
  • 提供丰富的费用档位,便于精细控制
  • SDK 和开发者工具完善
  • 在 Solana 蓝筹代币对中占主导地位
Meteora DLMM(动态流动性做市商)

基于 bin 的流动性,其中每个 bin 持有固定价格。LP 使用不同策略模式将流动性分配到各个 bin。

Program ID: LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo
Fee: Dynamic (base fee + variable fee based on volatility)
Bin step: 1-100 basis points per bin

主要特征:

  • 使用离散价格 bin,而非连续 tick
  • 波动性较高时动态提高费用
  • 策略模式:Spot、Curve、Bid-Ask
  • 在单个 bin 内滑点为零
  • 对稳定币对而言,资金效率极高
Meteora Dynamic Pools

支持单边存入并根据波动性调整费用的多代币池。

Program ID: Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB
Fee: Volatility-based dynamic fee

主要特征:

  • 支持单边存入
  • 根据近期价格波动动态调整费用
  • 支持多代币池
  • LP 体验比集中流动性更简单
PumpSwap(PumpFun AMM)

PumpFun 为从绑定曲线毕业的代币提供的原生 AMM。

Program ID: PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP
Fee: 0.25% per swap (0.20% to LPs, 0.05% protocol)
Migration fee: 0 SOL (post-March 2025)

主要特征:

  • 恒定乘积(xy = k)机制
  • 市值达到约 $69K 时自动从 PumpFun 绑定曲线迁移
  • 创作者代币奖励(协议费用的 10% 分配给代币创作者)

2. 费用结构对比

DEX池类型费用范围LP 分成协议分成
Raydium V4恒定乘积固定 0.25%0.22%0.03%(RAY)
Raydium CLMM集中流动性0.01%–2%~84%~16%
Orca Whirlpool集中流动性0.01%–2%87%13%
Meteora DLMM基于 Bin动态80%20%
Meteora Dynamic动态可变~80%~20%
PumpSwap恒定乘积固定 0.25%0.20%0.05%

费用层级选择指南:

  • 0.01%:稳定币交易对(USDC/USDT)——价格波动极小
  • 0.05%:相关资产(mSOL/SOL、jitoSOL/SOL)——波动性低
  • 0.25%–0.30%:标准交易对(SOL/USDC)——波动性中等
  • 1%–2%:高波动性/Meme 代币——无常损失风险高

3. 池创建模式

PumpFun 毕业流程

大多数新的 Solana Meme 代币都会遵循以下生命周期:

PumpFun Bonding Curve → ~$69K market cap → Migration → Raydium V4 or PumpSwap
  1. 代币在 PumpFun 联合曲线上发行
  2. 买入将市值推升至约 $69K 时,联合曲线完成
  3. 流动性自动迁移到 Raydium V4 或 PumpSwap
  4. 自 2025 年 3 月起,PumpFun 默认将流动性迁移至 PumpSwap(其自有 AMM)
  5. 迁移后,可能会在其他 DEX 上创建更多池

分析方面的启示:

  • 通过 PumpFun 毕业流程创建的池,其初始流动性已知(约 $12K)
  • 刚毕业不久的池,rug 风险更高
  • 检查创建者的 LP 代币是否已锁定或可销毁
手动创建池

并非通过 PumpFun 发行的代币,其池由人工创建:

  • Raydium V4 需要 OpenBook 市场及池初始化
  • Raydium CLMM、Orca 和 Meteora 支持直接创建池
  • 手动创建允许设置任意初始流动性金额

4. 交易量效率(交易量/TVL 比率)

交易量效率衡量池的流动性被使用得有多活跃:

volume_efficiency = volume_24h / tvl
V/TVL 比率解读
> 5.0换手率极高——可能存在洗盘交易或机器人活动
1.0–5.0交易活跃——池的利用情况良好
0.1–1.0活动中等——中市值代币的正常水平
< 0.1活动低迷——池已过时或被弃用
0.0没有交易——死池

根据交易量效率估算费用 APR:

fee_apr = volume_efficiency * fee_rate * 365
# Example: V/TVL of 2.0 at 0.25% fee = 2.0 * 0.0025 * 365 = 182.5% APR

这是理论上的最高值——LP 的实际回报取决于无常损失、仓位区间(针对集中流动性)以及费用分成。


5. 池健康指标

核心指标
pool_health = {
    "tvl_usd": 150_000,          # Total value locked
    "volume_24h_usd": 300_000,   # 24-hour trading volume
    "volume_tvl_ratio": 2.0,     # Volume efficiency
    "fee_apr_estimate": 182.5,   # Annualized fee rate (%)
    "pool_age_hours": 720,       # Time since creation
    "lp_count_estimate": 45,     # Number of LP positions
    "tvl_trend_24h": -0.05,      # TVL change (-5%)
    "price_change_24h": 0.12,    # Price change (+12%)
}
风险信号

评估池时,请留意以下警示信号:

风险信号阈值风险
池创建时间很短创建不到 24 小时Rug pull、代币未经审核
单一 LPLP 数量 = 1创建者可撤走全部流动性
TVL 下降24 小时内下降 > 20%流动性撤离
交易量为零6 小时以上无交易已死或被弃用
V/TVL 极高> 10x洗盘交易、机器人操纵
TVL 极低< $1,000任何交易都会产生巨大滑点
健康评分算法
def compute_health_score(
    tvl_usd: float,
    volume_24h: float,
    pool_age_hours: float,
    lp_count: int,
    tvl_change_24h: float,
) -> float:
    """Score from 0-100 indicating pool health.

    Components (each 0-20):
    - TVL adequacy: Is there enough liquidity?
    - Volume efficiency: Is the pool actively traded?
    - Maturity: How long has the pool existed?
    - LP diversity: How many independent LPs?
    - TVL stability: Is liquidity growing or shrinking?
    """
    # TVL score (0-20): logarithmic scale, peaks at $1M+
    tvl_score = min(20, max(0, 5 * math.log10(max(tvl_usd, 1)) - 10))

    # Volume score (0-20): V/TVL ratio, sweet spot 0.5-3.0
    v_tvl = volume_24h / max(tvl_usd, 1)
    volume_score = min(20, max(0, v_tvl * 10)) if v_tvl < 5 else max(0, 20 - (v_tvl - 5) * 4)

    # Age score (0-20): older = more trusted
    age_score = min(20, pool_age_hours / 72 * 20)  # Max at 72h

    # LP diversity score (0-20)
    lp_score = min(20, lp_count * 2)  # Max at 10 LPs

    # Stability score (0-20): penalize large negative TVL changes
    stability_score = max(0, 20 + tvl_change_24h * 40)  # -50% → 0, 0% → 20

    return tvl_score + volume_score + age_score + lp_score + stability_score

6. 执行交易的最佳池选择

当某个代币交易对存在多个池时,选择最适合执行交易的池:

def rank_pools_for_execution(pools: list[dict], trade_size_usd: float) -> list[dict]:
    """Rank pools by execution quality for a given trade size.

    Factors:
    1. Sufficient TVL (trade size < 2% of TVL for acceptable slippage)
    2. Active volume (recent trades confirm the pool is live)
    3. Lowest fee tier (when liquidity is sufficient)
    4. Pool type efficiency (concentrated > constant product for same TVL)
    5. Pool health score (age, LP count, stability)
    """
    for pool in pools:
        size_ratio = trade_size_usd / max(pool["tvl_usd"], 1)
        pool["estimated_slippage"] = size_ratio * 100  # Rough % estimate

        # Prefer pools where trade is < 2% of TVL
        pool["size_ok"] = size_ratio < 0.02

        # Concentrated liquidity is more efficient
        efficiency_mult = 1.0
        if pool["pool_type"] in ("clmm", "whirlpool", "dlmm"):
            efficiency_mult = 0.3  # ~3x less slippage per TVL dollar

        pool["adjusted_slippage"] = pool["estimated_slippage"] * efficiency_mult
        pool["execution_score"] = (
            (1.0 / max(pool["adjusted_slippage"], 0.001)) * 0.5
            + pool.get("health_score", 50) * 0.3
            + (1.0 / max(pool["fee_rate"], 0.0001)) * 0.2
        )

    return sorted(pools, key=lambda p: p["execution_score"], reverse=True)

7. 程序 ID 速查

PROGRAM_IDS = {
    "raydium_v4": "675kPX9MHTjS2zt1qfr1NYHuzeLXfQM9H24wFSUt1Mp8",
    "raydium_clmm": "CAMMCzo5YL8w4VFF8KVHrK22GGUsp5VTaW7grrKgrWqK",
    "orca_whirlpool": "whirLbMiicVdio4qvUfM5KAg6Ct8VwpYzGff3uctyCc",
    "meteora_dlmm": "LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo",
    "meteora_dynamic": "Eo7WjKq67rjJQSZxS6z3YkapzY3eMj6Xy8X5EQVn5UaB",
    "pumpswap": "PSwapMdSai8tjrEXcxFeQth87xC4rRsa4VA5mhGhXkP",
    "pumpfun_bonding": "6EF8rrecthR5Dkzon8Nwu78hRvfCKubJ14M5uBEwF6P",
}

8. 集成点

与 liquidity-analysis 集成

使用池分析为流动性深度评估提供依据。池类型决定适用哪种流动性模型(恒定乘积、集中流动性或基于 Bin)。

与 lp-math 集成

池类型决定适用哪些数学公式。Raydium V4 使用 xy = k,CLMM/Whirlpool 使用基于 tick 的数学计算,DLMM 使用 Bin 数学计算。完整推导请参阅 lp-math。

与 slippage-modeling 集成

最佳池选择会直接影响滑点估算。集中流动性池的滑点曲线与恒定乘积池不同。

与 jupiter-api 集成

Jupiter 会自动聚合所有池类型。池分析有助于理解 Jupiter 为何通过特定池进行路由,并验证路由质量。


9. 工作流示例

import httpx

# Step 1: Fetch all pools for a token from DexScreener
async def analyze_token_pools(token_mint: str) -> dict:
    url = f"https://api.dexscreener.com/tokens/v1/solana/{token_mint}"
    async with httpx.AsyncClient() as client:
        resp = await client.get(url)
        pools = resp.json()

    results = []
    for pool in pools:
        dex = pool.get("dexId", "unknown")
        pool_info = {
            "dex": dex,
            "pool_address": pool.get("pairAddress"),
            "tvl_usd": pool.get("liquidity", {}).get("usd", 0),
            "volume_24h": pool.get("volume", {}).get("h24", 0),
            "age_hours": pool.get("pairCreatedAt", 0),
            "fee_rate": estimate_fee_rate(dex),
            "pool_type": classify_pool_type(dex),
        }
        pool_info["volume_efficiency"] = (
            pool_info["volume_24h"] / max(pool_info["tvl_usd"], 1)
        )
        results.append(pool_info)

    return {"token": token_mint, "pool_count": len(results), "pools": results}

文件

参考资料
  • references/pool_mechanics.md — 各类池的详细机制,包括程序 ID 和公式
  • references/pool_analysis_guide.md — 池的健康指标、风险信号、交易量效率和最佳池选择
脚本
  • scripts/analyze_pools.py — 获取并分析代币的所有池,按执行质量排序
  • scripts/pool_monitor.py — 随时间监控池指标,检测流动性事件

此技能提供用于分析 DEX 池特征的工具和信息,不提供财务建议或交易建议。

评论

支持 Markdown