Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
Free 30-min Web3 Consultation
Book Consultation
Smart Contract Security Audits
View Audit Services
Custom DeFi Protocol Development
Explore DeFi
Full-Stack Web3 dApp Development
View App Services
LABS
Guides

Launching a Concentrated Liquidity Management Plan

A technical guide for developers on implementing active management strategies for concentrated liquidity positions on AMMs like Uniswap V3.
Chainscore © 2026
introduction
INTRODUCTION TO ACTIVE LIQUIDITY MANAGEMENT

Launching a Concentrated Liquidity Management Plan

A practical guide to setting up and maintaining a concentrated liquidity position on automated market makers like Uniswap V3.

Concentrated liquidity is a capital efficiency innovation introduced by protocols like Uniswap V3 and Trader Joe v2.1. Unlike traditional constant product AMMs where liquidity is spread across the entire price curve from 0 to infinity, you can now allocate your capital to a specific price range where you expect most trading to occur. This allows you to achieve the same level of liquidity depth as a traditional pool while committing significantly less capital, or to provide deeper liquidity with the same capital, earning more fees from trades within your chosen range.

Launching a management plan begins with defining your strategy's parameters. You must select a trading pair (e.g., ETH/USDC), decide on a price range (e.g., $1,800 - $2,200 for ETH), and choose a fee tier (e.g., 0.3% for major pairs). Your capital is only active and earning fees when the market price is within this range. If the price moves outside, your position becomes 100% one asset and stops generating fees, exposing you to impermanent loss in the form of a less diversified portfolio. Tools like the Uniswap V3 Simulator can help visualize potential returns and risks.

Active management requires monitoring and periodic rebalancing. A static position will eventually drift out of the active price range as markets move. To maintain efficiency, you must re-center your range around the new market price. This involves removing the inactive position, collecting accrued fees, and deploying a new position with an updated range. This process can be automated using keeper bots or managed vaults like those from Gamma or Steer Protocol, which handle the complex logic of range adjustment, fee compounding, and gas optimization on your behalf.

For developers, interacting with the NonfungiblePositionManager smart contract is the primary method. After approving token transfers, you call mint() with parameters defining the token pair, fee tier, tickLower, tickUpper, and amount of liquidity. The contract returns a unique NFT representing your position. To collect fees, you call collect(), specifying the token IDs. Here's a simplified code snippet for minting a position using ethers.js:

javascript
const tx = await nonfungiblePositionManager.mint({
  token0: USDC_ADDRESS,
  token1: WETH_ADDRESS,
  fee: 3000, // 0.3%
  tickLower: getTickFromPrice(1800),
  tickUpper: getTickFromPrice(2200),
  amount0Desired: usdcAmount,
  amount1Desired: ethAmount,
  ...
});

Effective management balances fee income against gas costs and impermanent loss. Strategies range from passive wide ranges (e.g., ±50% around current price) for lower maintenance, to active narrow ranges for maximum fee capture, requiring frequent adjustments. Your plan should account for network gas fees (especially on Ethereum mainnet), the volatility of the underlying assets, and your desired level of involvement. By systematically defining, deploying, and maintaining your ranges, you transform liquidity provision from a passive deposit into an active, yield-optimizing strategy.

prerequisites
GETTING STARTED

Prerequisites and Setup

Before deploying a concentrated liquidity position, you need the right tools, wallet, and initial capital. This guide covers the essential setup steps.

To manage concentrated liquidity, you'll need a Web3 wallet like MetaMask, Rabby, or Frame. Ensure it's funded with the native gas token (e.g., ETH on Ethereum, MATIC on Polygon) for transaction fees and the specific token pair you intend to provide liquidity for. You will also need access to a DEX with a concentrated liquidity AMM, such as Uniswap V3, PancakeSwap V3, or Trader Joe V2. Bookmark the official interface for the protocol you plan to use.

