Trading terminal execution quality 2026: what a swap costs once the app's own fee is removed
Value lost per swap with the app's own fee removed, on every trading terminal, wallet app and Telegram bot we read on-chain. The fee is a published price. What is left, priority fee and tips, the pool's LP fee and price impact, launchpad and router cuts, is the app's routing. Subtracted on each swap before any median is taken. Rolling 24 hours.
TL;DR. As of , pump.fun app posts the lowest execution loss at 240 bps (p50, 24h) across 1 ranked provider. Source: OpenChainBench, https://openchainbench.com/benchmarks/terminal-execution-quality. Every swap behind these medians is listed below, one row per transaction with its explorer link.
Read this carefully
Same sample, window and reference as bench 268; read that page for how a swap is priced. Here each swap's loss has the terminal's fee subtracted before the median is taken. Subtracting the two published medians gives a different number wherever an app's fee varies across its own swaps, which is why this is measured, not derived. A swap reads negative when a fee was rebated or the reference drifted the user's way; those stay in. Compare medians with their intervals, never single swaps.
An app's fee is the one cost it publishes. Everything else about a swap is its own doing and appears nowhere in the fee schedule: which pool the trade is routed to, how much priority fee and inclusion tip the app attaches, whether it goes through a launchpad curve that keeps 1 % or a pool that does not, how much price impact the size causes. This benchmark takes the swaps of bench 268, removes each app's fee from each swap, and ranks what is left. It answers a different question from the headline bench: not "what does this cost me", but "how well does this app actually execute". The two rankings are not the same. An app charging the highest fee in the cohort can route better than one charging nothing.
Methodology
Bench 268 reads real user swaps on Solana and five EVM chains for the trading terminals, wallet apps and Telegram bots in the cohort, and values what the user received against the pool's own state before the trade. Loss is the shortfall in basis points of the trade, and it decomposes per swap into the terminal's fee, the network cost (priority fee, inclusion tips, token-account rent), the pool's LP fee and price impact, and the protocol cuts (launchpad curves, routers). This bench publishes the same quantity with the terminal component removed, subtracted on each individual swap before the median is computed: median(loss) minus median(fee) is a different statistic and differs materially where an app's fee is not constant across its swaps. Network, pool and protocol costs stay inside, because routing through a launchpad curve rather than a migrated pool, or attaching a larger tip, is a choice the app makes on the user's behalf. Same rolling 24 hour window, same publication floors, same flow weighting across a product's chains, medians with a bootstrap interval and p90.
- The measurement is bench 268's, with one subtraction. Every detail of sampling, user attribution, quote handling, pool identity, reference price and loss bounds is that bench's; see its methodology. Nothing is re-read from chain and no additional RPC is spent.
- Execution loss = loss − terminal fee, computed on each swap, then the median over the window. The subtraction happens before the quantile, never after: median(loss) − median(terminal) is a different number, and the gap is largest on an app whose fee differs across its own swaps (FOMO charges 2 % on Solana and about 0.5 % through Relay). It moves with the cohort from one refresh to the next, so read it from the two columns on the board rather than from any figure quoted here.
- What is removed is the terminal's own cut: what reached its fee wallets on Solana, the router's residual after the pool and the gas on the EVM rows, the app fee on Relay legs. Referral and cashback legs count as terminal fee where the terminal's list holds them.
- What stays in: network (transaction fee the user paid, inclusion tips including the terminal's own relay, the deposit of token accounts the swap creates), pool (the final pool's LP fee and price impact) and protocol (launchpad and curve fees, router cuts, referral payouts). Each is a consequence of how the app routed the trade, not of what it charges for doing so.
- A swap whose fee exceeded its loss reads negative: a rebated fee, or a reference that moved in the user's favour between the previous trade and this one. Those swaps are kept: removing them would trim the left tail and push every median up.
- Publication and ranking follow bench 268 exactly: same floors, same health and ranked flags, same per-chain pooling weighted by flow. A product present on one board is present on the other, so the two can be read side by side without a row appearing in only one of them.
- The two rankings differ: a product whose fee sits far from the cohort's usual 1 % changes place once the fee comes out, in either direction. How far each row moved is read from the two live columns, not from this sentence. Read this board with the 95 % interval under each median. As on bench 268, most adjacent pairs are not separated by the measurement.
Results: 16 providers measured, 1 ranked by Execution loss (p50, 24h)
| № | Providers | Execution loss | Cost per swap, all in | App fee | Median swap | Network | Pool | Protocol fees | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | pump.fun appTerminal, Solana | 240 bps | 276 bps | 44.0 bps | $10.12 | 0.85 bps | 70.5 bps | 121 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Measured, not ranked: sample below the ranking floor | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | Pump Bridgepump.fun's own bridge, its routers on BNB, Base, Arc and Robinhood Chain | 140 bps | 210 bps | 68.4 bps | $12.25 | 19.5 bps | 108 bps | 0 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | FOMOTerminal, Solana + Robinhood Chain + BNB + Base + Ethereum + Arc, gas sponsored | 153 bps | 343 bps | 179 bps | $13 | 19.9 bps | 100 bps | 2.66 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | PhantomWallet, Solana + Robinhood Chain + Ethereum + Base + Arc | 154 bps | 247 bps | 84.8 bps | $15.19 | 8.94 bps | 111 bps | 2.82 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | Binance WalletSwap router on BNB, Ethereum and Base | 245 bps | 294 bps | 49.0 bps | $11.53 | 19.1 bps | 220 bps | 0 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | GMGNTerminal, Solana + BNB + Robinhood Chain + Ethereum + Base + Arc + HyperEVM | 247 bps | 345 bps | 99.1 bps | $19.17 | 18.1 bps | 135 bps | 31.7 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | Banana GunTelegram bot, Solana + Ethereum | 256 bps | 355 bps | 99.3 bps | $14.48 | 20.0 bps | 96.1 bps | 51.0 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | BasedBotTelegram bot, Solana + Robinhood Chain + BNB + Base + Ethereum + Arc + HyperEVM | 271 bps | 325 bps | 55.3 bps | $36.75 | 0.88 bps | 166 bps | 65.3 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | BONKbotTelegram bot, Solana | 272 bps | 371 bps | 99.0 bps | $30.25 | 39.3 bps | 155 bps | 2.54 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | TrojanTelegram bot, Solana | 303 bps | 401 bps | 98.0 bps | $17.62 | 60.3 bps | 74.4 bps | 117 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | PhotonTerminal, Solana | 304 bps | 400 bps | 98.8 bps | $19.21 | 34.3 bps | 117 bps | 93.9 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | AxiomTerminal, Solana + BNB + Robinhood Chain | 317 bps | 396 bps | 89.4 bps | $20.90 | 10.3 bps | 131 bps | 83.7 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | TerminalTerminal, Solana, formerly Padre | 320 bps | 416 bps | 98.5 bps | $19.94 | 20.0 bps | 134 bps | 69.6 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | BloomTelegram bot, Solana + Robinhood Chain + BNB + Arc | 346 bps | 444 bps | 98.0 bps | $28.04 | 45.9 bps | 92.8 bps | 125 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | MaestroTelegram bot, Solana + BNB + Ethereum + Base + Robinhood Chain + Arc + HyperEVM | 371 bps | 466 bps | 97.6 bps | $38.75 | 82.4 bps | 164 bps | 50.3 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | PepeboostTelegram bot, Solana | 433 bps | 530 bps | 97.6 bps | $53.69 | 33.6 bps | 168 bps | 120 bps | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Every transaction behind these numbers
The most recent transactions of each row (3000 in all, 2568 priced), so every published figure has its own evidence here. These are a sample, not the statistic: the medians above are computed over the full rolling window, which is far more swaps than a row shows here, so a row's handful of transactions will not reproduce its median. Click a hash to open it on Solscan and check every figure against the transaction's balances: Loss = 1 − value received / value given; Fee + Net + Protocol + Pool (+ Relay on the cross-chain rows) = Loss. Exec is the figure this bench ranks on: the same loss with the app's own fee taken out, on each swap, before any median is taken. Ref says what the tokens were valued at (reserves: the pool's exact mid before the swap, from its balances; event: the venue's own swap event; pool: the previous trade on the same pool, age in seconds). A ! marks a row outside the plausible bounds, kept out of the statistics.
method v6 · as of Sun, 15 Nov 2026 01:49:02 UTC
| When | Terminal | Transaction | Side · route | Trade | In $ | Out $ | Loss | Exec | Where it goes | App fee | Net | Protocol | Pool | Rent | Reference | Sandwich |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 11-15 01:47:47 | 3TsZFt…VyH4 | buypumpswap | $339 | $339 | $334 | 147 | 47 | 100 | 0 | 3 | 44 | — | exact mid | clean | ||
| 11-15 01:47:06 | ERs6qP…3MUA | sellpump-curve | $23 | $23 | $22 | 474 | 395 | 79 | 0 | 122 | 273 | — | venue event | clean | ||
| 11-15 01:47:04 | 0x6342…2dcf | buyuniswap-v3from HyperEVM | $108 | $108 | $106 | 172 | 72 | 100 | 2 | 0 | 70 | — | exact mid | — | ||
| 11-15 01:47:01 | 2kgR57…Fbyu | buypumpswap1 | $20 | $20 | — | — | — | 199 | 1 | — | — | — | unpriced | clean | ||
| 11-15 01:45:58 | 2wqNY4…8iqy | buypumpswap1 | $372 | $372 | $349 | 618 | 518 | 100 | 0 | 92 | 426 | — | exact mid | — | ||
| 11-15 01:44:18 | 4YNuhy…FHss | sellpumpswap | $11085.02M | $11085.02M | $15 | 10000! | 10000! | 0 | 0 | 0 | 10000 | — | exact mid | clean | ||
| 11-15 01:44:07 | 5KuoX5…viaP | sellpumpswap | $35 | $35 | $34 | 290 | 204 | 86 | 1 | 65 | 138 | — | exact mid | clean | ||
| 11-15 01:43:56 | 0x9fed…d95b | buyuniswap-v2from BNB | $17 | $17 | $17 | 253 | 153 | 100 | 9 | 0 | 145 | — | exact mid | — | ||
| 11-15 01:43:47 | 5BM75M…h3bY | buypump-curve2 | $6.80 | $6.80 | $6.70 | 152 | 107 | 45 | 23 | 59 | 24 | — | previous trade0s | clean | ||
| 11-15 01:43:27 | 3QbDvh…UKai | buypump-curve | $6.96 | $6.96 | $6.62 | 478 | 406 | 71 | 246 | 72 | 89 | $0.10 | venue event | — | ||
| 11-15 01:42:57 | SwD4tZ…R1qE | sellmeteora-damm2 | $5.92 | $5.92 | $5.72 | 341 | 258 | 83 | 9 | 1 | 248 | — | exact mid | clean | ||
| 11-15 01:42:32 | xChVfK…1jh4 | buypumpswap1 | $31 | $31 | $30 | 349 | 152 | 197 | 3 | 12 | 136 | — | exact mid | clean | ||
| 11-15 01:42:02 | 4L2uXJ…i8UG | buypump-curve | $14 | $14 | $13 | 371 | 272 | 99 | 75 | 49 | 148 | $0.10 | venue event | clean | ||
| 11-15 01:41:50 | mWLqoG…unna | sellpumpswap | $34 | $34 | $33 | 262 | 217 | 45 | 0 | 122 | 95 | — | exact mid | clean | ||
| 11-15 01:39:52 | 3VFaCT…6Rhs | sellpumpswap | $16 | $16 | $15 | 584 | 543 | 42 | 0 | 118 | 424 | — | exact mid | — | ||
| 11-15 01:38:50 | 3uVBvJ…rYVG | buypumpswap | $105 | $105 | — | — | — | 88 | 1 | — | — | — | unpriced | clean | ||
| 11-15 01:38:28 | 54xmAP…d1tZ | sellpump-curve | $2.46 | $2.46 | $2.41 | 180 | 136 | 44 | 2 | 128 | 6 | — | venue event | clean | ||
| 11-15 01:37:52 | 0x4dbf…6e41 | selluniswap-v2from BNB | $26 | $26 | $25 | 428 | 380 | 49 | 6 | 0 | 374 | — | exact mid | — | ||
| 11-15 01:37:52 | 0x3e2c…6924 | selluniswap-v3from Arc | $93 | $93 | $89 | 378 | 281 | 97 | 2 | 0 | 279 | — | exact mid | — | ||
| 11-15 01:37:49 | 3gSyBM…X9VB | buypumpswap2via X | $20 | $20 | $19 | 359 | 161 | 198 | 2 | 4 | 155 | — | venue event | clean | ||
| 11-15 01:37:37 | 3N42mx…SybZ | sellpumpswap2 | $2.15 | $2.15 | $2.82 | −3084! | −3118! | 34 | 0 | 573 | -3690 | — | exact mid | clean | ||
| 11-15 01:37:13 | 47jPrQ…HBi3 | sellpumpswap | $4.05 | $4.05 | $3.89 | 380 | 281 | 99 | 16 | 156 | 110 | — | exact mid | clean | ||
| 11-15 01:36:34 | WU2Wge…xF3S | sellpump-curve2 | $3.02 | $3.02 | $2.86 | 521 | 500 | 20 | 0 | 418 | 82 | — | venue event | clean | ||
| 11-15 01:35:55 | 4p6vkk…MJx2 | buypumpswap1 | $500 | $500 | $460 | 796 | 695 | 101 | 0 | 1 | 693 | — | exact mid | clean | ||
| 11-15 01:35:40 | 3AL33f…fZEw | buymeteora-dlmm1 | $35 | $35 | $34 | 205 | 25 | 180 | 20 | 0 | 5 | — | venue event | clean | ||
| 11-15 01:35:33 | 5UojHv…nowY | selluniswap-v21from BNB | $7.01 | $7.01 | $6.87 | 205 | 205 | 0 | 41 | 0 | 148 | — | exact mid | — | ||
| 11-15 01:34:42 | UjMeZb…kAh6 | buypumpswap | $2.61 | $2.61 | $2.45 | 607 | 583 | 24 | 400 | 111 | 72 | $0.10 | exact mid | — | ||
| 11-15 01:34:24 | Y8MLtp…5GKL | sellpump-curve | $43 | $43 | $41 | 337 | 239 | 98 | 1 | 68 | 170 | — | venue event | clean | ||
| 11-15 01:33:48 | 2iB46H…pv6L | buypump-curve4 | $5.84 | $5.84 | $5.65 | 323 | 299 | 25 | 0 | 215 | 84 | — | venue event | clean | ||
| 11-15 01:31:41 | 3gDeaW…aRVP | sellpump-curve | $5.90 | $5.90 | $5.76 | 243 | 173 | 70 | 1 | 76 | 96 | — | venue event | clean | ||
| 11-15 01:31:01 | 57Wpv4…3e47 | buypump-curve | $17 | $17 | $17 | 255 | 210 | 45 | 61 | 123 | 27 | $0.10 | venue event | clean | ||
| 11-15 01:30:43 | 4YYSSy…rnDS | sellpump-curve3 | $138 | $138 | $132 | 427 | 358 | 69 | 0 | 35 | 324 | — | venue event | clean | ||
| 11-15 01:30:41 | 4Kn9uG…F5Th | buypump-curve1 | $104 | $104 | — | — | — | 99 | 30 | 125 | — | $0.10 | unpriced | clean | ||
| 11-15 01:30:29 | 4YmNB7…6JHC | buypump-curve | $5.76 | $5.76 | $5.46 | 525 | 430 | 95 | 179 | 237 | 14 | — | venue event | clean | ||
| 11-15 01:28:18 | ErpNyi…BZsu | buypumpswap | $7.62 | $7.62 | — | — | — | 90 | 91 | — | — | — | unpriced | clean | ||
| 11-15 01:26:53 | 5ESFba…bRs2 | sellpump-curve | $95 | $95 | $90 | 514 | 418 | 96 | 1 | 53 | 364 | — | venue event | clean | ||
| 11-15 01:26:06 | 4mzE9e…SK3t | buypumpswap1 | $8.54 | $8.54 | — | — | — | 192 | 8 | — | — | — | unpriced | clean | ||
| 11-15 01:25:52 | 475mXc…NTuL | sellpumpswap3via X | $36 | $36 | $35 | 216 | 161 | 55 | 1 | 48 | 112 | — | venue event | clean | ||
| 11-15 01:25:52 | 0x1628…2cec | buyuniswap-v2from Base | $3.47 | $3.47 | $3.43 | 118 | 68 | 50 | 32 | 0 | 36 | — | exact mid | — | ||
| 11-15 01:25:28 | pG6cU9…suoJ | sellpumpswap | $4.21 | $4.21 | $4.11 | 242 | 143 | 99 | 34 | 3 | 107 | — | exact mid | clean | ||
| 11-15 01:24:12 | HYp8vN…d8KD | buypump-curve | $6.99 | $6.99 | $6.75 | 344 | 300 | 44 | 150 | 122 | 28 | $0.10 | venue event | clean | ||
| 11-15 01:22:52 | 43XSeT…abZZ | buypump-curve3 | $2.21 | $2.21 | $1.97 | 1108 | 1068 | 41 | 0 | 949 | 118 | — | venue event | clean | ||
| 11-15 01:22:34 | 4nnYTr…RiBR | buypumpswap1via X | $3.90 | $3.90 | $3.75 | 380 | 129 | 251 | 5 | 2 | 121 | — | venue event | clean | ||
| 11-15 01:22:21 | 3ojKU9…VfvW | buypumpswap | $35 | $35 | $33 | 395 | 351 | 44 | 70 | 57 | 224 | $0.10 | exact mid | clean | ||
| 11-15 01:20:47 | 7QjYKh…U52r | sellpump-curve | $16 | $16 | $16 | 415 | 385 | 29 | 0 | 122 | 263 | — | venue event | clean | ||
| 11-15 01:19:51 | 0xbb81…1d1c | selluniswap-v2from BNB | $8.62 | $8.62 | $8.38 | 284 | 235 | 49 | 10 | 0 | 224 | — | exact mid | — | ||
| 11-15 01:19:51 | 0x8962…958b | selluniswap-v2from BNB | $28 | $28 | $27 | 366 | 267 | 99 | 9 | 0 | 258 | — | exact mid | — | ||
| 11-15 01:19:51 | 0x0f85…3cbc | buyuniswap-v4from Robinhood | $19 | $19 | $19 | 294 | 194 | 100 | 15 | 0 | 179 | — | exact mid | — | ||
| 11-15 01:19:51 | 0x2bd2…e4f3 | buyuniswap-v2from Ethereum | $5.26 | $5.26 | $4.97 | 542 | 494 | 48 | 461 | 0 | 33 | — | exact mid | — | ||
| 11-15 01:19:47 | 2wKrK6…My3M | buypumpswap | $14 | $14 | $13 | 499 | 397 | 102 | 100 | 97 | 201 | — | exact mid | clean |
Frequently asked
Which trading terminal loses the least per swap once its own fee is removed?
As of the last measurement, pump.fun app at 240 bps (p50, 24h) across 16 trading apps and Telegram bots. The figure is the median value lost per swap against the pool's state before the trade, with the app's own fee subtracted on each swap. It moves with every refresh; the board above is the current answer.
Does the cheapest app to use also execute best?
Not necessarily. An app with a high fee can route well and an app with no fee can route badly; this board isolates the routing. Compare a row's place here with its place on bench 268, trading terminal fill quality (/benchmarks/terminal-fill-quality): the gap between the two is the fee.
How is execution loss measured?
From the user's own transactions read on-chain. Each swap is priced against the pool's state before the trade, the shortfall is split into terminal fee, network, protocol and pool, and the terminal fee is removed. The median of what remains, over a rolling 24 hours, is the row's figure.
Why is this a separate bench and not a column on bench 268?
They answer different questions and a reader usually wants one or the other. Bench 268 is what a swap costs you, which is what you pay and includes the fee. This one is how well the app executes, which is what you would compare if you were choosing between apps whose fees you already know. The underlying swaps are identical and both boards publish the same rows under the same rules.
Why not just subtract the fee column from the loss column yourself?
Because that gives the wrong number. The median of a difference is not the difference of the medians unless the fee is identical on every swap, which is false for any app running promotions, tiered fees or rebates. The size of the gap follows how much an app's fee varies across its own swaps; it is widest on an app like FOMO, which charges 2 % on Solana and about 0.5 % through Relay. So it moves with the cohort, and the board's two columns are the place to read it.
Should the protocol fee count as execution quality?
It stays in, because routing a trade through a launchpad curve that keeps 1 % rather than a migrated pool that does not is a decision the app makes. It is not a fee the app collects, but it is a cost the app chose for the user. The terminal, network, pool and protocol components are each published separately on bench 268 if you want to draw the line elsewhere.
Is a negative figure a bug?
No. It means the fee taken was larger than the total shortfall on that swap: a rebated or sponsored fee, or a reference price that drifted in the user's favour between the previous trade and this one. These are real swaps and stay in the sample; excluding them would bias every median upward.
Source code github.com/ChainBench/OpenChainBench/tree/main/harnesses/terminal-fill-quality