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 , FOMO posts the lowest execution loss at 218 bps (p50, 24h) across 13 ranked providers. 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.
Results: 15 providers measured, 13 ranked by Execution loss (p50, 24h)
| № | Providers | p50 | Cost per swap, all in | App fee | Network | Success | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 1 | FOMO | 218 bps | 348 bps | 130 bps | 27.7 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 2 | pump.fun app | 220 bps | 220 bps | 0.36 bps | 3.43 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 3 | BasedBot | 244 bps | 341 bps | 98.4 bps | 1.75 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 4 | GMGN | 248 bps | 345 bps | 99.2 bps | 10.8 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 5 | Terminal | 306 bps | 411 bps | 98.7 bps | 16.9 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 6 | BONKbot | 310 bps | 409 bps | 98.7 bps | 58.3 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 7 | Trojan | 352 bps | 452 bps | 97.5 bps | 87.0 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 8 | Banana Gun | 359 bps | 455 bps | 98.0 bps | 89.5 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 9 | Bloom | 363 bps | 459 bps | 99.3 bps | 54.4 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 10 | Maestro | 379 bps | 480 bps | 98.0 bps | 68.3 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 11 | Axiom | 383 bps | 478 bps | 95.8 bps | 26.2 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 12 | Pepeboost | 383 bps | 480 bps | 97.2 bps | 41.9 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| 13 | Photon | 410 bps | 463 bps | 97.5 bps | 73.5 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Measured, not ranked: sample below the ranking floor | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | Binance | 138 bps | 187 bps | 47.7 bps | 8.03 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| not ranked | Phantom | 209 bps | 315 bps | 84.8 bps | 7.37 bps | 100.00% | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
Every transaction behind these numbers
The most recent transactions of each row (3000 in all, 2840priced), 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; 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 v5 · as of Wed, 30 Sep 2026 13:20:46 UTC
| When | Terminal | Transaction | Side · route | Trade | In $ | Out $ | Loss | Exec | Where it goes | App fee | Net | Protocol | Pool | Rent | Reference | Sandwich |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 09-30 13:20:36 | 0xfa29…4c42 | buyuniswap-v3from Robinhood | $73 | $73 | $71 | 229 | 129 | 100 | 2 | 0 | 127 | — | exact mid | — | ||
| 09-30 13:20:36 | 0xa644…4457 | selluniswap-v4from Robinhood | $309 | $309 | $288 | 675! | 581! | 94 | 89 | 0 | 492 | — | exact mid | — | ||
| 09-30 13:20:36 | 0x7d23…bcab | selluniswap-v4from Arc | $4.02 | $4.02 | $3.89 | 315 | 218 | 98 | 16 | 0 | 202 | — | exact mid | — | ||
| 09-30 13:20:36 | 0xe0d8…c171 | buyuniswap-v21from BNB | $5,444 | $5,444 | $5,055 | 715 | 616 | 99 | 7 | 0 | 609 | — | exact mid | — | ||
| 09-30 13:20:36 | 0xb627…2651 | selluniswap-v32from Ethereum | $137 | $137 | $135 | 169 | 119 | 49 | 88 | 0 | 31 | — | exact mid | — | ||
| 09-30 13:17:37 | 0x1940…3306 | buyuniswap-v3from HyperEVM | $26 | $26 | $26 | 211 | 111 | 100 | 4 | 0 | 107 | — | exact mid | — | ||
| 09-30 13:17:10 | x8ozEf…Xqqj | selluniswap-v4from Robinhood | $7.43 | $7.43 | $6.93 | 666 | 563 | 104 | 80 | 0 | 432 | — | exact mid | — | ||
| 09-30 13:17:01 | WpK2f4…SnL7 | buyraydium-cpmm2via X | $29 | $29 | $28 | 319 | 234 | 85 | 3 | 0 | 231 | — | exact mid | — | ||
| 09-30 13:14:57 | ZLZz1A…6TEv | buyorca | $5.00 | $5.00 | $4.82 | 371 | 272 | 100 | 100 | 0 | 171 | — | exact mid | clean | ||
| 09-30 13:14:39 | 3bgPW4…htVR | sellraydium-launchpad1via X | $5.53 | $5.53 | $5.27 | 466 | 369 | 98 | 138 | 99 | 132 | — | exact mid | clean | ||
| 09-30 13:14:35 | 0xcd07…8a2c | buyuniswap-v41from Base | $137 | $137 | $132 | 319 | 121 | 197 | 13 | 0 | 108 | — | exact mid | — | ||
| 09-30 13:14:01 | 0x4645…6c09 | buyuniswap-v3from Solana | $77 | $77 | $76 | 125 | 113 | 12 | 9 | 0 | 22 | — | exact mid | — | ||
| 09-30 13:13:41 | 4BooEn…mqJn | buypump-curve | $17 | $17 | $17 | 138 | 138 | 0 | 1 | 124 | 14 | — | exact mid | clean | ||
| 09-30 13:13:13 | 55VxXz…witn | buypumpswap | $5.09 | $5.09 | $4.80 | 560 | 463 | 96 | 368 | 76 | 20 | $0.19 | exact mid | clean | ||
| 09-30 13:12:33 | 64x566…EW5c | sellpumpswap1via X | $80 | $80 | $77 | 393 | 295 | 98 | 15 | 219 | 60 | — | exact mid | clean | ||
| 09-30 13:11:35 | 0xa01d…bcc0 | buyuniswap-v41from Base | $273 | $273 | $265 | 312 | 114 | 199 | 1 | 0 | 113 | — | exact mid | — | ||
| 09-30 13:09:24 | 3mytWi…8e54 | buymeteora-dlmm | $13 | $13 | $11 | 1535 | 1438 | 97 | 249 | 97 | 1093 | $0.19 | exact mid | clean | ||
| 09-30 13:09:20 | 31QwL8…4LLf | sellpumpswap2via X | $3.75 | $3.75 | $3.58 | 472 | 373 | 100 | 328 | 16 | 29 | — | exact mid | clean | ||
| 09-30 13:08:37 | 0xd47e…7f94 | buyuniswap-v41from Robinhood | $546 | $546 | $498 | 875 | 776 | 99 | 1 | 0 | 775 | — | exact mid | — | ||
| 09-30 13:08:37 | 0xd01a…1785 | buyuniswap-v21from BNB | $233 | $233 | $227 | 267 | 167 | 100 | 5 | 0 | 161 | — | exact mid | — | ||
| 09-30 13:08:37 | 0x5fae…02da | selluniswap-v2from BNB | $7.85 | $7.85 | $7.33 | 661 | 609 | 52 | 192 | 0 | 417 | — | exact mid | — | ||
| 09-30 13:07:38 | 3FsEDv…bEfo | buyraydium-launchpad2via X | $5.51 | $5.51 | $5.33 | 328 | 244 | 85 | 18 | 97 | 128 | — | exact mid | clean | ||
| 09-30 13:07:11 | 0xfcf6…aab5 | buylaunchpad-curvefrom Solana | $15 | $15 | $14 | 442 | 397 | 45 | 36 | 296 | 22 | — | exact mid | — | ||
| 09-30 13:06:56 | 0xfcc5…9161 | buyuniswap-v4from Solana | $9.00 | $9.00 | $8.69 | 342 | 297 | 45 | 105 | 0 | 1 | — | exact mid | — | ||
| 09-30 13:06:30 | 2BjCKo…mVN1 | buypumpswap1 | $3.50 | $3.50 | $3.36 | 402 | 260 | 143 | 143 | 97 | 20 | — | exact mid | clean | ||
| 09-30 13:05:36 | 0x559f…2ad5 | selllaunchpad-curvefrom Robinhood | $51 | $51 | $49 | 307 | 209 | 98 | 3 | 99 | 107 | — | exact mid | — | ||
| 09-30 13:05:36 | 0xdbfe…3bc1 | selluniswap-v4from Arc | $14 | $14 | $13 | 339 | 242 | 97 | 3 | 0 | 239 | — | exact mid | — | ||
| 09-30 13:05:14 | 0xbaf4…8bd2 | buyuniswap-v4from Solana | $285 | $285 | $276 | 313 | 268 | 45 | 91 | 0 | 112 | — | exact mid | — | ||
| 09-30 13:04:50 | 4sexgV…9rfd | buypumpswap | $15 | $15 | $15 | 130 | 130 | 0 | 1 | 100 | 30 | — | exact mid | clean | ||
| 09-30 13:04:49 | 0xe9eb…55cc | buyuniswap-v4from Solana | $20 | $20 | $20 | 182 | 132 | 50 | 14 | 0 | 116 | — | exact mid | — | ||
| 09-30 13:04:43 | Gax8vP…tTbm | buyrelayfrom Robinhood | $12 | $12 | $12 | 113 | 73 | 41 | 32 | 0 | 0 | — | exact mid | — | ||
| 09-30 13:03:30 | nMTkkA…mC6i | sellraydium-launchpad1via X | $12 | $12 | $12 | 386 | 288 | 98 | 20 | 116 | 152 | — | exact mid | clean | ||
| 09-30 13:03:20 | 2Q9fng…7tVU | sellmeteora-dlmm | $57 | $57 | $55 | 263 | 164 | 98 | 0 | 0 | 164 | — | previous trade1s | clean | ||
| 09-30 13:02:33 | 3wQ3CW…c9pq | selluniswap-v4from Robinhood | $18 | $18 | $18 | 57 | 57 | 0 | 14 | 0 | 23 | — | exact mid | — | ||
| 09-30 13:01:02 | m7ymVg…1ZTg | buyrelayfrom BNB | $6.92 | $6.92 | $6.87 | 79 | 79 | 0 | 68 | 0 | 0 | — | exact mid | — | ||
| 09-30 12:59:39 | 0xd862…7fbe | buyuniswap-v41from Solana | $110 | $110 | $89 | 1915 | 1900 | 15 | 235 | 0 | 43 | — | exact mid | — | ||
| 09-30 12:59:36 | 0xd59f…a4a4 | buyuniswap-v4from Robinhood | $30 | $30 | $30 | 238! | 139! | 99 | 94 | 0 | 45 | — | exact mid | — | ||
| 09-30 12:59:36 | 0xbdc7…f5f1 | buyuniswap-v21from BNB | $65 | $65 | $61 | 617 | 570 | 47 | 312 | 0 | 258 | — | exact mid | — | ||
| 09-30 12:59:36 | 0xd4f9…b87b | buyuniswap-v3from Robinhood | $8.24 | $8.24 | $8.14 | 116 | 16 | 100 | 15 | 0 | 2 | — | exact mid | — | ||
| 09-30 12:59:36 | 0xc674…7b61 | buyuniswap-v2from Ethereum | $234 | $234 | $228 | 271 | 173 | 98 | 82 | 0 | 91 | — | exact mid | — | ||
| 09-30 12:59:18 | 4JR6k4…K1Wu | buypumpswap | $124 | $124 | $120 | 283 | 181 | 103 | 25 | 93 | 63 | $0.18 | exact mid | — | ||
| 09-30 12:59:05 | 2Jd2M2…KAin | buypumpswap | $6.32 | $6.32 | $5.70 | 984 | 902 | 82 | 307 | 96 | 498 | $0.18 | exact mid | — | ||
| 09-30 12:57:54 | 5YzHjs…RE4M | buyrelayfrom BNB | $157 | $157 | $156 | 75 | 75 | 0 | 2 | 0 | 0 | — | exact mid | — | ||
| 09-30 12:57:53 | 64p8xr…wjWS | selluniswap-v4from Robinhood | $9.92 | $9.92 | $9.42 | 503 | 417 | 86 | 54 | 0 | 363 | — | exact mid | — | ||
| 09-30 12:57:02 | 2c5rnA…gYUs | buypumpswap | $350 | $350 | $334 | 458 | 361 | 98 | 10 | 98 | 252 | — | exact mid | clean | ||
| 09-30 12:56:54 | 5oUVd8…ZSn3 | buymeteora-dlmm | $8.12 | $8.12 | $7.89 | 288 | 149 | 138 | 62 | 0 | 88 | — | exact mid | clean | ||
| 09-30 12:56:37 | 0x1721…eeb9 | buyuniswap-v3from Base | $8.25 | $8.25 | $8.14 | 133 | 79 | 54 | 49 | 0 | 30 | — | exact mid | — | ||
| 09-30 12:55:51 | 4KUBoW…yL5j | buypumpswap | $6.31 | $6.31 | $6.05 | 403 | 403 | 0 | 296 | 86 | 21 | $0.19 | exact mid | clean | ||
| 09-30 12:55:49 | 36mRda…QAdp | sellpump-curve | $212 | $212 | $199 | 595 | 499 | 95 | 6 | 126 | 367 | — | exact mid | clean | ||
| 09-30 12:55:22 | 49pZpa…PHNu | buymeteora-dbc | $102 | $102 | $98 | 400 | 300 | 100 | 30 | 0 | 270 | $0.18 | exact mid | clean |
Frequently asked
Which trading terminal loses the least per swap once its own fee is removed?
As of the last measurement, FOMO at 218 bps (p50, 24h) across 15 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