Concentrated liquidity management is an active strategy. Unlike passive V2-style pools, your capital only earns fees when the price is within your chosen range. This requires monitoring and potentially rebalancing your position. Key concepts to understand are tick spacing (the granularity of price increments), price range (the upper and lower bounds of your liquidity), and impermanent loss (which is magnified if the price exits your range).

For developers, interacting programmatically requires specific libraries. For Ethereum and EVM chains, the Uniswap V3 SDK or Viem with the Uniswap V3 ABIs are essential. You'll need the factory, pool, and nonfungible position manager contract addresses for your chosen network. A basic setup in a Node.js environment starts with installing these packages: npm install viem @uniswap/v3-sdk. Always reference the official Uniswap V3 documentation.

Your initial capital allocation should be strategic. Determine the token pair (e.g., ETH/USDC), the deposit ratio (often 50/50 for a neutral position), and the total value you're willing to commit. Use a position backtesting tool (like the Uniswap V3 Simulator) to model fee earnings and impermanent loss across different price ranges and volatility scenarios before committing real funds.

Finally, plan your management workflow. Decide on a price alert system (using tools like Gelato or Tenderly) to notify you when the market price approaches your range boundaries. Establish a rebalancing threshold (e.g., "re-deposit when price is within 5% of my range edge") and have a clear process for adding liquidity, collecting fees, or closing the position entirely. Automation via keeper networks can be implemented for advanced strategies.

key-concepts
LAUNCHING A PLAN

Core Concepts for Active Management

Essential tools and strategies for deploying and managing concentrated liquidity positions on Uniswap V3 and similar AMMs.

01

Understanding Price Ranges & Capital Efficiency

Concentrated liquidity allows you to allocate capital within a specific price range, providing deeper liquidity and earning more fees than a full-range position. Key concepts include:

  • Active Range: The upper and lower price bounds where your liquidity is active.
  • Capital Efficiency: A position from $1,800 to $2,200 for ETH/USDC uses capital ~100x more efficiently than a full-range position for the same depth.
  • Impermanent Loss (Divergence Loss): Risk is amplified if the price moves outside your chosen range, as your assets are fully converted to the less valuable token.
02

Choosing a Management Strategy

Your approach depends on market view and risk tolerance. Common strategies include:

  • Passive (Wide Range): Set a wide range (e.g., +/- 50%) for a "set-and-forget" position with lower fee income but less maintenance.
  • Active (Narrow Range): Provide liquidity in a tight band (e.g., +/- 5%) around the current price for maximum fees, requiring frequent rebalancing.
  • Directional: Bias your range above or below the current price if you have a bullish or bearish outlook.
  • Managed (Automated): Use a vault or manager that automatically compounds fees and rebalances ranges based on algorithms.
05

Monitoring & Rebalancing

Active management requires monitoring price action and portfolio health.

  • Price Drift: When the market price approaches or exits your range, your position becomes less effective.
  • Rebalancing Actions: This involves withdrawing liquidity, collecting accrued fees, and deploying a new position with an updated price range. This can be done manually or triggered by an off-chain keeper.
  • Key Metrics to Track:
    • Fee APR: Actual earnings relative to your capital.
    • In-Range Time: Percentage of time the price spent within your active range.
    • Impermanent Loss vs. Fees Earned: The net profitability of your position.
06

Risk Management & Exit Strategies

Define clear rules to protect capital.

  • Stop-Loss on IL: Decide a maximum acceptable impermanent loss (e.g., 10%) before closing the position.
  • Gas Cost Consideration: Ensure projected fees outweigh the gas costs of rebalancing, especially for smaller positions.
  • Exit Plans: Have a clear process for:
    1. Orderly Exit: Withdraw liquidity, collect fees, and convert back to your desired asset mix.
    2. Emergency Withdrawal: Understand how to directly interact with the manager contract or underlying NFT to withdraw funds if a front-end fails.
  • Smart Contract Risk: Your main risks are bugs in the AMM or manager contract, not counterparty risk.
strategy-price-range-setting
CONCENTRATED LIQUIDITY MANAGEMENT

