Depth Ledger

When liquidity leaves: five reasons reserves fall

Falling reserves is one of the few pool observations that is unambiguous as a fact and deeply ambiguous as an explanation. Migration, range exit, fee harvesting, venue rotation and plain withdrawal all shrink a pool, and for the first minute they look almost identical. This entry separates them by the evidence each one leaves and refuses to guess where the record is silent.

Analysis The Depth Ledger Desk 2098 words 10 min read Updated 11 September 2026
Question
When the reserves in a Solana pool fall, what are the ordinary explanations, and which of them can be separated using only on-chain data?
Balances used
Both reserves across the window, LP supply, the instruction mix, the appearance of new pools for the same pair, and where liquidity ended up afterwards.
Out of reach
Intent, identity, coordination between signers, and whether liquidity will return. None of these is recorded in a pool account.
What would overturn it
A window where both reserves fall substantially with LP supply unchanged and no range mechanics involved, which the accounting does not permit.
Confidence
Firm on the mechanics of each cause. Working at best on which cause applies to a specific window, and often undecidable.

The short answer

Reserves fall for five ordinary reasons: liquidity migrates to another venue, a concentrated position moves out of range, a provider harvests fees, capital rotates to a different opportunity, or somebody withdraws outright. All five shrink the pool. Only some of them shrink the market.

The distinction matters because the trading consequence differs completely. Migration relocates depth, so the pair is as tradable as before once routing catches up. Outright withdrawal removes depth from the pair entirely, and every later trade pays for it in price impact.

On-chain data separates some of these cleanly and leaves others genuinely ambiguous. This entry is organised around which is which, because a reading that claims to distinguish causes it cannot distinguish is worse than one that admits the ambiguity.

Five reasons reserves fall

Migration. Depth moves from one venue to another. This is routine on Solana: tokens graduate from launch curves into automated market makers, providers move to venues offering better capital efficiency, and pairs consolidate onto whichever pool the routers actually use. The old pool shrinks and a new one grows, usually within a short window.

The important property is that nothing left the pair. A reader watching only the old pool sees depth collapse and concludes the market has emptied. A reader who defined the venue set first sees the depth arrive somewhere else.

Range exit. On a concentrated venue, a position stops quoting when the price leaves its interval, which for a bin-based design is documented in Meteora's protocol documentation. No instruction is submitted, no assets move out of the pool, and yet depth in the region around the current price falls sharply. This is the cause most often mistaken for a withdrawal, because the depth series looks similar and the instruction record looks nothing alike.

Fee harvesting. Where fees accrue separately from reserves, claiming them removes value from the pool contract without touching the liquidity position itself. The pool's total holdings fall while tradable depth is unchanged. Any reading that lumps fee balances together with reserves will record a withdrawal that did not happen.

Rotation. A provider closes a position here to open one elsewhere, in a different pair or a different protocol entirely. The instruction is an ordinary withdrawal and the destination is off the pool's books. From inside the pool, rotation and outright exit are indistinguishable, and honest readings say so.

Outright withdrawal. Capital leaves and does not go anywhere related. This is the reading people jump to first and it is the hardest of the five to establish, because establishing it requires ruling out the other four rather than observing anything positive.

What separates them

Three observations do most of the separating, and all three are available from ordinary chain data.

The first is LP supply against reserves. A fall in both reserves with a fall in supply is a redemption. A fall in effective depth with supply unchanged points at a range exit or at a reading that has confused fee balances with reserves. This single comparison resolves the most common misreading in the whole subject.

The second is the appearance of a new pool for the same pair. Migration is not a state of mind, it is a second pool receiving deposits and then flow. If depth arrives somewhere else within a short window, migration is a strong reading. If nothing appears anywhere, migration is not available as an explanation.

The third is what the withdrawn assets do next. This is where the record thins out fast: transfers can be followed, but following them attributes behaviour to addresses, and addresses are not people. This desk uses destination only to distinguish migration from everything else, and does not build claims about identity or intent on top of it.

The five causes compared

