Preview environment — surfpool fork, ephemeral wallet, no real funds.
Methodology

The math behind Drainwatch

Loss-Versus-Rebalancing quantifies the cost of providing passive AMM liquidity. Based on Milionis et al. 2022, adapted for Solana's microstructure.

What is LVR?

Every AMM holds reserves along a bonding curve. When the external market price moves, the AMM's quoted price becomes stale — anyone can trade against it at a better-than-market rate. The value extracted from these stale quotes is Loss-Versus-Rebalancing.

Formally, LVR is the rate at which an AMM's portfolio value falls behind a hypothetical rebalancing portfolio that always trades at the external price:

ℓ(P) = (σ² / 2) · P² · |V″(P)|

Where σ is the external price volatility, P is the price, and V″(P) is the pool's curvature — how sharply its value lags a linear hedge as P moves.

The constant-product result

For a constant-product AMM (x·y = k), used by Raydium V4 and Meteora DAMM, the math simplifies beautifully. The pool value is V(P) = 2L√P where L = √k is the liquidity parameter.

Computing the curvature and substituting:

ℓ_CPMM(P) = σ² · L · √P / 4

As a fraction of pool TVL, this becomes the classic result:

LVR / TVL = σ² / 8

Independent of price and liquidity. A pool with 50% annualized volatility loses σ²/8 ≈ 3.1% of TVL per year to LVR at zero fees. Whether LPs are profitable depends on whether fees exceed this cost.

How Drainwatch measures it

We use 1-minute resampled integrated variance— the textbook realized-variance estimator from financial econometrics. From the on-chain price path (via ionic's trade feed):

  1. Bucket all trades into 1-minute windows
  2. Take the closing price per window
  3. Forward-fill empty minutes
  4. Integrate: LVR = Σ (Δlog P)² × L × √P / 4

Why 1-minute bars? Tick-by-tick prices suffer from microstructure noise — bid-ask bounce inflates the variance estimate. Our 5-step refinement chain confirmed this empirically:

StepMethodLVR/FeesIssue
1Tick-level variance23×Microstructure noise
2|mid − exec| unsigned5.5×Includes price impact
3Direction-filtered2.8×Still unsigned
4Signed LP loss0.02×Gains cancel losses
51-min resampled2.6×Load-bearing result

Validated against Canidio & Fritsch 2024 on 678,000 Uniswap v3 swaps over 6 months. Our 2.6× ratio on ETH-USDT 0.05% is consistent with their finding that high-volume, low-fee pools are unprofitable for LPs.

Jito MEV cross-validation

On Solana, arbitrageurs pay Jito tips for priority transaction inclusion. Drainwatch cross-references LVR against Jito tip volume per pool.

On one Raydium V4 pool over 24 hours: traders paid $758 in Jito tips to capture $716 in LVR. The convergence (tips ≈ LVR within 6%) confirms two things:

  • Our LVR computation matches what traders actually pay for the extraction opportunity
  • The MEV market is efficient — competition drives arb profits toward zero after tip costs

This cross-validation is Solana-native — no Ethereum LVR tool has access to equivalent MEV attribution data.

Coverage: USD-pegged + SOL-quoted pools

The leaderboard runs in two parallel modes selected by the USD / SOL toggle. Both share the same LVR methodology above; what differs is the universe and the unit of account.

  • USD-pegged (default) — pools quoted in USDC, USDT, or USD1. ~22k pools, ~$332M aggregate fees / 30d. Fees and LVR are already denominated in USD on-chain.
  • SOL-quoted — pools quoted in wSOL ( So11111111111111111111111111111111111111112). ~119k pools (mostly pump.fun-style SOL/meme pairs), ~$129M aggregate fees / 30d. Fees and LVR are computed in SOL on-chain and converted to USD using the canonical Raydium SOL/USDC reference pool, averaged per minute over the selected window.

We don’t merge the two universes. The score scales aren’t directly comparable — SOL-quoted pools have different liquidity and turnover characteristics — so the toggle is exclusive. Some SOL-quoted pools may show $0 LVRuntil the snapshot job’s 10,000-minute-close coverage gate completes; those rows are dimmed in the table.

References