Strategy 1: Setting Dynamic Price Ranges

This guide explains how to define and manage dynamic price ranges for concentrated liquidity positions, a core strategy for maximizing capital efficiency and yield in automated market makers like Uniswap V3.

A dynamic price range is a liquidity provision strategy where the price bounds of your position are not static but are programmatically adjusted based on market conditions. Unlike a static range that risks becoming inactive if the price moves away, a dynamic strategy actively re-centers liquidity around the current price. This is achieved by monitoring the pool's price via an oracle or on-chain data and executing permissionless transactions to update your position's tickLower and tickUpper values. The goal is to maintain a high capital efficiency rate, ensuring your deposited assets are consistently earning trading fees.

Implementing this requires a smart contract or bot with the logic to determine new ranges. A common approach is to set a range as a percentage deviation from the current price. For example, you might program a position to always cover a range from price * 0.95 to price * 1.05. When the market price moves such that it is near the edge of this band, the contract calls NonfungiblePositionManager.collect() to harvest fees, then burn() the old position and mint() a new one with updated ticks. Key parameters to define are the range width, rebalance threshold, and gas cost tolerance for the rebalancing transaction.

Consider a practical example using the Uniswap V3 WETH/USDC 0.05% pool. Your bot, watching a Chainlink price feed, detects that WETH is trading at $3,500. Your strategy dictates a ±2% range. It calculates tickLower for $3,430 and tickUpper for $3,570. If the price drifts to $3,565, approaching your upper bound, the rebalance trigger activates. The contract would execute a transaction to move the range to, for instance, $3,465 to $3,605, recentering around the new price. This logic must account for tick spacing (e.g., 10 ticks for the 0.05% fee tier) and the immutable nature of burned positions—you cannot modify an existing NFT, you must create a new one.

The primary benefit is sustained fee income, but risks are significant. Impermanent loss is magnified in narrow, active ranges, and frequent rebalancing accrues substantial gas costs, which can negate fees earned, especially on L1 Ethereum. This makes dynamic strategies more viable on Layer 2s like Arbitrum or Optimism. Furthermore, you introduce smart contract risk and oracle risk; a faulty price feed or a bug in your rebalancing logic could lead to significant losses. Always test strategies extensively on a testnet and use audited libraries like the Uniswap V3 Periphery for interaction logic.

To start building, you need a basic understanding of Solidity, the Uniswap V3 SDK, and an infrastructure provider for transaction execution. Your system's core loop should: 1) Monitor the pool price, 2) Check if the price is outside a defined 'buffer zone' within your range, 3) Calculate new ticks based on your strategy, 4) Execute the rebalance (collect, burn, mint) in a single transaction to avoid MEV. Remember, the NonfungiblePositionManager requires you to provide updated liquidity amounts when minting the new position, which typically involves withdrawing and redepositing the same capital.

strategy-automated-rebalancing
CONCENTRATED LIQUIDITY MANAGEMENT

Strategy 2: Automating Position Rebalancing

Learn how to automate the maintenance of concentrated liquidity positions to maximize fee yield and minimize impermanent loss.

Concentrated liquidity on Automated Market Makers (AMMs) like Uniswap V3 or PancakeSwap V3 allows you to provide capital within a specific price range. This dramatically increases capital efficiency and potential fee earnings compared to full-range V2-style liquidity. However, as the market price moves, your position can become out-of-range, meaning it no longer earns fees and is fully converted into the less valuable asset. Manual rebalancing is time-consuming and reactive. Automation solves this by programmatically adjusting your position's price bounds to keep it active around the current market price.

A rebalancing strategy typically involves two core smart contract functions: a keeper and a logic module. The keeper is an off-chain or on-chain service that monitors price feeds and triggers a rebalance when a predefined condition is met, such as the price moving outside a buffer zone (e.g., ±5%) from your range's center. The logic module, executed on-chain, calculates the new optimal price range, withdraws the existing liquidity, and deploys a new position with the updated bounds. This process often uses the NonfungiblePositionManager contract on Uniswap V3.

