Compounding without keepers
The fee-to-liquidity loop with no keeper network, no vault, no performance fee — volume is the only operator.
Concentrated liquidity had a famous gap: V3-style positions earn fees, but never reinvest them — someone must collect, rebalance the amounts, and re-mint. A whole industry of keepers and auto-compounding vaults grew inside that gap, each adding a fee and a trust assumption. The hook closes the gap where it opened: in the pool itself — no keeper, no vault, no performance fee, no one to pay for growth.
The gap, and the industry it spawned
An LP position's fees sit outside the position. Left alone they are idle inventory — earning nothing, compounding nothing. The classical fixes all import an operator:
| fix | who operates it | what it costs |
|---|---|---|
| do it yourself | you, on a schedule | gas per round trip, attention forever, and every missed week is growth foregone |
| keeper networks | bots paid a bounty per execution | the bounty — plus the job simply not running when it isn't profitable for the keeper |
| auto-compounding vaults | a protocol wrapping your position | typically a performance fee on your yield, a new contract to trust, often a new token to hold |
Note the shape: in every case the compounding is someone's business. It happens when it pays them, and it costs a margin that comes out of your growth.
The hook's answer: compounding as a side effect
The program's position compounds because trading happens — full stop. The auto-harvest fires inside a swap once pending fees pass the minimums; the compound share of both sides becomes the LP budget; the engine re-mints that budget into the position at the pool's live price, in the same transaction. Nobody is paid to do this, because nobody does it.
Two details make this keeperless loop actually safe. The gas budget: an auto-run that would be too heavy reverts atomically — fees stay pending, the swap completes untouched, and the pool gravitates to the (optional, full-gas) manual harvest(key). The carry: minting needs both tokens in the ratio the current tick dictates, so the unmatched remainder is never sold, never donated to the market as slippage — it waits, and it compounds next round. The exact math lives in The compounding math.
No arbitrageur in the loop
This matters more than it looks. Vault-style compounders often swap the fee inventory to rebalance it before minting — and every swap pays the fee tier and crosses the spread, leaking a slice of your yield to the market (and to whoever arbitrages the vault's predictable flow). The hook's engine never swaps to rebalance: it mints what the budget allows at the live price and carries the rest. Growth costs zero spread, zero arbitrage leakage, zero rebalancing fee — the only thing between the fee and the position is a floor division.
Growth that survives everyone
Because the loop's only input is volume, it inherits volume's indifference to the project's org chart. A live operator can tune compoundShareWad up and down as strategy changes (see Compound strategies); a surrendered program compounds at the frozen share forever. Either way, the position's growth is geometric in cumulative volume — each harvest deepens the liquidity that earns the next harvest — and no one's continued employment is a term in that equation.
Combine this chapter with the last one and the full picture appears: a position that harvests its own fees, deepens its own liquidity, fuels its own buyback pot and burns its own supply — owned, in the surrendered limit, by nobody at all. Not a product that manages your LP: an LP that manages itself.
Keep reading
FAQ
How is this different from an auto-compounding vault?+
A vault is a wrapper: a new contract you deposit into, usually charging a performance fee, run by a protocol that must keep operating. Here compounding is native to the pool's own program — no wrapper, no deposit, no fee on your growth, and no protocol whose shutdown ends the service.
Why doesn't the engine swap fees to rebalance them before minting?+
Rebalancing swaps pay the fee tier and cross the spread — a permanent leak from your yield, and a predictable flow for others to trade against. The engine instead mints the maximum the two-sided constraint allows at the live price and carries the remainder, so growth costs zero spread.
What exactly is the carry and is it ever lost?+
Minting needs both tokens in the ratio the current tick dictates; whatever doesn't fit that ratio is the carry. It stays credited to the program, is first in line at the next compound, and appears in the views — nothing is ever sold off, donated to the market, or orphaned.
What if a compound would be too gas-heavy inside a swap?+
The auto-run operates under a hard gas budget in its own frame: if it would exceed it, it reverts atomically — fees stay pending, nothing half-executes, and the carrying swap completes untouched. The manual harvest(key) path with full caller gas picks it up.
Does compounding stop if the operator surrenders?+
No — surrender freezes the compoundShare at its current value and the loop keeps running on those terms forever. Volume remains the only input; the org chart was never part of the equation.