Every automated market maker has to answer one question: at which prices does the liquidity sit? There are three common answers, and they lead to very different outcomes for the people providing that liquidity.
The diagrams below all show the same thing: how much liquidity sits at each price. The horizontal axis is price; the height is how much capital is working there. Each design deploys the same amount of money — the difference is entirely in where it lands.
One formula, x · y = k, covers every price from zero to infinity.
Liquidity is spread evenly across all of them, so only a sliver is ever near the
market.
You pick a price range and all your capital works inside it. Far more efficient — but within the range it's still one continuous curve, so the price moves a little on every unit traded.
The range is cut into fixed steps called bins. Each bin holds liquidity at one exact price, and everything traded inside it clears at that price — no curve, no drift.
Read left to right, that's a progression: CPMM spends capital on prices that may never trade, CLMM stops doing that, and DLMM additionally removes the price movement within what you're providing.
| CPMM | CLMM | DLMM | |
|---|---|---|---|
| Where liquidity sits | Every price, 0 → ∞ | A continuous range you choose | Discrete bins you choose |
| Capital near the market | A small fraction | Most of it | Exactly what you placed there |
| Price inside your position | Moves on every trade | Moves on every trade | Fixed per bin |
| Slippage on a small trade | Always some | Small, but non-zero | None within a bin |
| Shape of your position | Fixed by the formula | Uniform across the range | Any shape, bin by bin |
| Fees | Usually one flat rate | Flat, sometimes tiered by pool | Can vary with volatility, per bin |
| Effort to run | Set and forget | Needs range management | Needs range management |
Concentration is the big jump — going from "every price" to "a range you chose" is where most of the efficiency comes from, and CLMM already does that. Bins add a second, smaller set of wins on top, and they compound.
On a curve, every unit traded nudges the price against the next unit — that's the design working as intended, but it's a cost the trader pays and the LP doesn't capture. In a bin, the whole bin clears at one price. Price only steps when a bin is used up, so the cost of trading becomes the fee, not the curve.
A range gives you two numbers: where it starts and where it ends. Bins give you a number per bin. You can hold flat across the range, pile everything around the current price, or weight the edges to lean into a move — decisions a range alone can't express.
Because each bin is priced independently, the fee doesn't have to be a single fixed number. It can rise while the market is moving quickly and settle back as things calm — so providers are paid more precisely when the risk of being run over is highest, rather than the same rate in every condition.
A bin holds one token or the other, at a known price — the only exception being the one bin currently being traded, which holds both. That makes a position easy to reason about: you can read off exactly what you'd hold at any price, instead of solving a curve for it.
"Most cases" is not "all cases", and the honest comparison matters more than the flattering one.
Picon DLMM is the bin model, live on Solana mainnet.