Here’s a simplified conceptual flow for an automated rebalancing contract in Solidity. The rebalance function would be called by the keeper:

solidity
function rebalance(uint256 tokenId, int24 newTickLower, int24 newTickUpper) external {
    // 1. Withdraw all liquidity from the old position
    (uint128 liquidity, , , , ) = nonfungiblePositionManager.positions(tokenId);
    nonfungiblePositionManager.decreaseLiquidity(
        INonfungiblePositionManager.DecreaseLiquidityParams({
            tokenId: tokenId,
            liquidity: liquidity,
            ...
        })
    );
    // 2. Collect accrued fees
    nonfungiblePositionManager.collect(...);
    // 3. Deploy new concentrated position with updated ticks
    nonfungiblePositionManager.increaseLiquidity(
        INonfungiblePositionManager.IncreaseLiquidityParams({
            tokenId: tokenId,
            liquidityDesired: newLiquidity,
            ...
        })
    );
}

Key considerations for your automation strategy include gas costs, which can erode profits from small positions; price oracle selection (Chainlink, Uniswap V3 TWAP) to avoid manipulation; and rebalancing frequency to balance performance against fees. Services like Gelato Network or OpenZeppelin Defender can be used as reliable, decentralized keeper networks to trigger your contract functions. The goal is to create a set-and-forget system that maintains your position's active liquidity, capturing swap fees consistently as the market trends or ranges.

For advanced strategies, you can implement dynamic range calculations based on volatility metrics (like Bollinger Bands) or integrate with lending protocols to use accrued fees as collateral for leveraged positions. Always test your rebalancing logic extensively on a testnet, simulating various price trajectories, to ensure it behaves as expected and doesn't incur excessive gas from unnecessary transactions. Successful automation turns active liquidity provision from a manual chore into a scalable, yield-optimizing protocol.

strategy-nft-composability
CONCENTRATED LIQUIDITY MANAGEMENT

Strategy 3: Using NFT LP Tokens in DeFi

This guide explains how to leverage Uniswap V3 NFT LP tokens as collateral or productive assets across DeFi protocols, transforming static liquidity positions into active financial instruments.

Uniswap V3 introduced Non-Fungible Position Tokens (NFTs) to represent concentrated liquidity positions. Unlike the fungible LP tokens from V2, each V3 NFT is a unique ERC-721 token containing specific metadata: the chosen price range, deposited token amounts, and fee tier. This non-fungibility initially created composability challenges, as most DeFi protocols are built to interact with standard ERC-20 tokens. However, the ecosystem has developed solutions to unlock the capital efficiency of these positions.

The primary method for integrating NFT LP tokens into broader DeFi is through wrapping services. Protocols like Arrakis Finance, Gamma, and Uniswap's own peripheral contracts allow you to deposit your V3 NFT and receive a fungible ERC-20 wrapper token (e.g., vToken) in return. This wrapper token represents a claim on the underlying liquidity position and its accrued fees. Once in ERC-20 form, the liquidity can be used across lending markets like Aave or Compound, provided as collateral for stablecoin minting on MakerDAO, or deposited into yield aggregators.

A practical use case is leveraged liquidity provision. A user could: 1) Deposit ETH/USDC into a V3 position, receiving an NFT. 2) Wrap the NFT into an ERC-20 token via Arrakis. 3) Use this wrapper token as collateral to borrow more USDC on Aave. 4) Deposit the borrowed USDC back into the liquidity position to increase potential fee earnings. This cycle amplifies exposure but requires careful management of health factors and price ranges to avoid liquidation.

When managing these positions, key technical considerations include monitoring the position's active price range. If the market price exits the range, the position stops earning fees and becomes a single-asset bag, which can affect the value of the wrapper token and any loans taken against it. Smart contracts interacting with wrapper tokens must also account for fee accrual mechanics, as the wrapper's exchange rate increases over time as fees compound within the position.

