First Block

What Happens After the Fill

A fill is not a result. It is the moment the operator stops choosing and starts negotiating with a market that has more information than the filter did. This page covers the exit rules worth writing in advance, the depth arithmetic behind them, and what has to be recorded for any of it to be reviewable.

OUT-01 The First Block Desk 2089 words 10 min read Updated 12 September 2026

Decision card

Question
What has to be true after a fill for the position to be worth having
Inputs
Quote reserve on the exit side, elapsed time, structural changes to the pool
Rule
The exit condition is fixed before entry and evaluated without a judgement call
Failure mode
Entering with a thesis and no closing condition, then deciding under pressure

The moment a buy fills, the operator's role changes completely. Before the fill there was a choice: take this candidate or reject it. After the fill there is only a position, a pool with a certain depth on the other side, and a set of counterparties who between them know more about the token than any filter could establish in a few hundred milliseconds. Everything on this page is about that second situation.

A fill is not a result

It is worth separating three things that get reported as one. A fill means a transaction landed and tokens were received. A mark means the pool price implies the position is worth something. A result means the position was closed and the proceeds are in an asset you can spend. Only the third is real, and the gap between the second and third is where the whole difficulty of this stage lives.

The gap is not a technicality. A position marked at a price implied by a pool is being valued at a price that only exists for an infinitesimal trade. Selling any meaningful size moves that price against you, and the amount it moves depends on the reserve at the moment you sell rather than the one you entered against. A mark is a quote for someone else's trade.

This is why an entry rule that ends at "buy" is incomplete by construction. The filter set decided what to buy on the basis of what could be read. The exit rule decides what the position is actually worth, and it has to be written while the reasoning is still clean.

The shapes an exit rule takes

Useful exit rules are conditional on something a program can evaluate. There are only a few basic shapes, and each one encodes a different belief about why the position was taken.

Rule shapeFires whenBelief it encodesMain weakness
TimeA fixed interval has elapsed since the fillThe information advantage decays quicklyIgnores everything happening in the pool
DepthExit-side reserve falls below what the size needsCloseability matters more than priceRequires continuous reserve monitoring
StructuralSomething true at entry stops being trueThe entry was conditional on a specific factOnly covers changes you thought to watch
TargetImplied price crosses a chosen levelThere is a price at which the thesis is completeThe level may be unreachable at your size
StopImplied price falls through a chosen levelThere is a price at which the thesis is wrongThin depth means the fill can be far below the level

The depth rule is the one most often missing and the one most specific to this environment. In a deep market, closeability is assumed and only price matters. In a newly created pool it is the reverse: the reserve can fall to a level where the position cannot be closed at any acceptable impact, and that can happen while the implied price still looks fine.

Combining shapes is normal and should be explicit. A time rule with a depth override, for example, closes on the interval unless the reserve breaks first, in which case it closes immediately. What matters is that both conditions were written down before entry and neither requires anyone to look at anything.

Depth on the other side

The exit arithmetic is the entry arithmetic run backwards, with one important difference: the reserve you sell into is not the reserve you bought against. It is whatever remains after your own buy, other people's buys, and any liquidity that has been withdrawn.

Take the constant-product relationship again with fees ignored. Selling an amount whose value is a given fraction of the quote reserve moves the price by roughly twice that fraction against you. So a position that represents ten percent of the quote reserve pays roughly twenty percent impact to close in one transaction, and that is before pool fees.

Position value as share of exit-side reserveApproximate impact to close in one goPractical reading
1 percentAbout 2 percentCloseable without thinking about it
5 percentAbout 10 percentCloseable, at a cost worth planning for
10 percentAbout 20 percentThe exit is now a material part of the outcome
25 percentAbout 50 percentThe position is effectively illiquid at this size

Constant-product arithmetic with fees ignored, using round shares for readability. No pool was measured. The relationship is the point: impact rises faster than size, and the reserve on the exit side is frequently smaller than the one that was there at entry.

