TradingLive

Trading terminal fill quality 2026: what a swap costs on Axiom, GMGN, FOMO, Photon, Trojan, measured on-chain

Value lost per swap on each trading terminal, wallet app or Telegram bot (Solana and five EVM chains), from real user transactions read on-chain and valued at the pool's own state before the trade. Split into what the terminal takes, what the network takes, what pump.fun and the pool take, plus the share of swap attempts that fail. Rolling 24 hours, refreshed every few minutes.

TL;DR. As of , FOMO posts the lowest cost per swap at 338 bps (p50, 24h) across 8 ranked providers. Source: OpenChainBench, https://openchainbench.com/benchmarks/terminal-fill-quality. Every swap behind these medians is listed below, one row per transaction with its explorer link.

Read this carefully

Random sample (150 a day per row, Solana and EVM alike) of the swaps each terminal routed, every attempt counted for the fail rate. Reference = the pool's state before the swap (its reserves, or the previous trade within 60 s); swaps without one keep their split, no loss figure. Published from 50 priced swaps pooled over the product's chains at 25 or more (a single-chain product from 25), ranked from 100; the median's 95 % interval is in the JSON. Compare medians, not single swaps.

Every trading terminal advertises a fee. What a swap actually costs is the fee plus the priority fee and the inclusion tip the app attaches, plus what pump.fun or the pool keep on the way, plus the price impact of the swap itself against the pool's state just before it landed, plus the swaps that fail and still burn the priority fee. None of that is in the fee schedule, all of it is in the transaction. This benchmark reads real user swaps on Solana and on the EVM chains they trade on for Axiom, GMGN, FOMO, Phantom, Photon, Trojan, Bloom, Maestro, Pepeboost, BONKbot, Banana Gun, Binance Wallet, Terminal, BasedBot and pump.fun's own app, values the tokens received at the pool's state before the swap (its reserves, or the previous trade on it seconds earlier) and publishes the median shortfall in basis points with its split: terminal, network, pool, other. A terminal fee of 1 % is 100 bps; the median swap on most terminals loses three to five times that.

Methodology

Each terminal takes its fee through known wallets. A live WebSocket feed of every transaction mentioning those wallets, with its program logs, says which ones attempted a swap and whether they failed; the harness counts them all (fail rate) and reads 150 successful ones per row per day, drawn at random. From the pre/post balances of every account in the transaction it derives, in quote units (SOL or a $1 stable), what left the user, what the pool received, what reached the terminal's fee wallets (on the EVM rows: the router's residual after the pool and the gas), the tx fee and the inclusion tips, and the rest (pump.fun protocol and creator fees, referral payouts). The pool is the vault pair of the swap instruction, by pubkey, so a hop through another pool of the same program is never mistaken for pool impact. The token leg is valued at the pool's mid before the swap: exactly from the pool's pre-trade balances in the transaction on PumpSwap (with the virtual quote reserve its migrated pools store) and Raydium, else at the effective price of the previous trade on the same pool, at most 60 seconds earlier. Loss = 1 − value received / value given, in basis points of the trade; terminal, network and other are exact and independent of the reference, pool is the remainder. Rolling 24 hour window, medians with a bootstrap interval, p90, trade size and venue mix per terminal; published from 50 priced swaps, ranked from 100.

Results: 13 providers measured, 8 ranked by Cost per swap (p50, 24h)

