On-chain investigationUniswap v313 October 2026

We followed 12,426 Uniswap v3 positions from deposit to exit. The median one earned nothing

Providing liquidity on Uniswap v3 is sold as a yield. We matched every deposit to its withdrawal on Ethereum's busiest pools for a full quarter, valued each one in dollars, and compared it with the laziest play there is: buying both tokens and doing nothing. The crowd broke even. The machines did not.

At a glance
We matched every liquidity deposit to its withdrawal on the eight busiest Uniswap v3 pools on Ethereum, for 91 days straight. Slightly more than half of the 12,426 closed positions ended worth more than simply holding both tokens. The middle position earned nothing over holding. The pools paid $5.4M in fees on $1.06B of deposits, and four addresses took91% of every dollar of profit. The second-biggest liquidity placer was a sandwich bot, and its profit contained almost no fee income at all.
+0.01%
Median return vs just holding
$5.4M
Fees paid on $1.06B of deposits
4 addresses
Took 91% of all LP profit
90%
Win rate of the MEV bot's deposits
Key findingsEach line has its own share link
  1. 91%

    Of all profit on the eight busiest Uniswap v3 pools went to four addresses. The other winners shared the scraps.

  2. 90%

    Win rate of 828 deposits run by a sandwich bot, on $190k median size. Its fees: 63 cents per position.

  3. 642%

    Realized fee APR on WPRL/USDT, the highest in the sample. 80% of its LPs still ended worse than holding.

  4. 67%

    Of ranges were fully crossed by price within 7 days of deposit, counting only ranges that started in play.

  5. 79%

    Win rate of the best human-sized profile: a range wider than 172%, on a major pair, held 1 to 4 weeks.

01 · The betWhat a liquidity provider is promised, and what we measured

The pitch is simple. Deposit two tokens into a pool. Every swap in the pool pays you a fee. Since v3 arrived the pitch has a second half. Put your dollars in a narrow price range and the fees multiply. The catch is called impermanent loss. Every LP page keeps it in small print below the APR.

We checked the pitch against the chain. Bitquery indexes every Ethereum block, so we followed each position on the eight busiest Uniswap v3 pools from the moment it was placed to the moment it was pulled, valued both ends in dollars, split fee income from price effect, and compared the result with doing nothing. Doing nothing means buying both tokens and holding them. An LP the market beats that way has a hobby, and a costly one.

The pools themselves set the mood before any return is counted. More money left these pools than arrived, every single day of the window. The event record shows exits tracking removals almost one for one, so the money that leaves is real money, and Uniswap v4 ran close to six times more liquidity events than v3 over the same days. v3 is not being left behind. Mint activity actually rose through the window. It has stopped growing, and its deposits are being cashed out.

More leaves than arrivesdaily liquidity events, the eight busiest Uniswap v3 pools on Ethereum
Line chart of daily mints, burns and Uniswap v4 liquidity events over 91 days. Burns sit above mints every day; v4 events sit far above both.
New positions (mints), positions removed (burns) and Uniswap v4 liquidity events, July 15 to October 13, 2026. Burns outran mints on all 91 days. Collects, which move money out of the contract, tracked burns almost one for one.

02 · A coin flip, minus the funWhere a range sits decides most of its fate

A shade over half the closed deposits ended ahead of doing nothing, and the middle one earned a rounding error. The fee pot was real, and the wins exist. They go elsewhere than the middle of the field, and the first thing that decides where a deposit lands is the width of its price range.

Within a percent of the current price, the win rate is the highest in the data. It is also a game no person can play: those deposits live about six minutes. They are just-in-time liquidity, JIT for short. Bots place them in the same block as a big trade and pull them once the trade is done. For a few minutes the bot is the liquidity, and it wins without collecting anything worth calling a fee. By the time a human tx confirms, the trade that paid for the range is gone.

At the other end, wide ranges win about two in three. They earn less per dollar, and they survive. The middle is the trap. Ranges between one and ten percent of price had the worst win rate of any group, worse than the tight bot ranges and worse than the wide patient ones. That band carries enough exposure to eat a loss to price drift, and not enough width to wait the move out. It is also where a lot of human money sits. It feels like a safe middle ground.

The U-shape of luckshare of deposits that beat just holding, by price-range width
Bar chart of win rate by range width: 76 percent for ranges within 1 percent, 47 percent for 1 to 10.5 percent, rising again to about 65 percent for wide ranges.
12,426 closed positions, 91 days. Within 1%: 76% win, median hold six minutes. 1 to 10.5%: 47% win, the worst bucket. Above 172%: about two in three win. The dotted line marks a coin flip.

Full range, the v2-style set-and-forget deposit, is close to extinct. Almost nobody supplies liquidity the old way anymore.