Two design consequences follow. The first is that the liquidity floor used at entry has to be set with the exit in mind, not the entry alone, because the entry is the easy half. The second is that a position sized as a fraction of entry-side reserve should be re-evaluated against exit-side reserve continuously, since the ratio that made it acceptable can move without the price moving at all.

Information decay

Whatever edge a filter set provides is at its maximum at the moment of the fill and declines from there. This is not a claim about markets in general; it is a statement about what the filter knew. It read a set of account fields at one instant and decided those fields were acceptable. As time passes, more participants read the same fields, more state is written, and the distinctiveness of that read approaches zero.

That is the argument for time-based exits, and it is a reasonable one. It is also the argument against holding a position because the numbers still look acceptable an hour later: at that point the numbers are visible to everyone, and any advantage that came from being early has been fully consumed.

The corollary is that the interval in a time-based rule is not arbitrary. It should be tied to a view about how long it takes for the state your filter read to become generally known. An operator who cannot articulate that view has an interval, not a rule.

Partial exits and ladders

Closing in pieces reduces the impact of each transaction and increases the number of transactions. Whether that is a good trade depends on the size relative to depth and on the fixed cost per transaction.

  • A single exit pays impact once against the reserve at that moment. It is simplest, it is fully deterministic, and it takes whatever the pool offers.
  • An even ladder splits the position into equal parts across a fixed interval. Each part pays a smaller impact, but the later parts are exposed to whatever happens in between, including reserve withdrawal.
  • A front-weighted ladder sells the largest piece first. This treats closeability as the dominant risk and accepts a larger first impact to reduce the exposure that remains.
  • A depth-triggered ladder sizes each piece as a fixed fraction of the current exit-side reserve. It adapts automatically to a thinning pool and is the most complex to implement correctly.

Every one of these must be fixed before entry. A ladder decided mid-position is not a ladder; it is a sequence of separate decisions made under exactly the conditions that produce bad ones. The implementation detail that catches operators out is that each leg is a separate transaction with its own fee and its own possibility of failing, so a ten-part ladder is ten chances for something to go wrong at the worst moment.

What a round trip actually costs

The full cost of a position is the sum of several items, and leaving any of them out makes small trades look better than they are. Solana's fee model, including the base fee charged per signature on any landed transaction, is set out in the Solana documentation.

Cost itemWhen it is chargedScales with
Network base feeEvery landed transaction, including failed instructionsNumber of signatures, not trade size
Priority feeEvery landed transaction that attached oneRequested compute units and unit price
Pool swap feeEach swapTrade size
Entry price impactOn the buySize relative to entry-side reserve
Exit price impactOn each sell legSize relative to exit-side reserve at that moment
Account rentCreating a token account for a new mintNumber of distinct tokens held

The first and last rows are the ones that break small positions. They are fixed costs per token and per transaction, so their share of the trade rises as size falls. An operator entering many very small positions is paying those fixed costs many times over, and the arithmetic can turn a nominally profitable rule set into a losing one without any single trade looking bad.

A closing sequence

What a disciplined close looks like as a sequence, written so that no step requires an opinion.

  1. Record the fill precisely. Signature, slot, tokens received, quote spent, and the reserve figures at that moment. This is the baseline everything else is measured against.
  2. Register the exit conditions immediately. The time deadline, the depth floor and any structural condition, all written to the position record at fill time rather than derived later.
  3. Poll the exit-side reserve on a schedule. Not the price, the reserve. The reserve is what determines whether the position can be closed at all.
  4. Evaluate conditions in a fixed order. Structural first, because it is binary. Depth second. Time last. The order decides what happens when two fire together.
  5. Size each leg from the current reserve. Not from the position size at entry, which describes a pool that no longer exists.
  6. Treat a failed leg as unfinished, not as done. A sell that landed and reverted has cost a fee and closed nothing. The position record must reflect that.
  7. Close the record with both signatures and both reserve readings. Entry and exit, so the round trip can be reconstructed without trusting a summary.

