Liquidity correlation calculation

Liquidity, coin amount, price and tick.

1. Liquidity to CoinAmount

use ClmmPoolUtil.getCoinAmountFromLiquidity method.

Example

this is an example shows how to calculate coin amounts about one position.

const pool = await sdk.Pool.getPool(poolAddress)

const position = await sdk.Position.getSimplePosition(positionAddress)

const lowerSqrtPrice = TickMath.tickIndexToSqrtPriceX64(position.tick_lower_index)
const upperSqrtPrice = TickMath.tickIndexToSqrtPriceX64(position.tick_upper_index)


const liquidity = new BN(position.liquidity)
const curSqrtPrice = new BN(pool.current_sqrt_price)

const lowerSqrtPrice = TickMath.tickIndexToSqrtPriceX64(position.tick_lower_index)
const upperSqrtPrice = TickMath.tickIndexToSqrtPriceX64(position.tick_upper_index)

const amounts = ClmmPoolUtil.getCoinAmountFromLiquidity(
  liquidity,
  curSqrtPrice,
  lowerSqrtPrice,
  upperSqrtPrice,
  false
)

const {coinA, coinB} = amounts

2. Price to TickIndex

when you want to open position, you dont know how to set your tick_lower and tick_upper.

use /src/math/tick.ts TickMath.priceToTickIndex()

// decimalsA and decimalsB means the decimal of coinA and coinB
const tick_lower = TickMath.priceToTickIndex(price, decimalsA, decimalsB)

3. Calculate price from sqrt price

use /src/math/tick.ts TickMath.sqrtPriceX64ToPrice()

const pool = await sdk.Pool.getPool(poolAddress)
const price = TickMath.sqrtPriceX64ToPrice(new BN(pool.current_sqrt_price))

Last updated