The passive LP gap in Uniswap is too narrow to move capital on its own. Sadeghi, Liu, Moallemi, Wan and Zhu measure a real difference between pool-level and passive LP markouts, concentrated in Ethereum's low-fee v3 pools and amounting to a few tenths of a basis point. Their abstract says passive LPs "tend to" underperform aggregate pool-level measures. The conclusion says they "systematically" do. Their tables give me reason to resist that stronger word, even as the measurement toolkit deserves attention.

How the markouts work

When Binance moves, arbitrageurs trade against a stale pool price. Loss-versus-rebalancing formalizes the resulting loss. Uniswap v3 and v4 concentrated liquidity adds another way for LP outcomes to diverge: an LP can mint a tight position just before a swap, then burn it just after and collect fees with little exposure. At the extreme, that is JIT liquidity. If those active LPs get the benign flow, capital left in place faces a worse mix than the pool average suggests.

The authors measure each swap from the pool's side, valuing tokens in minus tokens out at the Binance mid 15 seconds later. Fees count; gas does not. A positive markout favors the LP. They estimate the passive share in two ways.

LIFO subtraction matches mints and burns within a position identified by address, pool and tick range, using a last-in-first-out stack. Liquidity opened and closed within 20 seconds is active. Each swap's markout is apportioned according to that active liquidity's in-range share, leaving the rest to passive LPs. The infinitesimal LP is different: it is a hypothetical full-range position with unit liquidity. Its token flows come from pool prices before and after each swap; sandwich legs and moves above 20% are excluded.

Allium event logs cover Ethereum, Arbitrum and Base from February 1 to November 30, 2025. The sample has 5 v2, 17 v3 and 16 v4 pools in WETH, USDC, USDT, WBTC and cbBTC pairs, each above $10M of volume. v2 is the control. Base USDC-WETH 30 bps records 20.822100 bps overall and 20.822080 passive, with 0.00% active volume. Ethereum v3 looks different. USDC-WETH 5 bps records −1.15 bps overall against −1.51 passive; USDT-WETH 5 bps moves from −0.91 to −1.31.

Why Ethereum's 5 bps gap stands out

Only 1.36% of volume in that USDC-WETH pool is identified as active, or 1.30% in another table. The arithmetic here is ours, rather than a figure from the paper. For that 1.36% slice to lift the average by 0.36 bps, active liquidity would have earned roughly +25 bps per unit of volume, against −1.51 for passive. On a per-dollar basis, the 25 bp edge is large.

Base USDC-WETH 5 bps has the largest v3 active share, at 3.56% (3.82% in another table), yet its gap is about 0.03 bps. The same calculation puts the Base active slice at roughly 0 bps against −0.71 for passive. Its per-dollar edge is under 1 bp, beside about 25 bps on Ethereum. Active LPs capture far more per dollar in the Ethereum example despite their smaller volume share. The authors connect that result to Ethereum's public mempool, where an LP can observe flow before inclusion. That explanation fits the pattern.

The +25 bps figure is gross. Markout excludes "gas, liquidity-management, and capital costs and inventory revaluation outside the horizon." The authors describe those costs as second-order for passive positions and material for active ones. They also acknowledge that matching at the address level leaves the identified active share as a lower bound.

Arbitrum v3 USDT-WETH 5 bps leaves a loose end. Both LIFO and exact matching show 0.00% active volume, yet their passive markouts are −0.449636 and −0.550026 bps. The active share rounds to zero under both methods. LIFO changes the markout only in the fifth decimal, making the 0.1 bp shift under exact matching hard to reconcile with the table. We found no explanation.

Who counts as passive?

The estimators stand in for different LPs. LIFO's residual includes every position that lasts beyond 20 seconds, even a narrow, long-lived range. The infinitesimal LP holds a full-range position, with flows scaled to each swap's price move rather than its dollar size. That construction gives more weight to price-moving arbitrage and less to flow handled by deep concentrated liquidity. The authors concede that finite-width passive LPs face greater adverse selection per unit of liquidity, and treat the infinitesimal estimate as a floor on markout cost. Sandwich swaps also separate the measures: the infinitesimal calculation drops them, while LIFO retains them.

The paper says the estimates agree closely because, for almost all pools, their difference is smaller than the infinitesimal confidence interval's width. That description holds, though the sample's largest pool by volume is an exception. Arbitrum v3 USDC-WETH 5 bps has $61.13B of volume and reads −0.77 under LIFO versus −1.67 under the infinitesimal method. Its interval is [−1.95, −1.4]: the 0.90 bp gap exceeds its 0.55 bp width. Elsewhere, wide intervals help the methods appear to agree. Ethereum v3 USDC-WBTC 30 bps reads 0.21 bps under LIFO and 9.91 under the infinitesimal method, with an interval of [−1.72, 21.54]. Ethereum v4 USDT-WETH 30 bps reads −3.04 against −7.37.

No tested reason to move yet

The fee-tier levels deserve a look. Ethereum v3 USDT-WBTC 30 bps has a passive markout of +2.52 bps and an interval of [0.51, 4.53]. Among the four Ethereum v3 30 bps pools, only its interval excludes zero. Two Ethereum v4 pairs reverse the ranking: USDT-WETH is −3.04 at 30 bps versus −1.76 at 5 bps, while USDC-WBTC is −2.02 versus −1.28. The appendix calls higher fees better "often, but not uniformly."

Evidence for the gap itself is harder to pin down. In the headline pool, the passive interval [−2.00, −1.02] contains the overall −1.15. Because both estimates use the same swaps, overlapping intervals are the wrong comparison. The authors derive a standard error in the appendix for the overall-minus-passive difference that accounts for the correlation. The appendix says it reports D ± 1.96 SE(D); we did not find those intervals in any table or figure. It also says day-block bootstrap intervals are narrower than the analytical intervals. Those bootstrap intervals concern passive LIFO levels across v3 pools. At the 15-second horizon, the methods agree closely in liquid pools, while the striking narrowing occurs mainly in the Ethereum 1 bps pools. That gives little reason to expect the Ethereum 5 bps difference test to pass.

The chain-wide wording needs similar care. Base v4 USDC-cbBTC has 84.08% active volume, and passive does better there: −0.37 against −0.91 overall. On Arbitrum v4, USDT-WETH moves from −1.716 to −1.973 and USDT-WBTC from −2.471 to −2.789, gaps of 0.26 and 0.32 bps. Ethereum v3 5 bps gaps are 0.36 for USDC-WETH, 0.40 for USDT-WETH, 0.45 for USDC-WBTC and 0.45 for USDT-WBTC. The Arbitrum v4 gaps are slightly smaller, though of the same order. The authors attribute the high-active-share v4 outliers to pool-specific strategies and call the chain pattern "descriptive rather than causal." In Base cbBTC, passive beats the aggregate by 0.55 bps; that result sits awkwardly with the conclusion's "systematic". The Ethereum 1 bps pools are omitted from the gap plots. Their v3 sandwich volume is 55.94% and 52.60%, and their v3 gaps of 0.47 and 0.50 bps exceed the 5 bps gaps. Their LIFO intervals reach [−18.38, 18.38].

We could not rerun the analysis. It requires ordered Mint, Burn, Swap and ModifyLiquidity logs alongside second-level Binance mid-quotes. We hold neither the on-chain events nor sub-minute data.

One number would change my view: the difference interval the appendix says it reports, printed for the Ethereum 5 bps pools. If it excludes zero there, the claim stands for those pools.

The tier case rests on levels instead. Ethereum v3 USDC-WETH passive is −0.87 bps at 30 bps versus −1.51 at 5 bps.