For developers, integrating support involves interacting with wrapper contract interfaces. A basic check of a wrapper token's underlying value might look like:

solidity
IArrakisVault vault = IArrakisVault(wrapperAddress);
(uint256 amount0, uint256 amount1) = vault.getUnderlyingBalances();
uint256 totalValue = (amount0 * price0) + (amount1 * price1);

Always verify the audit status and battle-testing of wrapper protocols, as they introduce additional smart contract risk to your underlying liquidity position.

STRATEGY TYPES

Active Management Strategy Comparison

Comparison of common approaches for managing concentrated liquidity positions, including automation level, capital efficiency, and operational requirements.

Strategy FeatureManual RebalancingRange Order BotsFull-Service Vaults

Automation Level

None

Partial

Full

Capital Efficiency

Theoretical Max

High

Medium-High

Gas Cost Impact

High

Medium

Low

Required Monitoring

Constant

Periodic

Minimal

Typical Performance Fee

0%

10-20%

15-30%

Impermanent Loss Mitigation

Manual

Algorithmic

Dynamic Strategy

Best For

Expert Traders

Active LP Providers

Passive Investors

Example Protocol

Gamma Strategies

Sommelier Finance

code-example-rebalance-bot
AUTOMATED LIQUIDITY MANAGEMENT

Code Example: Rebalancing Keeper Bot

A practical guide to building a bot that automatically rebalances a concentrated liquidity position on Uniswap V3.

Concentrated liquidity on Uniswap V3 allows liquidity providers (LPs) to allocate capital within a specific price range, increasing capital efficiency. However, as the market price moves outside this range, the position becomes inactive and stops earning fees. A rebalancing keeper bot automates the process of moving your liquidity position to a new price range centered around the current market price, ensuring your capital remains active and earning yield. This bot interacts directly with the Uniswap V3 NonfungiblePositionManager contract to manage your NFT-bound position.

