Liquidity ranges
Hold liquidity on Uniswap V2, V3 and V4 pools or Solana pools with rules that move it, backtested on the pool's real swaps first, on paper or minted on chain.
Ranges with rules#
A project can hold liquidity positions on a Uniswap V2, V3 or V4 pool, or on a Solana pool (PumpSwap, Raydium, Orca, Meteora), with rules for where the range sits and when it moves. On a live project they're minted on chain from their wallet and follow their rules there.
Backtest the rules first#
backtest_lp_ranges replays a pool's real swaps against your rules: fees earned, time in range, impermanent loss and how often it moved. Try widths and triggers there before any money goes in.
Run and control#
Each position can be started, stopped, closed, added to, taken from, collected and compounded. list_lp_positions (and the project's Liquidity widget) shows each one's value, range, whether it's in range and fees owed.
Ranges in strategies#
A strategy can hold a range itself with lp.range({ widthPct }) and read it with lp.inRange(), lp.value() and lp.fees(), so a range can move on any signal Flowscript can read, and be hedged on a perp. The Hedged LP and Hedged range starters do both. See Hedged and multi-market.
Make a pool#
A workflow's pool step makes a Uniswap V3 or V4 pool on Robinhood Chain at a price (or finds the one there), and the steps after it trade it.