The five ordinary causes of falling reserves, the signature each leaves, and what it means for someone trying to trade the pair.
CauseLP supplyNew pool appearsEffect on the pairSeparable?
MigrationFallsYes, and it receives flowDepth relocates; pair stays tradableYes, clearly
Range exitUnchangedNoDepth thins near mid without any exitYes, from instructions
Fee harvestUnchangedNoNone; tradable depth is untouchedYes, if fees tracked apart
RotationFallsNot for this pairDepth leaves the pairNo, not from the pool
Outright exitFallsNoDepth leaves the pairNo, not from the pool

The last column is the honest part of the table. Two of the five causes cannot be told apart using pool data, because they differ only in what the provider intended to do next, and intent is not recorded anywhere. A reading that lands on those two rows should name both rather than pick the more dramatic one.

Migration in detail

Migration is the most common large reserve change on Solana and the one most often misread. It has a recognisable shape: a new pool is created for the pair, liquidity is deposited into it, routers begin quoting it, and the old venue stops receiving meaningful flow while still displaying a price.

That last detail causes real confusion. An abandoned pool keeps quoting from its remaining reserves, and its quote can drift far from where the pair actually trades because nobody is arbitraging a venue nothing routes to. Reading a price from the old pool after migration produces a number that is technically accurate and practically meaningless.

The graduation case is the sharpest version. A token that fills its launch curve moves to an automated market maker of the kind described in Raydium's protocol documentation, and depth changes shape at that moment even if the price does not move at all. Post-migration pools are where most sustained trading on Solana actually happens, and analysts who follow flow into those venues, including anyone assessing a Raydium volume bot, are watching the same handover from the activity side that this entry watches from the reserve side.

Practically, the check is short. When a pool empties, look for a pool of the same pair created nearby in time. If one exists and is receiving swaps, the reading is migration and the correct next step is to re-point the depth series at the new venue rather than to record a collapse.

A worked separation, illustrative

Two windows that look identical at first

Illustrative figures

All figures are invented for teaching and describe no real pool or pair. In both windows a pool that held 800 A and 80,000 B ends holding 400 A and 40,000 B. The quoted price is unchanged at 100 B per A in both cases, and in both cases depth at one per cent has roughly halved.

In Window One, LP supply fell from 8,000 to 4,000. Half the pool was redeemed. Nothing about the ratio changed because a redemption takes both sides proportionally, which is exactly what the numbers show.

In Window Two, LP supply is unchanged at 8,000 and the venue uses concentrated ranges. No redemption occurred. Positions covering the region around the current price reached their boundaries as the price drifted, and the capital is still in the pool, sitting in intervals the price has left.

The trading consequence is the same today: both pools are half as deep near mid. The forward reading is different. Window One has lost capital that must be replaced by new providers. Window Two has capital that resumes quoting the moment the price returns to those intervals. Same reserves, same price, two different markets.

What a lock does and does not promise

A liquidity lock places LP tokens somewhere the original owner cannot reach for a stated period. That is the entire mechanism. It is a constraint on one position, enforced by whatever holds the tokens.

What it promises: that specific position cannot be redeemed before the unlock time. What it does not promise: that other positions in the same pool will stay, that trading will not thin the pool on one side, that a new pool will not become the venue routers use, or that the position will remain locked after expiry.

Locks are also often described in percentage terms without a denominator. A lock covering a large share of a pool that holds very little is a different proposition from the same percentage of a deep pool, and the percentage alone conceals which is which. Reading the underlying amounts rather than the headline share removes the ambiguity.

The reading discipline

A lock is evidence about one position for one period. It is not evidence about a token, a team or a market, and this desk never treats it as such. Where a question needs information a lock cannot provide, the answer is that the record does not contain it.

A triage sequence

  1. Confirm the fall is real Check raw balances rather than a denominated headline, since a converted figure moves when the quote asset moves and no liquidity has to change hands for that to happen.
  2. Compare LP supply across the window This immediately separates redemptions from range effects and fee claims, and it costs one query.
  3. Search for a new pool on the pair A block explorer such as Solscan will show pool accounts and the transactions hitting them, which is enough to see whether a second pool exists and is taking flow. If it is, record migration and re-point the series; if nothing appears, migration is off the table as an explanation.
  4. Separate fee balances from reserves On venues that accrue fees apart from the reserves, confirm the change is in the reserves themselves rather than in a claimed fee balance.
  5. Rebuild the ladder and stop there Compute what trades now cost against the current reserves. That is the actionable output; anything beyond it about motive is not supported by the data.