The core logic involves three steps: monitoring, decision-making, and execution. First, the bot fetches the current price of the asset pair from an oracle like Chainlink or the pool itself. It then checks if the price has moved beyond a predefined threshold (e.g., 10% outside your position's range). If a rebalance is triggered, the bot calculates a new range around the current price, collects any accrued fees from the old position, removes the liquidity, and deploys it into the newly calculated range. This requires managing the position's tokenId and handling the approval of the underlying tokens.

Here is a simplified code snippet demonstrating the rebalance logic using Ethers.js and the Uniswap V3 SDK. This example assumes you have a position's tokenId and access to a provider and signer.

javascript
const { NonfungiblePositionManager } = require('@uniswap/v3-sdk');
const { ethers } = require('ethers');

async function rebalancePosition(tokenId, newPriceRange) {
  // 1. Initialize contracts
  const positionManager = new ethers.Contract(
    NONFUNGIBLE_POSITION_MANAGER_ADDRESS,
    NonfungiblePositionManager.abi,
    signer
  );

  // 2. Collect accrued fees
  const collectParams = {
    tokenId: tokenId,
    recipient: wallet.address,
    amount0Max: ethers.constants.MaxUint256,
    amount1Max: ethers.constants.MaxUint256,
  };
  await positionManager.collect(collectParams);

  // 3. Decrease and remove all liquidity
  const positionInfo = await positionManager.positions(tokenId);
  const decreaseParams = {
    tokenId: tokenId,
    liquidity: positionInfo.liquidity,
    amount0Min: 0,
    amount1Min: 0,
    deadline: Math.floor(Date.now() / 1000) + 60 * 20,
  };
  await positionManager.decreaseLiquidity(decreaseParams);

  // 4. Redeploy liquidity into new range (simplified)
  // ... (Construct mint parameters using newPriceRange)
}

Key considerations for a production-ready bot include gas optimization, oracle security, and failure handling. Since rebalancing involves multiple on-chain transactions, it can be gas-intensive. Strategies like batching calls or using EIP-1559 fee estimation are crucial. Relying on a secure, decentralized oracle is essential to prevent manipulation. The bot must also handle transaction reverts gracefully and include robust logging and alerting systems. For a complete example, refer to the official Uniswap V3 Periphery repository.

This automation transforms a passive liquidity provision strategy into an active management system. By continuously recentering liquidity around the market price, LPs can maximize fee generation and minimize impermanent loss exposure within their chosen volatility band. The keeper can be deployed on a serverless function (like AWS Lambda) or a dedicated server, triggered by a cron job or price feed event listeners from providers like Pyth Network or Chainlink Data Streams.

CONCENTRATED LIQUIDITY

Frequently Asked Questions

Common technical questions and troubleshooting steps for developers implementing and managing concentrated liquidity strategies.

Concentrated liquidity is an Automated Market Maker (AMM) design where liquidity providers (LPs) allocate capital within a specific price range, rather than across the entire price curve from 0 to infinity. This is implemented by protocols like Uniswap V3 and its forks.

Key differences from a standard V2-style pool:

  • Capital Efficiency: LPs can provide liquidity with up to 4000x higher capital efficiency within a chosen range.
  • Active Management: LPs must actively select and adjust their price ranges based on market conditions; liquidity outside the chosen range is inactive.
  • Multiple Fee Tiers: Protocols offer different fee tiers (e.g., 0.05%, 0.30%, 1.00%) for varying asset pairs and volatility expectations.
  • Composability: Positions are represented as non-fungible tokens (NFTs), enabling more complex DeFi integrations.
conclusion-next-steps
IMPLEMENTATION

Conclusion and Next Steps

You now understand the core principles of concentrated liquidity. This final section outlines how to operationalize your strategy and suggests advanced concepts for further exploration.

To launch your concentrated liquidity management plan, begin by defining your operational parameters. This includes setting your target price range based on market volatility, determining your capital allocation per position, and establishing clear rebalancing triggers. For example, you might decide to rebalance a position when the current price moves outside 20% of your range's center. Automate these rules using a service like Gelato Network or a custom keeper script to execute rebalances and fee collection, minimizing manual intervention and gas costs.

Effective risk management is non-negotiable. Treat each liquidity position as a discrete investment with its own impermanent loss (IL) profile. Diversify across multiple pools (e.g., ETH/USDC, WBTC/ETH) and chains (Arbitrum, Optimism) to mitigate systemic risk. Continuously monitor key metrics: position utilization, collected fees, and divergence from the initial deposit value. Tools like DefiLlama, Apeboard, or protocol-specific dashboards (Uniswap V3 Analytics) are essential for this tracking.

Your strategy should evolve with the market. Consider implementing a dynamic range adjustment strategy based on moving averages or volatility indicators, rather than static ranges. Explore advanced DeFi composability by using your LP positions as collateral in lending protocols like Aave or Euler, though this introduces liquidation risk. Always test new logic and integrations on a testnet (Sepolia, Arbitrum Goerli) before committing mainnet funds.

For developers, the next step is building. Study the Uniswap V3 Periphery contracts and the NonfungiblePositionManager.sol interface to programmatically mint and manage positions. The Chainlink Data Feeds can provide reliable price oracles for your automation logic. Remember that on-chain execution is expensive; optimize your contracts for gas efficiency and consider batched transactions for multiple operations.

The landscape of concentrated liquidity continues to advance. Keep an eye on emerging solutions like Uniswap V4 with its hook system for customizable pool logic, and Gamma Strategies' managed vaults for passive exposure. Engaging with protocol governance (e.g., Uniswap, PancakeSwap) and following research from teams like BlockScience can provide early insights into new models and best practices.

Start small, document your process, and analyze your results. The key to success in concentrated liquidity is not predicting the market perfectly, but systematically managing capital efficiency and risk. Use the frameworks discussed—from range setting to automation—to build a repeatable process that can scale with your confidence and capital.

How to Manage Concentrated Liquidity Positions on Uniswap V3 | ChainScore Guides