Where the mints actually wentshare of 40,470 mints by range width, 30 days
Horizontal bar chart: 38 percent of mints in 10.5 to 172 percent ranges, 31 percent in 1 to 10.5 percent, 19 percent within 1 percent, 5 percent full range.
Half of all mints sit in ranges between 1% and 172% wide. Full range accounts for 5% of mints. The experiment worked, in the sense that almost everyone now concentrates.

Who those concentrators are decides everything else.

03 · Who actually winsA sandwich bot, three other addresses, and everyone else

The pools record the contract that placed each deposit, and that split tells the story before any return does. Three quarters of mints arrive through the NonfungiblePositionManager, the standard path a human uses. The rest come from contracts acting on their own. One of them is the successor of jaredfromsubway.eth, the sandwich bot made famous for front-running memecoin traders. EigenPhi's write-up traces the lineage. It placed thousands of direct mints, second only to the retail path itself.

Who calls mintshare of 40,470 mints by calling contract, 30 days
Horizontal bar chart of mints by caller: PositionManager 74 percent, one MEV bot 7 percent, two unlabeled contracts, and 149 others.
74% arrive through the PositionManager, the retail path. The next biggest caller is the jaredfromsubway successor bot, with 2,758 direct mints in 30 days. Two further unlabeled contracts round out the top.

The bot's deposits won nine times in ten. The median win was pocket money on a six-figure deposit. It held for minutes and paid less than a dollar of fees. Its profit held almost no fee income. That is the tell. This is a trader parking stock inside its own sandwich route and pulling it out before anyone else can touch it. On these pools, supplying LP and sandwich attacking have merged into one activity.

Around the bot, the size ladder is steep. The smallest deposits win rarely. The largest win often. The rung between is a coin flip. Part of that gap is gas. It eats a serious share of a small deposit before the price moves at all. Part of it is placement: contracts that call the pools directly land their ranges within a few hundredths of a percent of price. Ranges on the retail path scatter ten times wider. Standing in the right spot is a skill, and it travels with wallet size.

Bigger wallets win moreshare of deposits that beat just holding, by position size
Bar chart of win rate by position size, rising from 37 percent under 100 dollars to 73 percent between 100k and 1M.
Under $100: 37% win. $100k to $1M: 73%, the strongest cohort, with $28.7M net. Above $1M the win rate holds but one whale loss pushed the bucket's total negative.

And the ceiling of the whole market looks like this:

Four addressesshare of all LP profit taken, by top of the distribution
Bar chart: top 1 percent of positions took 91 percent of profit, top 5 percent took 99 percent, top 10 percent took all of it.
Gross profit across all winners came to $51.7M. The top 1% of positions, 124 of them belonging to four addresses, collected 91% of it. The other 6,700 winners shared the rest.

04 · The APR is the baitThe top-paying pool was the worst one to be in

Every LP page ranks pools by fee APR. WPRL/USDT, one of the busiest new pairs of the quarter, paid the top realized APR in the sample by far. It also sent four of every five of its providers home worse than plain holding. The left panel shows why: the token rose more than fourfold over the window, and a provider on a rising token keeps selling the rising side of the pool. Every LP in that pool was short the pump. The market charged them for it.

Paid like a casino, short the pumpWPRL price, and fee APR against win rate across all eight pools
Left: WPRL price rising fourfold. Right: scatter of fee APR against win rate, showing the highest APR pool at the lowest win rate.
WPRL rose from $0.41 to $1.72 over the window while paying a 642% realized fee APR; 80% of its positions still lost to holding. HLX/USDC paid 4.7% in fees and 85% of its providers won, because the token oscillated and paid whoever held the middle.

This is the plain version of impermanent loss. Supplying liquidity is a bet that price goes sideways. Get a trend instead, and no fee rate saves you. The pools that treat their LPs best are the boring ones. Price crosses the middle a hundred times, and everyone gets paid for standing there. You can query all of these pools yourself through the DEX data API.

PoolHow its providers fared, 91 days
HLX/USDCThe friendliest pool. 85% of positions beat holding; the token oscillated and paid the middle. Fee APR: 4.7%.
WETH/USDC (both fee tiers)The blue chips. About 69% beat holding, on the deepest deposits in the sample. Fee APR: 30%.
USDT/WETHThe whale pool. 55% beat holding, with a net positive total carried by a handful of large deposits. Fee APR: 45%.
USDT/USDCThe stable pair. Two in three beat holding, but the pot is thin. Fee APR: under 1%.
WPRL/USDTThe casino. One position in five beat holding on a 642% fee APR. The token rose fourfold.
UNI/USDTThe grinder. Under half beat holding. Fee APR: 63%.

