> ## Documentation Index
> Fetch the complete documentation index at: https://docs.sherwood.sh/llms.txt
> Use this file to discover all available pages before exploring further.

# Concentrated Liquidity

> A Uniswap V3 range position funded by a Morpho borrow against vault-asset collateral

The `ConcentratedLiquidityStrategy` deploys vault capital as one Uniswap V3 liquidity position over a bounded tick range. The position is funded by **borrowing** the vault asset from Morpho Blue against collateral, not by selling into the volatile leg. It is deployed on Robinhood Chain (4663); see [Deployments](/reference/deployments).

<Note>
  **Every counterparty and the market must be allowlisted.** Init checks every counterparty against the vault's `TierRegistry` (`CounterpartyNotAllowed`): the swap adapter, the position manager, the Uniswap factory, Morpho, the collateral token and the pool's other token. The Morpho market id must also be allowed (`MorphoMarketNotAllowed`). A pool or market outside the launch allowlist needs the registry owner to call `setCounterpartyAllowed` / `setMorphoMarketAllowed` first; the CLI preflight names each missing address or id and refuses.
</Note>

## What happens

| Phase | What happens | Who calls |
| - | - | - |
| **Execute** | Pull `collateralAmount` of the vault asset and post it (or its ERC-4626 wrapper) as Morpho collateral. Borrow `borrowAmount` of the vault asset. Swap the declared fraction into the pool's other token. Mint one position over the fixed range. | Governor |
| **Rerange** | Burn, collect and re-mint the approved half-width centered on the current TWAP tick. Never touches the borrow or the collateral. | Anyone, within the approved policy |
| **Settle** | Remove all liquidity, collect, convert the other token back, repay the borrow, withdraw collateral, push everything to the vault. | Governor |

Batch calls:

```text theme={null}
Execute: [asset.approve(clone, collateralAmount), clone.execute()]
Settle:  [clone.settle()]
```

Settlement is all-or-revert. Every step is typed, and a failed settlement is retried. If the proceeds cannot cover the debt, settlement reverts `ProceedsBelowDebt` and nothing moves.

## What the contract enforces

The agent picks the band, the size, the target LTV and the swap split off-chain. The contract enforces only what it can check from live venue state. Each check fails the proposal at init, not the batch at execute.

| Check | Error |
| - | - |
| The vault's registry resolves and allows the swap adapter, position manager, Morpho, the collateral token, the Uniswap factory and the pool's other token | `TierRegistryUnresolved`, `CounterpartyNotAllowed` |
| The Morpho market id is allowlisted on the registry | `MorphoMarketNotAllowed` |
| The factory names the pool as canonical for its own token pair and fee | `PoolNotFromFactory` |
| The pool quotes the vault asset | `PoolAssetMismatch` |
| The market lends the vault asset, against the vault asset or an ERC-4626 wrapper of it | `LoanAssetMismatch`, `CollateralAssetMismatch` |
| The market exists and can fund the borrow | `MarketNotCreated`, `BorrowExceedsLiquidity` |
| LTV sits at least 5 percentage points below the market's LLTV (`MIN_LLTV_BUFFER_BPS` 500) | `LtvInsideLiquidationBuffer` |
| The minted liquidity is at most 10% of the pool's active liquidity (`MAX_POOL_SHARE_BPS` 1,000) | `PositionExceedsPoolShareCap` |
| The ticks are ordered and aligned to the pool's tick spacing | `InvalidTickRange` |
| Spot is within the configured bound of the TWAP (at most 10%, `MAX_TWAP_DEVIATION_BPS`; window at least 300 s) at every mint, rerange and settle | `SpotOutsideTwapBound` |
| `settleSlippageBps` is within 50 – 1,000 bps | `InvalidBound` |

A bad but in-bounds proposal is still possible. Voter and guardian review exists for that.

## Reranging

The rerange policy is fixed at init. Voters approve the policy, not each resulting range. `rerange()` is **permissionless** once the proposal is `Executed`, price has travelled the trigger fraction through the half-range, the minimum interval has passed, the count is below the cap and the counterparties are still allowed. Each rerange costs a swap and realized divergence loss, so the cap (at most 20, `MAX_RERANGE_LIMIT`) is the binding control. At the cap the position stays in its last range and remains settleable.

## Tunable after execute

One value: the **settle deadline**. `settleSlippageBps` is set at init within 50 – 1,000 bps and is immutable afterwards; passing a different value to `updateParams` reverts `ImmutableParam`. The range policy, the swap route and the sizes are fixed.

## Propose

```bash theme={null}
sherwood strategy propose concentrated-liquidity \
  --vault 0x... \
  --pair-token WETH --pool-fee 100 \
  --market-id <bytes32 market id> \
  --collateral-amount 1000 \
  --borrow-amount 800 \
  --range-pct 5 \
  --name "USDG/WETH range" \
  --duration 7d
```

The CLI runs every `_initialize` check before sending anything, including `CounterpartyNotAllowed`, `MorphoMarketNotAllowed` and `CollateralAssetMismatch`. It computes the expected liquidity from V3 liquidity math at spot and the swap split the range needs. Required: `--market-id`, `--collateral-amount`, `--borrow-amount`, a pool (`--pool`, or `--pair-token` with `--pool-fee`) and a range (`--range-pct`, or `--tick-lower` with `--tick-upper`). The full flag list is in [Strategy commands](/cli/strategy-commands#concentrated-liquidity).

The template is uncertified at launch, so the proposal prices at full notional on both legs for [coverage](/protocol/governance/coverage) and the [proposer bond](/protocol/governance/proposer-bond).

## Risk notes

* **Liquidation.** Nothing relieves LTV between execute and settle. Reranging moves the LP band, never the borrow. The 5-point LLTV buffer is the only on-chain control.
* **Divergence loss.** The position loses against holding when price moves, and each rerange realizes that loss.
* **Pool depth.** The 10% pool-share cap is measured against liquidity at the current tick, not the whole pool.

## Addresses

The `ConcentratedLiquidityStrategy` template (`CONCENTRATED_LIQUIDITY_TEMPLATE`), Morpho Blue, the Uniswap V3 factory and position manager, and the `UniswapSwapAdapter` on Robinhood Chain are listed on [Deployments](/reference/deployments). Allowlisted counterparties and market ids are read from `TierRegistry`.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.