Trading terminal fill quality 2026: what a swap costs on Axiom, GMGN, FOMO, Photon, Trojan, measured on-chain: Cost per swap per provider (p50, 24h).
№Providersp50Terminal feeNetworkPoolSuccess
1FOMO338 bps150 bps25.8 bps109 bps100.00%
2GMGN345 bps100 bps22.7 bps66.5 bps100.00%
3Axiom397 bps86.9 bps12.8 bps138 bps100.00%
4BONKbot417 bps98.8 bps50.0 bps65.6 bps100.00%
5Trojan440 bps97.6 bps75.9 bps68.9 bps100.00%
6Terminal444 bps98.5 bps27.5 bps59.2 bps100.00%
7Pepeboost484 bps97.7 bps36.8 bps78.0 bps100.00%
8Maestro489 bps98.1 bps83.7 bps116 bps100.00%
Measured, not ranked: sample below the ranking floor
not rankedBinance Wallet208 bps49.6 bps12.8 bps122 bps100.00%
not rankedpump.fun app239 bps0 bps3.86 bps52.9 bps100.00%
not rankedPhantom258 bps84.7 bps8.83 bps104 bps100.00%
not rankedPhoton414 bps98.1 bps54.3 bps47.2 bps100.00%
not rankedBloom476 bps98.9 bps92.8 bps61.2 bps100.00%

Every transaction behind these numbers

The most recent transactions of each row (3000 in all, 2660priced), 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. 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 Sun, 11 Oct 2026 19:40:17 UTC

