Bin Mathematics
What are Bins?
Think of bins as price buckets that hold liquidity. Each bin represents a specific price point where tokens can be traded. Instead of spreading liquidity across a continuous range, DLMM splits it into these discrete bins.
Key characteristics:
Each bin has a unique ID
Bins contain reserves of both tokens (X and Y)
Only one bin is "active" for trading at any time
Price moves by jumping between adjacent bins
How Bin IDs Work
Bin IDs are 24-bit integers that directly map to price levels:
Bin ID 8388608 (2^23) = Price of 1.0 (X/Y = 1)
Bin ID > 8388608 = Price > 1.0
Bin ID < 8388608 = Price < 1.0
Important concepts:
Active Bin: The current trading bin where swaps occur
Bin Step: The price difference between adjacent bins (in basis points)
Bin Range: A sequence of bins where you can place liquidity
Example
For a USDC/USDT pair with 1 basis point bin step:
Bin 8388608: 1 USDC = 1.0000 USDT
Bin 8388609: 1 USDC = 1.0001 USDT
Bin 8388610: 1 USDC = 1.0002 USDT
This discretization enables gas-efficient trading and precise liquidity placement at exact price points.
Bin ID Calculations
Find the appropriate bin ID for any target price using the reverse price formula.
The Reverse Formula
To calculate bin ID from a target price:
binId = log(price) / log(1 + binStep/10000) + 8388608
Where:
price
: Target price (X/Y ratio)binStep
: The step size in basis points8388608
: The reference bin where price = 1.0 for exampleResult must be rounded to nearest integer
Quick Examples
Finding bin IDs for common prices:
// With 10 basis point bin step
price: 1.0000 → binId = 8388608
price: 1.0050 → binId = 8388613 (5 bins above)
price: 0.9950 → binId = 8388603 (5 bins below)
// With 100 basis point bin step
price: 1.1000 → binId = 8388618 (10 bins above)
price: 0.9000 → binId = 8388597 (11 bins below)
Code Implementation
function getBinIdFromPrice(
targetPrice: number,
binStep: number
): number {
const base = 1 + binStep / 10000;
const rawBinId = Math.log(targetPrice) / Math.log(base) + 8388608;
// Round to nearest bin
return Math.round(rawBinId);
}
// Example: Place liquidity at $3.00 for SUI/USDC
const binId = getBinIdFromPrice(3.0, 20);
// Result: binId = 8394879
Rounding Considerations
Round: For finding nearest tradeable bin
Floor: For conservative sell orders
Ceil: For conservative buy orders
// Different rounding strategies
const exact = 8388612.7;
Math.round(exact); // 8388613 - nearest bin
Math.floor(exact); // 8388612 - lower price
Math.ceil(exact); // 8388613 - higher price
Bin step guides
Choose the optimal bin step for your trading pair based on asset volatility, trading patterns, and capital efficiency needs.
What is Bin Step?
Bin step defines the price increment between adjacent bins in basis points (bps):
1 bps = 0.01% price difference
Range: 1 to 10,000 bps
Affects price granularity and capital efficiency
Choosing Your Bin Step
Stable Pairs (1-10 bps)
Best for: USDC/USDT, wBTC/BTC, haSUI/SUI
1 bps → 0.01% increments → Finest granularity
5 bps → 0.05% increments → Good for most stables
Blue-chip Pairs (10-50 bps)
Best for: SUI/USDC, DEEP/USDC, WAL/USDC
20 bps → 0.20% increments → Popular choice
50 bps → 0.50% increments → Wider but efficient
Volatile Pairs (50-200 bps)
Best for: MEME/USDC, New tokens, Low liquidity pairs
100 bps → 1.00% increments → Handles volatility well
200 bps → 2.00% increments → Maximum capital efficiency
Trade-offs
Small (1-10 bps)
• Minimal slippage
• Precise pricing
• Better for limit orders
• Liquidity spread thin
• More bins needed
• Higher gas on rebalancing
Large (100+ bps)
• Concentrated liquidity
• Fewer bins to manage
• Lower rebalancing costs
• Higher slippage
• Larger price jumps
• Less precise entries
Quick Reference
// Recommended bin steps by pair type
const binStepGuide = {
stablecoin: 1, // USDC/USDT
correlated: 5, // haSUI/SUI
bluechip: 20, // SUI/USDC
volatile: 100, // MEME/USDC
exotic: 200 // New launches
};
Practical Example
For SUI/USDC with 20 bps bin step:
Bin 8388608: $3.00
Bin 8388609: $3.01 (0.3% higher)
Bin 8388610: $3.02 (0.6% higher)
This provides good balance between capital efficiency and price precision.
Last updated