Pool account (up to 16 inline bins, no per-bin rent). The keeper’s book manager keeps every book pinned to NAV with a shape derived from live volatility. Because the protocol is the sole LP and the keeper repositions before external arbitrage can profit, the reposition itself captures what an arber would otherwise take.
The reposition loop
Every 30s, per (market, side):- Feed the vol state. One NAV sample per cycle goes into the spread engine - the same series the oracle pushes. At boot the state seeds from 60 days of Pyth Benchmarks history, so floors are warm from the first cycle even right after a deploy.
- Check the drift gate. The book only re-pins when
|NAV - base| >=the per-market gate - QQQ/SPY/XAU 20bps, VXX 40bps. The gates were swept empirically: the optimum sits just below each market’s toxic-arbitrage line (first funded bin plus the paired-arb fee hurdle). Tighter gates burn transactions repositioning a book nobody can exploit; looser gates donate depth. - Compute the shape. Half-spread = the model-free stack (realized-q90 ratchet, slow auto-floor, oracle confidence, static floor - see the keeper concept page). The inner
round(half_spread / step)bins stay empty; remaining liquidity distributes geometrically outward. The protective skew then widens the trend-adverse side only - in an uptrend the asks move out (don’t sell cheap into a rally) while the bids never tighten below the symmetric shape. The short book mirrors automatically: its own price series isK / L, so its skew signal flips sign. - Post it.
set_pool_shape(base = NAV, asks, bids)- sums are validated against the pool’s vault balances on-chain.
Inventory: refill, trim, bid cap
pool_swap fills only from pre-funded bins, so flow reshapes inventory and the keeper closes the loop each cycle - in both directions:
- Refill (drained asks). One-directional buying converts ask synth into bid cUSDC. When a side’s ask value falls below half its bid value, the keeper sweeps surplus bids to the CLP vault, mints fresh L+S pairs from it (
vault_mint_pairs- delta-neutral by construction), and funds both sides’ ask vaults in one pass. The reshape that follows is forced, so the new inventory enters the book immediately. - Trim (bloated asks). Ask depth beyond 1.5x the bid side’s value is fake exit capacity and standing arb bait - it sweeps back to CLP custody (
pool_sweep_synth), where it provisions committed orders instead. - Bid cap. Standing bid cUSDC is deliberately lean (~$5k per side,
CLMM_BID_TARGET_USD): idle bids forgo lending carry, and large sells don’t need them - they route through the committed venue, which the keeper provisions at settlement. Excess bids sweep to the CLP vault.

