backtrader
Event-driven backtesting with bar-by-bar execution, complex order types, multiple analyzers,…
DEX liquidity depth assessment, slippage estimation, and pool composition analysis for Solana tokens
$ npx -y skills add agiprolabs/claude-trading-skills --skill liquidity-analysis --agent claude-codeHow it fires
How this skill gets triggered: by you, by Claude, or both.
/liquidity-analysisContext preview
The summary Claude sees to decide when to auto-load this skill.
DEX liquidity depth assessment, slippage estimation, and pool composition analysis for Solana tokens
name: liquidity-analysis description: DEX liquidity depth assessment, slippage estimation, and pool composition analysis for Solana tokens
Liquidity analysis answers three critical questions before every trade: **Can I get in at a reasonable price?** **Can I get out when I need to?** and **Is this pool safe?** Without it, you risk excessive slippage, failed exits, and rug pulls.
**Position sizing**: Maximum position size is bounded by available liquidity. A $10K position in a pool with $20K TVL will move the price significantly. Rule of thumb: keep trade size under 2% of pool depth to limit slippage below 1%.
**Execution cost**: Slippage is a direct cost. On a 5 SOL buy, the difference between 0.3% and 3% slippage is real money lost on every entry and exit.
**Rug risk detection**: Thin liquidity, single pools, unlocked LP tokens, and newly created pools are warning signs. Liquidity analysis catches these before you enter.
**Exit planning**: Entry liquidity may differ from exit liquidity. If LP is unlocked and owned by one wallet, it can be pulled at any time.
Total value of assets deposited in a pool. For a SOL/TOKEN pool with 100 SOL and 1M TOKEN at $0.01 each, TVL = 100 * SOL_price + 1M * $0.01. TVL alone is insufficient — you need depth at the current price range.
How much can be traded before moving the price X%. In constant-product AMMs, depth is uniform. In concentrated liquidity (CLMM), depth varies by price range — thick near the current price, thin or zero outside active ranges.
Concentrated liquidity pools focus capital in a narrow price range, providing deeper liquidity within that range but nothing outside it. A pool with $50K TVL concentrated in a +/-5% range provides the same depth as a $500K constant-product pool within that range, but zero depth beyond it.
Slippage is not linear. Plotting slippage against trade size produces a curve that's gentle for small trades and steep for large ones. The shape depends on pool type, TVL, and concentration.
Who provides liquidity matters. Locked LP tokens cannot be withdrawn (safer). Single-sided liquidity means the pool is imbalanced. Pool age indicates stability — pools older than 7 days with consistent TVL are more reliable.
Four complementary data sources, from free to comprehensive:
| Source | Auth Required | Best For | Limitations | |--------|--------------|----------|-------------| | DexScreener | None | Quick pool lookup, liquidity.usd | No on-chain pool details | | Jupiter Quote API | None | Empirical slippage at any size | Aggregate across pools | | Birdeye | API key | Detailed pool data, trade history | Rate limited on free tier | | On-chain | RPC only | LP lock status, exact reserves | Requires program knowledge |
See `references/data_sources.md` for complete endpoint documentation and usage examples.
Fetch all pools for a token. Most Solana tokens have multiple pools across Raydium, Orca, and Meteora.
import httpx
def get_pools(mint: str) -> list[dict]:
"""Fetch all DEX pools for a token from DexScreener."""
resp = httpx.get(f"https://api.dexscreener.com/tokens/v1/solana/{mint}")
resp.raise_for_status()
pairs = resp.json()
return [p for p in pairs if p.get("liquidity", {}).get("usd", 0) > 0]For each pool, extract liquidity metrics:
def extract_depth(pool: dict) -> dict:
"""Extract liquidity metrics from a DexScreener pool."""
return {
"dex": pool.get("dexId", "unknown"),
"liquidity_usd": pool.get("liquidity", {}).get("usd", 0),
"volume_24h": pool.get("volume", {}).get("h24", 0),
"pool_age_hours": _pool_age_hours(pool.get("pairCreatedAt", 0)),
"pair_address": pool.get("pairAddress", ""),
}Use Jupiter quotes at multiple sizes to build an empirical slippage curve. This captures real routing across all pools:
import httpx
SOL_MINT = "So11111111111111111111111111111111111111112"
LAMPORTS = 1_000_000_000
async def estimate_slippage(token_mint: str, sol_amounts: list[float]) -> list[dict]:
"""Query Jupiter for slippage at multiple trade sizes.
Args:
token_mint: Token mint address to buy.
sol_amounts: List of SOL amounts to test (e.g., [0.1, 0.5, 1, 5, 10]).
Returns:
List of dicts with sol_amount, output_tokens, price_per_token, slippage_bps.
"""
results = []
base_price = None
async with httpx.AsyncClient() as client:
for sol in sol_amounts:
lamports = int(sol * LAMPORTS)
resp = await client.get(
"https://api.jup.ag/quote/v1",
params={
"inputMint": SOL_MINT,
"outputMint": token_mint,
"amount": str(lamports),
"slippageBps": 5000,
},
)
if resp.status_code != 200:
continue
data = resp.json()
out_amount = int(data["outAmount"])
price = sol / out_amount if out_amount > 0 else 0
if base_price is None:
base_price = price
slippage_bps = int((price - base_price) / base_price * 10000) if base_price > 0 else 0
results.append({
"sol_amount": sol,
"output_tokens": out_amount,
"price_per_token": price,
"slippage_bps": max(0, slippage_bps),
})
return resultsFor CLMM pools (Orca Whirlpool, Raydium CLMM, Meteora DLMM), liquidity may be concentrated in a narrow range. Check if the current pri
A comprehensive collection of 68 ready-to-use trading, DeFi, and quantitative finance Agent Skills. Works with Claude Code, Cursor, Codex, Gemini CLI, and 30+ other tools.
Repo: agiprolabs/claude-trading-skills
Event-driven backtesting with bar-by-bar execution, complex order types, multiple analyzers,…
Solana token market data via Birdeye — prices, OHLCV, trades, token metadata, security…
Broad crypto market data from CoinGecko covering 13,000+ tokens. Global market stats,…
Cointegration testing for pairs trading using Engle-Granger, Johansen, and rolling stability…
Wallet evaluation, monitoring, and copy-trade strategy design for Solana DEX trading
Cross-asset correlation analysis including rolling correlation, hierarchical clustering, tail…