DLMM is a concentrated liquidity AMM that uses a dynamic fee mechanism to adjust liquidity based on market conditions.

Price Calculation Formulas

Base Price Formula

price=(1+bin_stepBASIS_POINT_MAX)active_id\text{price} = \left(1 + \frac{\text{bin\_step}}{\text{BASIS\_POINT\_MAX}}\right)^{\text{active\_id}}

Where:

  • BASIS_POINT_MAX = 10,000
  • Uses Q64.64 fixed-point arithmetic
  • Example: For bin_step = 10, price = (1.001)^active_id

Price Impact Formulas

Selling X for Y:

min_price=spot_price×BASIS_POINT_MAXmax_price_impact_bpsBASIS_POINT_MAX\text{min\_price} = \text{spot\_price} \times \frac{\text{BASIS\_POINT\_MAX} - \text{max\_price\_impact\_bps}}{\text{BASIS\_POINT\_MAX}}

Selling Y for X:

min_price=spot_price×BASIS_POINT_MAXBASIS_POINT_MAXmax_price_impact_bps\text{min\_price} = \text{spot\_price} \times \frac{\text{BASIS\_POINT\_MAX}}{\text{BASIS\_POINT\_MAX} - \text{max\_price\_impact\_bps}}

Fee Calculation Formulas

Total Trading Fee

total_fee_rate=min(base_fee_rate+variable_fee_rate,MAX_FEE_RATE)\text{total\_fee\_rate} = \min(\text{base\_fee\_rate} + \text{variable\_fee\_rate}, \text{MAX\_FEE\_RATE})

Base Fee Formula

base_fee_rate=base_factor×bin_step×10×10base_fee_power_factor\text{base\_fee\_rate} = \text{base\_factor} \times \text{bin\_step} \times 10 \times 10^{\text{base\_fee\_power\_factor}}

Variable Fee Formula

variable_fee_rate=(volatility_accumulator×bin_step)2×variable_fee_control+OFFSETSCALE\text{variable\_fee\_rate} = \frac{(\text{volatility\_accumulator} \times \text{bin\_step})^2 \times \text{variable\_fee\_control} + \text{OFFSET}}{\text{SCALE}}

Where:

  • OFFSET = 99,999,999,999
  • SCALE = 100,000,000,000

Composition Fee Formula

composition_fee=swap_amount×total_fee_rate×(1+total_fee_rate)FEE_PRECISION2\text{composition\_fee} = \frac{\text{swap\_amount} \times \text{total\_fee\_rate} \times (1 + \text{total\_fee\_rate})}{\text{FEE\_PRECISION}^2}

Where:

  • MAX_FEE_RATE = 100,000,000

Liquidity and Bin Math Formulas

Liquidity Formula (Constant Sum)

L=price×x+yL = \text{price} \times x + y

Where:

  • L is liquidity
  • x and y are token amounts
  • Price is in Q64.64 format

Liquidity Share Formula

liquidity_share=in_liquidity×liquidity_supplybin_liquidity\text{liquidity\_share} = \frac{\text{in\_liquidity} \times \text{liquidity\_supply}}{\text{bin\_liquidity}}