Search docs
Search vfat.io documentation

Auto-Rebalance

Rebalancing a concentrated liquidity (CL) position withdraws its liquidity, swaps tokens as needed, and creates a new position around the current price. An out-of-range position holds only one of the pool’s tokens; optional negative buffers can also trigger a rebalance while a position is still in range.

Auto-Rebalance checks enabled positions against their configured trigger range, cutoff prices and delay. When a position qualifies, it requests swap routes and simulates a rebalance. Execution must satisfy your dust, slippage and price-impact limits; unsuccessful attempts are retried according to the automation status.

Normally, automation waits until its fee can cover the estimated gas cost. There is no fixed dollar minimum across chains: the required position size depends on gas prices, the pool fee tier and the transaction. Check the estimate shown in the settings. Eligible Sickles with prepaid gas can pay for an otherwise uneconomic execution from that balance, within their configured limits.

Choose Recenter or Custom to control where the new range lands. Both modes keep Auto-Rebalance active on the replacement position with the same settings. Tick spacing and rounding mean the displayed percentages may differ slightly.

Enabling Auto-Rebalance can be done in two places: when opening a new position, or in the Rebalance tab of an active CL position (whether in range or not).

Auto-Rebalance settings, with the rebalance mode, reward handling, buffers, cutoff prices, delay and transaction limits

Required configuration

Rebalance mode

Recenter places the configured range below and above the current price, aligned to the pool’s tick spacing. Existing positions keep this mode unless you change it.

Custom preserves the old position’s width and follows price. Set a percentage offset from the boundary price crossed: the new upper range boundary when the displayed price rises, and the new lower range boundary when it falls. Small offsets keep price near that boundary, so you can move the range a little without moving price deep inside it. Token swaps may still be required; the amount depends on market price and the position’s token balances.

The percentages are linked by default. Editing either input updates both directions. Click the active chain icon between the inputs to set different percentages. Saved settings with different percentages open unlinked. Linking them again uses the most recently edited percentage, or the rising-price percentage if neither has been edited.

0% places price just inside the chosen boundary. Increasing the offset moves price farther inside; negative offsets leave price outside that boundary. Percentages follow the same price-range convention as the other settings and approximate price movement. The pool determines the allowed increments. For a pool with 2% increments, valid offsets include 0%, 2%, 6% and −2%.

The live previews show total range width, the old and new ranges as rectangles, and a line marking price. The bracket measures your percentage offset from the chosen boundary. Flipping the displayed price swaps the rising and falling inputs and previews. Existing saved settings retain their on-chain behavior.

Offsets as large as the range width put price outside the opposite boundary. Buffers and the market price at execution determine how far the range moves.

Buffers, cutoff prices, delay, reward handling and transaction limits also apply to Custom. Negative buffers can trigger a shift before the old range is crossed. The contracts verify the exact new range and reject unchanged ranges, ambiguous overlapping triggers and repeat cycles within the same tick-spacing interval. A rejected rebalance waits for conditions to change; it does not fall back to Recenter.

Custom is available when the selected chain and position type have a verified deployment. As of September 13, 2026, the current deployments support it on 35 of vfat.io’s 36 configured chains; ZetaChain needs a contract upgrade. Older Sickle automation generations may require the migration shown in the app. Enabling the mode requires saving the position’s settings and the usual automation consent.

Rewards

Accumulated rewards can either be compounded into the new position or harvested to your wallet, optionally converted to a different token. Reward handling can carry a separate harvest or compound fee in addition to the rebalance fee; review the fees shown with your settings.

Dust, slippage and price impact

Dust: after the swap and liquidity deposit, small token amounts may be left over. This leftover (“dust”) is sent to your wallet. Set a maximum dust % (initial default 1%, configurable in App Settings); if a rebalance would exceed it, the transaction cannot proceed with that route.

Slippage: the % difference between the expected and executed swap price. If price moves more than your slippage tolerance between quote and execution, the rebalance is skipped and retried.

Price impact: the aggregator-estimated % price difference between the asset sold and bought. If it exceeds your threshold, the rebalance is skipped and retried.

The rebalance itself carries a fee based on the pool’s own fee tier: 0.01% of position value for pools with a ≤0.05% fee, 0.03% for ≤0.3% fee pools, and 0.05% for higher-fee pools. This is the same rate as a manual rebalance.

Advanced configuration

Buffer and cutoff settings define where Auto-Rebalance should act. Rebalance delay defines how long the trigger must persist. Without these settings, the price trigger is simply leaving the position’s range; execution still depends on fees, gas and your transaction limits.

Buffer

Adds a buffer on either side of the position range in which rebalancing is held off. For a position in the 3000–3300 range, a 1% buffer on the lower side means no rebalance while price is between 2970 and 3000; a 1% buffer on the upper side means no rebalance between 3300 and 3333. Buffers are relative, so a 1%/1% buffer stays 1%/1% after the position is rebalanced.

Negative buffers are also allowed: a −1% lower buffer in the example above means rebalance is held off between 3030 and 3300, but triggers once price drops below 3030, even while technically still in range.

Cutoff

Fixed prices outside which Auto-Rebalance will not execute. Continuing the example, a lower cutoff of 2700 prevents rebalancing below 2700; an upper cutoff of 3600 prevents it above 3600. Cutoffs stay fixed across rebalances and may be rounded to the nearest available tick. Crossing a cutoff doesn’t close the position or turn off its automation setting: rebalancing can resume if the price returns within the cutoffs and the other conditions are met.

Rebalance delay

Set Rebalance delay (minutes) from 0 to 255. The position must remain outside its configured rebalance range for that many continuously observed minutes before it qualifies. Returning inside that range resets the timer. A delay of 0 adds no waiting period.

Putting it together

For the example 3000–3300 position, positive 1% buffers and cutoffs at 2700 and 3600 create two trigger regions: between the lower cutoff and lower buffer (2700–2970), and between the upper buffer and upper cutoff (3333–3600). Rebalancing still waits for any configured delay and must pass the execution checks.

See also Auto-Exit if you’d rather close a position automatically at a price than keep rebalancing it.