05 · The treadmillA range has the shelf life of a loaf of bread

A Uniswap v3 range is perishable. Counting only ranges that started in play, two of every three were fully crossed by price within a week of deposit. The professional answer is to redeploy. One range in our data was re-minted hundreds of times by the same contract, chasing the price as it moved. Most people do not do that. When a typical retail position gets blown out, its owner takes the hit and leaves. Barely one removal in six sees the same range come back within two days.

The fee income then flows to whoever stayed. The JIT crowd, holding an hour or less, took a rounding error of all fees. Depositors who held one to four weeks took most of the pot. The giant APR a page can print from a six-minute hold is a printing error. The durable income on these pools runs around a fifth to a third per year for people who hold weeks, and it comes attached to a job: three of four ranges need care inside a week.

Fees go to the patientshare of all fee income, by how long the position was held
Bar chart of fee income share by holding time: 1 percent under one hour, 7 percent for one hour to one day, 20 percent for 1 to 7 days, 58 percent for 7 to 30 days, 15 percent beyond 30 days.
$5.4M of fees across 12,426 positions. Held under an hour: 1% of fees. Held 1 to 30 days: 78%. Holds under one hour compute to 827% APR on minutes of exposure.

06 · So what worksWide, patient, boring, and small expectations

Within this data, the best human-sized profile was exactly that. A range wider than about a twofold price move, on a major pair, held one to four weeks, won four times in five. The median return per position is small. On the biggest pool it won almost nine in ten. Nobody gets rich on those numbers. They beat the coin flip, and they survive the week, and a grinder who repeats the cycle earns something close to the durable fee income of the patient.

Every cut we ran points the same way. Narrow wins only for machines. The middle loses. Wide and patient grinds out a small edge. And the profit pool belongs to a handful of addresses that treat liquidity as stock. Everyone else pays for the option to feel like a market maker.

Run it yourself

Ask these questions in plain English

Every position, fee and price in this story comes from Bitquery's Ethereum data. The Bitquery MCP server puts that data behind an AI assistant, so you can ask how a pool's liquidity moved, who called mint on it, or what a wallet has been doing, without writing the query yourself.

Track new mints and burns on any Uniswap poolValue positions and fees in dollars, hourlyWatch which contracts place just-in-time liquidityPull the trade history behind any pool
Explore Bitquery MCP →Figures measured on 13 October 2026 against Bitquery's Ethereum node archive, window 15 July to 13 October 2026. Written by Bitquery Research; AI tools ran the queries and helped draft the text, and every figure was worked out again from the raw events before publishing.
Limits on these figures

Positions were matched per pool, caller and tick range, and closed when burned liquidity reached minted liquidity. Positions placed through the standard manager share one address, so several people's deposits at the same range can be counted as one position. Address-level figures are unaffected; per-position sizes for the retail path are upper bounds.

Returns compare the value collected at exit with holding both tokens from deposit to exit, valued at hourly trade prices. USDC and USDT are held at one dollar. Gas costs are estimated, not measured, and excluded from returns. 3,357 positions still open at the end of the window are excluded from all return figures.

The bot we call the jaredfromsubway.eth successor is known only by its address and behavior on the chain. Its intent in minting pool ranges is inferred from timing and placement, and is not stated by its owner anywhere we found.

Fee APR figures scale fees by capital deployed and time held. Pools dominated by positions held for minutes print annualized rates that no patient depositor earns.

Legal disclaimer

This article is provided for informational and educational purposes only and reflects analysis of publicly available on-chain data as of the dates indicated. It does not constitute legal, financial, compliance, or investment advice, and nothing in it is a recommendation to buy, sell, or hold any token or asset, or to provide liquidity on any protocol.

The findings describe positions, fees and price movements observed on Ethereum between 15 July and 13 October 2026. Return comparisons depend on the holding benchmark, the hourly prices used and the position-matching method, and may be incomplete or revised as more data becomes available. Blockchain addresses are pseudonymous, and an address calling a pool contract does not by itself establish the identity, intent, or knowledge of any party.

References to Uniswap, the NonfungiblePositionManager, or any other named protocol or project describe what the record shows about addresses and transactions linked to them. They are not statements about any party's security practices, solvency or conduct, and nothing here asserts that any party acted unlawfully or negligently. The address we call a sandwich bot is known by its behavior alone and attributed to nobody.

Nothing herein should be relied upon as a definitive determination of fact. Readers should conduct their own independent verification before taking any action. The authors and publisher accept no liability for any loss or damage arising from reliance on this material. All trademarks and company names are the property of their respective owners.

Reported by Gaurav Agarwal for Bitquery Research, with AI tools; every figure was checked against the raw data.