3,000 swaps2,660 priced331 bps median loss, flow-weighted363 bps counting each row once0 / 1050 sandwiched / screened299 flagged
WhenTerminalTransactionSide · routeTradeIn $Out $LossWhere it goesApp feeNetProtocolPoolRentReferenceSandwich
10-11 19:39:09Banana Gun logoBanana GunRpttkP…Md7zbuyraydium-cpmm1via X$31$31$2713428911190134$0.17 exact mid—
10-11 19:39:09FOMO logoFOMO5eMMQ6…gvT6buypumpswap1$50$50$48348179117151— exact mid clean
10-11 19:39:04Pepeboost logoPepeboost4rWRFz…vEEEsellpump-curve$88$88$84543104152123164— exact mid clean
10-11 19:38:30FOMO logoFOMOon BNB via Relay0xb813…48cabuyuniswap-v3from Solana$3.49$3.49$3.4025550139030— exact mid—
10-11 19:38:17Maestro logoMaestroBNB0x8967…bfa1buyuniswap-v2from BNB$76$76$742029935068— exact mid—
10-11 19:38:06BONKbot logoBONKbotrdtZKf…eo6Lbuypumpswap$39$39$3830499719736$0.17 exact mid clean
10-11 19:38:03Terminal logoTerminal1Ldihd…x6X2buyraydium-cpmm2via X$23$23$224809812362198$0.17 exact mid clean
10-11 19:36:33Axiom logoAxiom5FL8ss…nuBZbuypump-curve1via X$70$70$674641038046235$0.34 previous trade0s clean
10-11 19:36:30Maestro logoMaestro52WAKz…CRFfbuypumpswap1via X$6.18$6.18$5.54103490902933— exact mid clean
10-11 19:36:13FOMO logoFOMOon Arc via Relay0xcb1b…e754buyuniswap-v4from Solana$100$100$973235040268— exact mid—
10-11 19:36:04Photon logoPhoton4qpKG8…BBAYbuypumpswap$12$12$115459724318223$0.17 exact mid clean
10-11 19:35:16GMGN logoGMGNEthereum0xdc57…6218buyuniswap-v41from Ethereum$21$21$2046619426309— exact mid—
10-11 19:35:16Maestro logoMaestroEthereum0xc101…98c0buyuniswap-v2from Ethereum$127$127$121483981500236— exact mid—
10-11 19:35:16Binance logoBinanceEthereum0xf10b…3120buyuniswap-v4from Ethereum$351$351$3276765930613— exact mid—
10-11 19:35:16Bloom logoBloomRobinhood0x5b2b…741ebuylaunchpad-curvefrom Robinhood$25$25$24453100529752— exact mid—
10-11 19:35:16Maestro logoMaestroRobinhood0x7806…cb37buyuniswap-v4from Robinhood$506$506$489345!9900246— exact mid—
10-11 19:34:09Trojan logoTrojan39uqiL…bbPVsellpump-curve1via X$5.09$5.09$4.48121099987125-1$0.17 previous trade0s clean
10-11 19:34:07FOMO logoFOMOon Robinhood via Relay0x5457…a462buyuniswap-v41from Solana$100$100$9731250170245— exact mid—
10-11 19:33:28GMGN logoGMGN4E3QX4…t98bbuypumpswap$5.93$5.93$5.497399432729028$0.17 exact mid clean
10-11 19:33:01pump.fun app logopump.fun app3taxfC…UFzcbuypumpswap4$100$100——036——$0.34 unpriced clean
10-11 19:32:19GMGN logoGMGNRobinhood0x6449…0250selluniswap-v4from Robinhood$39$39$383199830217— exact mid—
10-11 19:32:19GMGN logoGMGNBNB0x708d…ce20buyuniswap-v21from BNB$76$76$72561991220340— exact mid—
10-11 19:32:19Binance logoBinanceBase0x20f6…e98dbuyuniswap-v3from Base$888$888$878118490069— exact mid—
10-11 19:32:19Axiom logoAxiomRobinhood0x8a26…89c5buyuniswap-v4from Robinhood$114$114$107651982250328— exact mid—
10-11 19:31:56FOMO logoFOMOon Base via Relay0x6ee2…f030buyuniswap-v4from Solana$4.52$4.52$4.422174571099— exact mid—
10-11 19:29:46Axiom logoAxiom4xFtzc…Q2ssbuypump-curve2via X$11$11$115098520128276— previous trade0s clean
10-11 19:29:26FOMO logoFOMOE6gsA5…Vcckbuymeteora-dlmm3$196$196$1902895004235— exact mid—
10-11 19:29:24FOMO logoFOMOon Ethereum via Relay0xdcce…aceabuyuniswap-v3from Solana$100$100$991105026033— exact mid—
10-11 19:29:17GMGN logoGMGNBase0xbc32…75b8buyuniswap-v32from Base$98$98$9625110020148— exact mid—
10-11 19:28:55Terminal logoTerminal3NcCkd…TmuWsellpump-curve1via X$6.18$6.18$5.88492981930471— previous trade0s clean
10-11 19:28:37FOMO logoFOMOon BNB via Relay0xb727…6842buyuniswap-v3from Solana$500$500$490209530179— exact mid—
10-11 19:28:24Phantom logoPhantom3cM5ML…ZTRnsellmeteora-dlmm$100$100$981858410100— exact mid clean
10-11 19:26:16Maestro logoMaestroHyperEVM0xbe25…5ce5selluniswap-v3from HyperEVM$242$242$239142996037— exact mid—
10-11 19:24:07pump.fun app logopump.fun app4rE5jA…bE6Kbuypumpswap3via X$14$14$142820243039$0.34 exact mid clean
10-11 19:24:03Binance logoBinanceBase0x3ae5…ec38selluniswap-v31from Base$22$22$221665030113— exact mid—
10-11 19:24:03Binance logoBinanceBNB0x75eb…b551buyfour-memefrom BNB$5.03$5.03$4.922095057984— exact mid—
10-11 19:24:03GMGN logoGMGNRobinhood0x2baa…5b85buyuniswap-v4from Robinhood$118$118$11344010030336— exact mid—
10-11 19:22:30Maestro logoMaestro3MQ4KE…qS5Qsellpumpswap$27$27$272702124-100— exact mid clean
10-11 19:22:04Bloom logoBloom2p5dv8…NRvLsellpump-curve$14$14$13333999012520— exact mid—
10-11 19:20:21FOMO logoFOMO4C8VDa…qJUgsellpump-curve2$11$11$11339160405287— exact mid clean
10-11 19:20:14Maestro logoMaestroBase0xa46f…fa8bselluniswap-v4from Base$179$179$170497!19240301— exact mid—
10-11 19:20:07Terminal logoTerminal5WCy2d…CKfpbuypump-curve$4.74$4.74$4.35831943803498$0.17 exact mid clean
10-11 19:19:53Axiom logoAxiom2Qah2Y…oJTdsellpump-curve2via X$28$28$27401971117187— previous trade0s clean
10-11 19:19:23FOMO logoFOMOon BNB via Relay0xee89…efbebuyuniswap-v21from Solana$2.00$2.00$1.8952945435024— exact mid—
10-11 19:19:06Phantom logoPhantom4n6ySv…HfPSsellpumpswap$4.72$4.72$4.661388519102-68— exact mid clean
10-11 19:17:49BONKbot logoBONKbot33e44U…1EKmbuypumpswap$131$131$122688100993487— exact mid clean
10-11 19:17:12Maestro logoMaestroBNB0x4b05…a987buyuniswap-v2from BNB$15$15$1316329814901385— exact mid—
10-11 19:17:12Maestro logoMaestroRobinhood0x8673…5938buyuniswap-v4from Robinhood$5.08$5.08$5.02126992502— exact mid—
10-11 19:16:44GMGN logoGMGN3UxvSj…39izbuypumpswap1via X$4.50$4.50$4.4022799410520— exact mid clean
10-11 19:16:39FOMO logoFOMOon Base via Relay0x621b…f96cbuyuniswap-v2from Solana$25$25$251345016063— exact mid—
Showing 50 of 3000

