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