Volume bot slippage settings: finding the number that actually works
Slippage is the only setting with two opposite ways to lose money. Too tight and ordinary price movement rejects your transactions, each of which pays its fee and produces nothing. Too wide and you have published exactly how much value someone else can extract from every trade you send. There is a right answer, it is derivable from the pair rather than guessable, and almost nobody computes it because a default is sitting there and appears to work.
What slippage tolerance actually controls
Two consequences follow from it being signed into the instruction. First, a rejected swap cannot be fixed by resending, because the same minimum will be enforced again against a price that has already moved past it. Every retry needs a fresh quote or it is guaranteed to fail identically.
Second, the tolerance is public the moment the transaction is broadcast. Anyone watching can read how much room you have given and, if the room is worth taking, act inside it. That is the mechanism behind sandwich extraction, covered in sandwich MEV protection.
What too tight actually costs
| Program | Sampled tx | Failure rate | Median fee | Cost per landed swap |
|---|---|---|---|---|
| Pump.fun bonding curve low sample | 23 | 73.9% | 5,700 | 21,839 |
| Pump.fun AMM (post-graduation) | 173 | 32.4% | 6,655 | 9,845 |
| Raydium CLMM low sample | 49 | 65.3% | 10,570 | 30,461 |
| Meteora DLMM | 109 | 69.7% | 8,450 | 27,888 |
| Orca Whirlpools low sample | 18 | 77.8% | 5,225 | 23,536 |
| Jupiter aggregator v6 low sample | 39 | 66.7% | 8,462 | 25,411 |
Slippage rejections are a substantial part of the failure rates above, particularly on concentrated liquidity venues where quotes are computed against liquidity that other traders can move out of range before you land.
The trap is that a tight tolerance feels prudent. It reads as protecting yourself from bad fills, and the transactions that fail leave no visible trace on a chart, so the cost is invisible while the discipline feels virtuous. The money is gone all the same.
What too wide actually costs
Whether anyone bothers depends on trade size. Extracting from a very small swap is not worth the effort or the fees, which is why campaigns built from small trades are poor targets regardless of their tolerance. Extracting from a large swap on a thin pool very much is worth it.
This produces a useful rule. For small trades, a somewhat wider tolerance is cheap insurance against failures and attracts little attention. For large trades, the same tolerance is a standing offer. The right setting is therefore a function of trade size as well as of the pair, which is why the two settings should be chosen together rather than separately.
Deriving the number from the pair
The practical procedure needs no special tooling:
- Sample the movement. Watch the pair over a stretch of ordinary conditions and note the typical size of price changes between blocks. That is the movement your transactions have to survive.
- Cover the ordinary, not the exceptional. A tolerance that survives every spike is far too wide for normal conditions. Aim to clear routine movement and accept that violent periods will produce failures, because they should.
- Add margin for latency. The gap between quote and landing is exposure. Shorter latency means less margin needed, which is why building, signing and sending in one pass is worth more than it appears.
- Recheck when conditions change. A value derived during calm conditions will fail constantly during a move. The setting is not a constant.
If you would rather work from failures than from observation, the feedback loop is equally usable: if a large share of transactions are being rejected on price, the tolerance is below the pair's real movement and needs to come up. If everything lands and trades are filling noticeably worse than quoted, it is too wide.
How the right value differs by venue
- Meteora DLMM. The bin step gives you a concrete number to work from, which is unusual and useful. Tolerance below one bin step means routine crossings reject you. Details in Meteora DLMM bin steps.
- Concentrated pools. Movement can be sharp when price approaches a range boundary, so tolerance derived only from calm conditions underestimates. Smaller trades reduce the exposure more effectively than wider tolerance does.
- Constant-product pools. The most forgiving case, since price impact is smooth and predictable from trade size and depth. Tolerance can be tighter here than anywhere else.
- Bonding curve. Your effective price depends on where you land in the buy order, which cannot be known in advance. Wider tolerance is rational here and stops being rational the moment the token graduates, as covered in what changes at migration.
Why slippage and trade size are one decision
This is the resolution to what otherwise looks like an impossible trade-off. You are not forced to choose between failing often and being extracted from; you can step out of the dilemma by trading smaller. The cost is more transactions to reach the same notional volume, which for a campaign is not a cost at all, since transaction count is closer to the actual objective than notional size is.
The sizing argument in full is in volume bot trade size, and how both fit with the other settings is in volume bot settings.
Both are configurable in the dashboard, and the effect of a given combination on total cost can be modelled first with the calculator. The measured failure data these recommendations rest on is published rather than asserted, which is the operating principle behind our Solana volume bot service generally.