Step three is the one most often skipped, and it is the one that separates a position that is managed from one that is merely watched. Price is a derived number; the reserve is the thing that decides whether an exit is available.

What has to be recorded

The record is the only durable output of this whole process. Positions close and are forgotten; the record is what allows a rule set to be improved rather than merely adjusted. It needs the triggering event and its timestamp, every rule verdict with the value it read, intended size against filled size, both signatures, both reserve snapshots, and which exit condition fired.

That last field matters more than it looks. A set where the time rule fires on almost every position is behaving very differently from one where the depth rule dominates, even if the aggregate outcome looks similar. The distribution of exit reasons is a description of what the strategy is actually doing, and it is invisible in any summary that reports only outcomes.

All of it can be reconciled against public data, which is the advantage of working on an open ledger. Every signature in the record can be looked up on a public explorer and checked against what the record claims. A reporting system whose numbers cannot be reconciled that way is asking to be believed rather than checked.

When flow, not entry, is the problem

Everything above assumes the hard question is which token to hold. For a large group of operators it is not: the token is already chosen, often because they issued it, and the problem is what the market around it looks like. That is a different discipline with different tools and a different failure mode.

The questions there are about depth and continuity rather than admission. How much two-way activity does a pool need before a position of a given size can move without dominating the book? That is the mirror image of the exit arithmetic on this page, and it is the subject of practical guides on how much volume a token needs, which approach the same depth problem from the side of the person supplying the activity rather than the side of the person trying to leave.

The evaluation criteria converge, though. Whether a tool is deciding entries or routing scheduled flow, the property that makes it checkable is the same: does it separate attempts from outcomes, and does it hand back signatures that can be reconciled against the chain. A console such as Solana Volume Bot Pro is judged on that reporting surface rather than on any claim about results, for exactly the reason this page has been making: a number nobody can reconstruct is not evidence, it is a request for trust.

The last page in this section deals with the uncomfortable question underneath all of it, which is why an early fill is so often a bad one even when every rule passed and the transaction landed exactly as intended.

Questions this page keeps getting

What is a sniper exit rule?

A condition, fixed before entry, that closes the position without requiring a judgement call at the time. The common shapes are time-based, depth-based and structural: close after a fixed interval, close when the exit-side reserve falls below what the position needs, or close when something that was true at entry stops being true.

Why write the exit rule before entering?

Because the reasoning is cleanest before the position exists. After entry there is an open exposure, a moving price and a strong incentive to reinterpret evidence in a favourable direction. A rule fixed in advance is a commitment made under better conditions than the one available afterwards.

Why is selling harder than buying in a new pool?

Buying into thin depth is a choice you control and can size. Selling requires depth on the quote side at the moment you want it, and that depth is thinnest exactly when everyone else wants to sell too. The exit also pays price impact a second time, against a reserve that may be smaller than the one you entered against.

Should exits be partial or all at once?

Both are defensible and they trade different things. A single exit is simple, pays impact once and takes whatever the pool offers at that moment. A ladder reduces the size of each impact but spends more transactions and leaves part of the position exposed for longer. The important part is that the schedule is fixed in advance either way.

How do fees affect the round trip?

Each swap pays a pool fee, and each landed transaction pays a network base fee plus any priority fee attached to it, including transactions whose instructions fail. On a small position, those fixed costs are a meaningful share of the trade, which is one reason very small entries into thin pools rarely justify themselves.

What should be recorded for every position?

The triggering event and its time, every rule verdict with its value, the intended size and the filled size, the entry and exit signatures, the reserve at both moments, and the reason the exit fired. Without those, a review a week later is guesswork rather than analysis.

Filed under Outcomes. Thresholds quoted on this page are worked examples, not recommended values, and the arithmetic around them uses numbers you supply rather than numbers observed anywhere. If something here is wrong, tell the desk and the page gets amended in the open.

Read next