Guides
Position builder.
Every control of the Obol position builder explained: pool, amounts, shape, price range, bins, slippage and the transactions you sign.
The position builder sits on the right of every token page. Everything you set there is turned into a single openLadder transaction.
Controls
| Control | What it does | Default |
|---|---|---|
| Pool | Uniswap V3 or V4 pool the ladder is built in. Only Uniswap pools are listed. | Highest-volume pool |
| Token amount | Amount of the token itself (sits above the price). | 0 |
| Quote amount | Amount of ETH or USDG (sits below the price). WETH pools accept ETH and wrap it. | — |
| Auto-fill | Fills the other amount in proportion to how much of the range sits on each side of the price. | Off |
| Shape | Spot, Curve or Bid-Ask distribution across bins. | Curve |
| Min / max | Range as market caps. Min between -90% and -1%, max between +1% and +200% of the current cap. | -30% / +40% |
| Bins | Number of positions, 1 to 20. Capped on-chain if the range is too narrow for the pool's tick spacing. | 10 |
| Slippage | Max price move tolerated before the transaction lands, enforced on-chain. | 0.5% |
Chart and distribution
The candlestick chart shows price or market cap with your range overlaid; drag the handles to adjust it. Below the inputs, the distribution chart previews how much each bin receives with the selected shape.
Transactions
| Pool type | What you sign |
|---|---|
| V4, paired with native ETH | 1 transaction: openLadder with ETH attached |
| V3 or V4, paired with WETH | Wrap ETH (if needed) → approve WETH → openLadder |
| USDG or other ERC-20 | Approve (once per amount) → openLadder |
Approvals are granted to the ladder manager for the exact amount, and the manager clears its own Uniswap allowances after each open.
Common errors
| Message | Meaning | Fix |
|---|---|---|
| PriceOutOfBounds | Price moved more than your slippage before execution. | Retry, or raise slippage slightly. |
| NoLiquidity | No bin can use the token you deposited (e.g. ETH only with a range entirely above the price). | Move the range below the price or add the other token. |
| InvalidPool | Not a canonical Uniswap pool, or pool not initialized. | Pick another pool. |
| InvalidValue | ETH sent does not match the amount (native-ETH pools). | Retry from the app. |