Frequently asked

What is the reference price and why does it matter?

The token side of a swap has no price of its own; it has to be valued at something. This bench values it at the pool's mid price just before the swap: exactly, from the pool's own pre-trade balances in the transaction, on PumpSwap (with the virtual quote reserve its migrated pools store), Raydium, Launchpad, Meteora DLMM, four.meme and the EVM pools; and, where the pool's formula is not known or the route crosses several pools, at the effective price of the previous trade on the same pool, at most 60 seconds earlier and usually under one. That is the arrival price a TCA desk would use. Valuing at the price after the swap would hide the trade's own impact. When neither is available the swap keeps its exact cost split but no loss figure; no off-chain token price is used for the token side; on the EVM rows the gas-coin leg is valued at the route's own stable-to-gas hop pre-trade mid (the executed rate as fallback), and origin gas at Coinbase spot.

Why is the loss much larger than the terminal's 1 % fee?

Because the fee is one of five costs. On a pump.fun curve or PumpSwap trade the protocol and creator fees add roughly 1 to 1.4 %, the pool keeps its LP fee and the price impact of the trade, the app attaches a priority fee and often an inclusion tip, and the pool's price may already have moved between the arrival trade and ours. The split is published per terminal so the terminal-attributable part is visible on its own.

Is this comparable across terminals?

The explicit components (terminal, network) are exact and terminal-attributable. The pool component depends on what users trade and how much, which differs per app (Photon's and FOMO's median swaps are about $20), so read the total loss together with the trade size column and the size buckets. A terminal is marked ranked from 100 priced swaps; read the 95 % interval next to each median, adjacent ranks often overlap; single swaps are not comparable.

Are sandwiches counted?

Screened, not ranked. A sandwich's two legs both touch the pool, so they are the user's neighbours in the pool's own transaction sequence: another signer trading the same direction just before, and back just after, in the same slot or the next. Every hit is in the JSON with the attacker and both signatures. It is not a column because the share of swaps that can be screened depends on how busy the pool is, which differs per terminal. The victim's extra cost is not a separate line either: the front-run precedes the user's swap, so the arrival price already carries it inside the pool component.

How is a swap attributed to a terminal?

By the fee it pays: every terminal transfers its fee to known wallets in the same transaction, and those wallet lists are the ones DeFiLlama's adapters use for volume, so attribution matches benches 201 and 267. Where the fee wallet is not enough: pump.fun's app and Banana Gun by their programs, Phantom by its fee token account, FOMO by the vanity account every FOMO transaction carries (its gas sponsor signs and is excluded as user), the EVM rows by the router the transaction was sent to (Binance Wallet from blocks read in full), the cross-chain rows by Relay's referrer or fee recipient (FOMO 0x9fc4…, pump.fun app 0xdab3…, verified by the Solana users behind them).

Source code github.com/ChainBench/OpenChainBench/tree/main/harnesses/terminal-fill-quality