PumpCrateDocs
  1. Docs
  2. Pump.fun mechanics
  3. Price impact and slippage

Price impact and slippage on Pump.fun

How far a trade moves the price on a Pump.fun curve is a matter of two numbers: the trade size and the SOL already in the curve. This page gives the formulas, tables worked from them, and what they mean for slippage settings.

Updated 4 min readBy the PumpCrate team

Notation follows the bonding curve reference: x is the virtual SOL reserve (30 plus real SOL in), y the virtual token reserve. All figures are before fees.

How much one buy moves the price#

price after / price before = ((x + b) / x)²

For small buys this is close to 1 + 2b / x: a buy moves the price by roughly twice its size as a share of the virtual SOL reserve.

Real SOL in0.5 SOL buy1 SOL3 SOL5 SOL10 SOL
0+3.4%+6.8%+21.0%+36.1%+77.8%
10+2.5%+5.1%+15.6%+26.6%+56.2%
20+2.0%+4.0%+12.4%+21.0%+44.0%
40+1.4%+2.9%+8.8%+14.8%+30.6%
60+1.1%+2.2%+6.8%+11.4%+23.5%
80+0.9%+1.8%+5.5%+9.3%completes the curve

Average fill price#

average price of a buy = (x + b) / y

Your fill sits between the spot price before and after the trade, roughly halfway for small trades. A chart candle may show the before and after prices; your actual entry was in between.

SOL needed to multiply the price#

SOL needed for a price multiple m = x × (√m - 1)

Doubling takes net buying of about 41.4% of the current virtual SOL reserve.

From real SOL inSOL to doubleCurve after doublingMost left on the curve
012.4312.4 SOLabout 14.7x
1016.5726.6 SOLabout 8.3x
2020.7140.7 SOLabout 5.29x
3024.8554.9 SOLabout 3.67x
4028.9969.0 SOLabout 2.70x
5033.1483.1 SOLabout 2.07x

Past about 51.32 SOL of real buys, the price can no longer double on the curve, because the curve completes first. The headroom from any point is (115.005 / x)². From launch, a 5x takes about 37.08 SOL of net buying and a 10x about 64.87 SOL.

What a full sell returns#

The value shown next to a position is usually tokens times the spot price. A single sell of t tokens returns less:

received / displayed = y / (y + t)

Real SOL in1% of supply5% of supply10% of supply
598.9%94.8%90.2%
3098.2%91.5%84.3%
7596.8%86.0%75.4%

Splitting a sell into pieces with nothing in between gives the same total, because the reserves end in the same place. Order between different sellers matters: whoever sells first gets more.

Slippage and sandwiches#

Pump.fun's classic buy instruction takes a token amount and a maximum SOL cost; the sell instruction takes a token amount and a minimum SOL output. A slippage setting in a trading app fills in that limit. If the price moves past it before your transaction lands, the transaction fails.

Take a curve with 10 SOL in and a 2 SOL buy. The largest buy someone can land ahead of you before your limit stops it, and what a sandwich (buy before you, sell after) would net from that, before fees:

Slippage settingLargest front-run that still fillsMost a sandwich takes
1%about 0.20 SOLabout 0.02 SOL
5%about 0.96 SOLabout 0.10 SOL
10%about 1.90 SOLabout 0.20 SOL
20%about 3.72 SOLabout 0.40 SOL
50%about 8.72 SOLabout 1.00 SOL

worst-case sandwich loss = slippage tolerance × trade size (before fees)

The slippage number is the most you are prepared to give up on a trade, and someone positioned to sandwich it can take up to that much. Fees on the attacker's two trades eat into it, which is why small trades with tight slippage are rarely worth attacking.

PumpCrate sessions route orders as Jito bundles through a private relay, which keeps them out of the public queue sandwich bots watch. Your own manual trades do not get that protection, so set slippage with this table in mind.

After migration#

A PumpSwap pool is also a constant product pool, so every formula here still applies with x and y set to the pool's actual reserves. There is no fixed virtual offset to start from: read the pool's balances on an explorer.

The full derivation, with more examples, is in our Medium article Pump.fun price impact: formulas, tables and worked examples.

Sources#

Something unclear or out of date on this page? Tell us on Telegram at @pump_crate_bot or by email at support@pumpcrate.com.