# FungibleRange > A concentrated position with fungible shares, whose band widens every time it is forced to move. A production Uniswap v4 hook. Source: https://github.com/nirholas/fungible-range. Part of the HookForge catalogue: https://hookforge.pages.dev ## How it works Fungible wrappers around concentrated liquidity are old: Gamma, Arrakis and the Alpha Vaults have run them for years. They all share a shape, and a defect that comes with it. The shape is a vault that sits outside the pool, holds a position, and is moved by a keeper. The defect is that the moving is either discretionary, in which case depositors are trusting a manager, or mechanical, in which case it is predictable. A predictable rebalancer is a standing invitation. If liquidity re-centres whenever the price leaves a fixed band, anybody can compute where that happens, push the price there, and trade against a position they knew in advance was about to move. The vault pays for the rebalance and the searcher takes the difference. Making the band larger helps once and then the same attack runs at the new boundary. This band is not fixed. Every rebalance widens it, and quiet time narrows it back toward its base. So an attacker who forces a move has, by forcing it, made the next move harder to force and the position they wanted to pick off less concentrated. Run the attack repeatedly and it damps itself; stop, and the band tightens again on its own. The width ends up tracking realised volatility, which is what a manager was being trusted to do by hand, computed from the pool's own ticks rather than from anybody's judgement. There is no keeper. Rebalancing happens inside whichever swap pushed the price out of band, which is also the swap that had a reason to. There is no manager, no allowlist and no parameter anybody can change after deployment. ## Prior art Gamma, Arrakis, Charm's Alpha Vaults and Steer wrap concentrated positions in fungible shares and move them with keepers, discretionary in some cases and on a fixed band in others. Uniswap v4 auto-rebalancing hooks remove the keeper by re-centring inside a swap. Volatility-sized ranges appear in academic market-making work and in some vault heuristics, always driven by an external estimate. Making the band's width a function of how often the position has been forced to move, so that attacking the rebalance widens the band that made the attack worth running, is the contribution here. ## Where it does not help The position is a single band, so this is a market maker with one opinion rather than a strategy; a pool whose price gaps a long way in one move leaves the band behind and re-centres at the new level, realising the loss exactly as any concentrated position does. Widening protects the rebalance, not the inventory. Depositors also share one position, so a rebalance's cost falls on everybody holding shares at that moment, including somebody who deposited a block earlier. And a pool with no flow never rebalances at all, since the trigger is a swap; the band is only as current as the pool is busy. ## Facts Slug: fungible-range Contract: FungibleRangeHook Callbacks: afterSwap, afterInitialize Parameters: none Dynamic fee required: no ## Caveats - Unaudited. - A deployment with status "deterministic" is a mined CREATE2 address with no code at it yet. Never present one as live.