Steps one to four take a few minutes and eliminate three of the five causes outright in most windows. The remaining ambiguity between rotation and outright exit is genuine, and writing it down as ambiguous is a finished reading rather than an incomplete one.

The language this desk avoids

Certain phrases attached to falling reserves assert things the record cannot support. This desk does not use them, and readers are better served by noticing when others do.

It does not describe a withdrawal as an exit scam, a rug or a dump, because all three assert intent and none is recorded on chain. It does not name any token, team, wallet or venue as having done something wrong. It does not describe liquidity as having been stolen when it was withdrawn by the party entitled to withdraw it.

What it does instead is describe the mechanics and their consequences: reserves fell by this much, depth at these distances is now this, capital did or did not appear elsewhere, and these explanations remain live. That is less satisfying to read and considerably more likely to be true.

The same restraint applies to the other direction. Liquidity arriving is not evidence of confidence, and a large deposit is not a signal about anything. Deposits are ordinary and constant, and the ordinary reason liquidity stays is that flow keeps routing through the pool and paying fees, which anyone running a volume bot for Solana understands from the opposite side of the same relationship.

Where the reading stops

Pool data records amounts, instructions and signers. It does not record why, and no volume of additional data turns a signer into a person or an instruction into a motive. Two of the five causes described here differ only in intent, which puts the boundary of the method squarely inside this entry's subject.

Nor does a reserve reading say anything about what comes next. A pool that halved in depth may deepen again within the hour or may stay thin indefinitely, and nothing in the balances distinguishes those futures. What the reading does supply is the current cost of trading, which is a real answer to a real question.

There is a further limit that is easy to overlook. Everything above assumes the venue set was fixed before the window was read. If it was not, a pool that appears to have emptied may simply be a pool that was never the main venue, and the reading is describing the collection rather than the market. Deciding the boundary first is what makes the rest of the sequence meaningful, and doing it afterwards quietly converts an observation into an artefact.

For anyone holding a liquidity position rather than trading against one, the same restraint applies to the consequences. Depth changing around a position does not change the structural exposure that position carries: it can still end up worth less than the two assets held alone. Nothing in this entry is advice about whether to stay, leave or do anything else.

Questions this entry gets asked

Does falling liquidity mean something bad is happening?

Not on its own. Reserves fall for several ordinary reasons, including migration to a better venue, providers harvesting fees, concentrated positions being repositioned and routine rotation of capital. A withdrawal is a recorded fact; what it means is an interpretation, and the interpretation is often undecidable from the pool account alone.

How do I tell migration from withdrawal?

Look for a new pool. Migration moves depth, so a new pool for the same pair should appear and start receiving flow within a short window. A withdrawal with no corresponding pool anywhere is capital leaving the pair rather than changing venue, which is a different reading with different consequences for anyone trading it.

Can a pool be drained by trading alone?

A constant-product pool cannot be emptied by swaps, because the curve makes each additional unit more expensive without limit. It can be made extremely shallow on one side, which produces terrible execution and looks like emptiness in practice. Actual removal of both reserves requires a liquidity instruction, which is a different event with a different signature.

What does it mean when a concentrated position goes out of range?

It means the position has been fully converted into one asset and has stopped quoting. Depth in the affected region drops even though nobody withdrew anything, which is why an out-of-range event and a withdrawal look similar in a depth series and completely different in the instruction record.

Does a liquidity lock prevent this?

It prevents one specific position from being withdrawn for a stated period. Other positions in the same pool are unaffected, the lock expires, and the lock says nothing about trading, about the token, or about any other venue. Reading a lock as a property of the pool rather than of one position is a common and expensive error.

Should a depth drop change what I do?

That is a decision this desk cannot make for anyone and does not try to. What a depth drop does change is arithmetic: a shallower pool means a larger price impact for the same trade size, so any plan built on the earlier ladder needs recomputing against the current one before it is acted on.

Filed in Flows by The Depth Ledger Desk. Every quantity inside a worked example on this page is invented for teaching and describes no real pool. Nothing here is advice about what to buy, sell or supply, and liquidity provision can end with a position worth less than holding the two assets. Terms used above are defined in the liquidity glossary.

Next in the ledger