Icebergloading…

Only a fraction λ of the pool can be arbitraged in any block. The rest earns in Morpho.

Iceberg implements the Partially Active AMM (Ko 2026) as a 1inch Aqua position and a Uniswap v4 hook with one shared kernel. A fee-aware keeper picks λ from recent real prices, because at high fees partial activity stops helping.

Loss to arbitrage saved, real 21 Sep replay
–
vs a real plain v4 pool, 1,440 min, 5 bps
λ now (keeper)
–
waiting for keeper
Liquidity, both venues
–
tradable this block: –
Earning in Morpho
–
Steakhouse USDC · Moonwell ETH vaults
Per-block splits on-chain
–
0 v4 swaps · 0 Aqua fills · 0 shared · 0 rebalances
Live Base Chainlink
–
read live

Two venues, one kernel

Uniswap v4 hook

–

1inch Aqua position

–

Fee-aware keeper

Why λ = …

the keeper publishes its first decision within a minute

Last keeper tick

no keeper tick yet

Real replay: 24 hours ending 21 Sep 2026 20:31 UTC

LP loss versus a perfectly rebalanced portfolio

ETH $… → $… (+6.24%). Every minute a rational arbitrageur trades each venue to the real Coinbase close, against the real Uniswap v4 PoolManager and official Aqua on Base. Same 5 bps fee and starting reserves for all.

What it shows

  • λ = 100% reproduces the real plain Uniswap v4 pool (difference –%).
  • The v4 hook and the 1inch Aqua position lose exactly the same at the same λ: one kernel, two venues.
  • At 5 bps, exposing half the pool cut the loss –%, and the keeper tunes λ to each pool's fee.
REPLAY_MINUTES=1440 BASE_RPC_URL=https://mainnet.base.org forge test --match-contract Replay21Sep -vv

Trade against both venues

size $

On-chain activity

no activity yet

API

curl -s -X POST "localhost:8788/api/swap?venue=v4&side=buy&usd=50" | jq
responses appear here