clmm market depth math
clmm market depth calculation is fairly complex and even ultra low latency MEV bots sometimes get the precision wrong.
concentrated liquidity pools don't follow x*y=k globally because liquidity is a step function across discrete tick ranges rather than uniform distribution.
when you want to simulate a swap and calculate accurate price impact you need to walk through initialized ticks one range at a time — since liquidity changes at every tick boundary there's no closed-form solution across multiple ranges.
proper slippage estimation requires tick-by-tick simulation because liquidity distribution can have gaps or concentrations at specific price levels that drastically change your execution.
the computation requires iterating initialized ticks in order, applying liquidity deltas: L_new = L_current ± liquidityNet depending on swap direction.
each price range [tick_i, tick_i+1] has constant liquidity L_i so within that range you use:
• deltaA = L_i * (√P_upper - √P_lower) / (√P_upper * √P_lower)
• deltaB = L_i * (√P_upper - √P_lower) / 2^64
but computing nextSqrtPrice across multiple ranges requires iterative simulation through computeSwapStep with proper ceiling/floor rounding — amount_in rounds up (user never underpays), amount_out rounds down (pool never overpays).
even sophisticated MEV operations sometimes use approximations that create arbitrage opportunities for those who implement the full mathematical model correctly.