Methodology
We believe published numbers should be reproducible. Here is exactly how the table on the front page is built.
1. Universe
We pull all active DLMM pools from the Meteora public API (dlmm.datapi.meteora.ag/pools). We then filter to pools that meet all of:
- TVL ≥ $300,000 (small pools have unstable APR estimates)
- 24h volume ≥ $30,000
- volume/TVL ratio ≥ 0.15 (weeds out dead pools)
Survivors are sorted by volume/TVL ratio. We rank the top 30 (this also bounds compute).
2. Historical data
For each pool we fetch 180 days of 1h OHLCVfrom Meteora's OHLCV endpoint (paginated in 72-candle chunks because the API caps the time range per request). Candles with close ≤ 0 or non-finite values are discarded.
3. Strategies tested
We benchmark 5 LP strategies against each pool:
wide-30pct-passive— set range ±30% from entry, never rebalancewide-20pct-passive— ±20%, no rebalancewide-10pct-passive— ±10%, no rebalancemedium-10pct-rebal— ±10%, rebalance to ±10% around current price when out of rangenarrow-5pct-rebal— ±5%, rebalance to ±5%
4. Rolling backtest
We slice the 180-day history into 30-day windows stepped every 30 days, giving up to 6 independent samples per pool. Each window simulates entering with $10,000, computing fees earned (CPMM approximation: fees ∝ overlap of candle range with position range × your share of pool TVL), impermanent loss vs initial 50/50 entry, and rebalancing costs.
5. Costs we model
- Entry slippage: 5 bps of capital ($5 on $10K), once
- Rebalance cost: 10 bps each time the position is reset
- Solana network fees and priority fees are not separately modeled (negligible at this size, but matters for bots; see caveat below)
6. Ranking score
For each pool we compute the median APR of the best-performing strategy across windows, and rank pools by:
score = median_edge_vs_hodl_pct × sqrt(TVL) × honesty_score
Square root of TVL rewards larger pools (more capital can be deployed) but with diminishing returns. Honesty score is a heuristic [0–1] that drops when the sample is small, APR variance is high, or time-in-range is low.
7. Known limitations
- We use a CPMM-style fee approximation, not the exact DLMM bin-level liquidity curve. For narrow ranges this overestimates fees by ~5–15%.
- Adding $10K to a pool with $300K TVL changes its dynamics — APR shown is what a passive $10K share of historical fees would have earned, not what new capital would earn. See the per-pool capacity column.
- OHLCV at 1h granularity misses intra-hour wicks, which can briefly push out of range.
- Past performance is, famously, not predictive.
8. Source code
The ranking engine is open. Strategies, costs, and ranking logic live in lib/engine/. Refresh runs hourly via cron and writes a snapshot file; the dashboard reads the latest snapshot.