dex-pool-analysis について
dex-pool-analysisは、Solana DEXの調査担当者やトレーダー向けのスキルです。複数のAMMプールの仕組み、手数料、リスクを比較し、プールの健全性評価と執行先の選定方法も扱います。
主な機能
- 01Solana AMMプールの種類と手数料の比較
- 02TVL、取引量、手数料APRの評価
- 03新規プールと流動性リスクの特定
- 04執行品質に基づくプールの順位付け
- 05プール指標と流動性イベントの監視
活用シーン
- 01Raydium、Orca、Meteora、PumpSwapのプール比較
- 02トークンプールの健全性とリスクの確認
- 03取引規模に応じた執行プールの選定
- 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.mdpool_mechanics.mdscripts/analyze_pools.pypool_monitor.py詳細
DEX プール分析 — Solana AMM のプールメカニズムと比較
Solana の DEX エコシステムには、複数の AMM 設計があります。定積プール(Raydium V4)、集中流動性(Raydium CLMM、Orca Whirlpool)、ビンベースの流動性(Meteora DLMM)です。各プールタイプには、異なる手数料体系、資本効率の特性、リスクプロファイルがあります。これらの違いを理解することは、最適な取引執行先の選定、流動性の質の評価、プールレベルのリスクの特定に不可欠です。
このスキルでは、以下を扱います。
- Solana の DEX におけるプールタイプの仕組みと手数料体系
- プールの健全性指標(TVL、出来高効率、手数料 APR、LP 数)
- プール作成のパターン(PumpFun からの移行、手動作成)
- 取引執行に最適なプールの選定
- プールの経過時間とリスク評価
関連スキル:AMM の計算式については lp-math、深度の評価については liquidity-analysis、LP リスクについては impermanent-loss、執行コストについては slippage-modeling を参照してください。
1. Solana のプールタイプ
Raydium V4(定積)
新規ローンチトークンで最も一般的なプールタイプです。固定の 0.25% スワップ手数料を持つ、従来型の xy = k 不変式を使用します。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(ダイナミック流動性マーケットメーカー)
各ビンが固定価格を持つ、ビンベースの流動性です。LP は戦略モードを使って、複数のビンに流動性を配分します。
Program ID: LBUZKhRxPF3XUpBCjp4YzTKgLccjZhTSDM9YuVaPwxo
Fee: Dynamic (base fee + variable fee based on volatility)
Bin step: 1-100 basis points per bin
主な特徴:
- 連続したティックではなく、離散的な価格ビンを使用
- 高ボラティリティ時に上昇するダイナミック手数料
- 戦略モード:Spot、Curve、Bid-Ask
- 単一のビン内ではスリッページがゼロ
- ステーブルコインペアで極めて高い資本効率
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 | ビンベース | 動的 | 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%:ボラティリティの高いトークン/ミームトークン — インパーマネントロスのリスクが高い
3. プール作成のパターン
PumpFun の卒業フロー
新しい Solana ミームトークンの大半は、次のライフサイクルをたどります。
PumpFun Bonding Curve → ~$69K market cap → Migration → Raydium V4 or PumpSwap
- トークンが PumpFun のボンディングカーブでローンチされる
- 買いによって時価総額が約 $69K に達すると、ボンディングカーブが完了する
- 流動性が Raydium V4 または PumpSwap に自動的に移行する
- 2025 年 3 月以降、PumpFun はデフォルトで PumpSwap(独自の AMM)に移行する
- 移行後、ほかの DEX に追加のプールが作成される場合がある
分析上の留意点:
- PumpFun の卒業によって作成されたプールの初期流動性は既知(約 $12K)です
- 卒業直後のプールはラグプルのリスクが高くなります
- 作成者の 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 時間未満 | ラグプル、審査されていないトークン |
| LP が 1 つのみ | LP 数 = 1 | 作成者が流動性をすべて引き出せる |
| TVL の減少 | 24 時間で 20% 超の減少 | 流動性の流出 |
| 出来高ゼロ | 6 時間以上取引なし | 使われていない、または放棄されたプール |
| V/TVL が極端に高い | 10 倍超 | ウォッシュトレード、ボットによる操作 |
| 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 との連携
プール分析を流動性の深さの評価に活用します。プールタイプによって、適用する流動性モデル(定積型、集中流動性型、ビンベース)が決まります。
lp-math との連携
適用する数式はプールタイプによって異なります。Raydium V4 では xy = k を使用し、CLMM/Whirlpool ではティックベースの計算を、DLMM ではビン計算を使用します。詳しい導出については 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 プールの特性を評価するための分析ツールと情報を提供します。金融上の助言や取引の推奨は行いません。