One token on two types of exchange. The price on a CEX comes from an order book; the price on a DEX is computed algorithmically through an AMM curve. When they diverge — there's a window: buy on one side, transfer, sell on the other.Guide: how a CEX book differs from a DEX pool, why spreads appear, how to execute without bleeding to the transfer window.
The same token can be bought or sold in two places at once: on a centralised exchange (CEX) and in a decentralised exchange (DEX) pool. Prices on these sides form differently and rarely match at any given moment. CEX-DEX arbitrage is earning on that difference: buy cheap on one side, transfer the asset, sell richer on the other.
CEX — an order book. The price isn't one number but a queue of offers: some traders post the price they're willing to sell at, others the price they're willing to buy at. A trade happens when someone accepts another's offer. The price moves only when a level is 'eaten' — then the next one shows.
DEX — a liquidity pool. The pool holds reserves of two tokens (x and y), and the price is computed automatically by the formula x · y = k (the product stays constant). Each trade moves the price a little — more so the larger the trade relative to pool size. No order queue, just the pool and the formula.
Because of the mechanics difference, CEX and DEX almost never show the same price at the same moment. On heavily-traded tickers (BTC, ETH) the gap is usually in tenths of a percent — too small for arbitrage. On fresh, low-liquidity alts a 2–6% gap is the working zone.
To gauge real profit before clicking, you have to understand the mechanics on both sides — what's happening and where the costs are.
A market order takes orders from the book top-down: first it eats everything at the best ask (for a buy) or the best bid (for a sell), then the next level, and so on — until the required volume is filled. The bigger the trade relative to book depth, the worse the effective price compared to best. It's essentially the analog of AMM slippage — except instead of x · y = k, the walk goes through orderbook levels. Each trade pays a taker fee, usually 0.05–0.1% of volume.
To move the bought asset to the DEX side, you need a withdrawal — the exchange sends tokens to the specified wallet address. This takes anywhere from seconds (Solana, BSC) to 30+ minutes (Ethereum during network load) depending on the network and exchange state.
The pool holds reserves of two tokens — x and y. The price is computed by x · y = k: the product stays constant. Simple example: a pool holds 100 ETH and 100,000 USDC, so 1 ETH = 1,000 USDC. Buying 1 ETH barely moves price — total cost about 1,010 USDC. Buying 10 ETH at once moves the pool significantly, and each next ETH costs more; total cost about 11,100 USDC (effective price 1,110, 10% worse than starting). That's slippage.
In cross-chain DEX-DEX, a smart-contract bridge sits between sides. In CEX-DEX the 'bridge' is the exchange's own process: submit a withdrawal → the exchange confirms (internally) → sends an on-chain transaction → the transaction confirms on the network. The whole cycle takes 5–30 minutes and is the main risk point: during that time the pool price can move and the spread can collapse.
So in CEX-DEX one of three strategies is especially important:
The algorithm is the same for 'buy CEX → sell DEX' as for the reverse. The only difference is which side is cheaper. Steps grouped into three phases: Prep (filter + validate), Execute (buy → transfer → sell), and Close (hedge and log).
Through a scanner (Finder pings Telegram with both sides) or manually: open the token's trading page on the CEX and quote the same amount through a swap aggregator (1inch / Jupiter) — that gives real prices without delay, unlike the advertised values on CoinGecko or DexScreener. Ignore anything below the minimum acceptable gross spread after estimating costs (~1.5–2% on cheap networks, 3%+ on Ethereum).
On the CEX the token is known — the exchange vetted it at listing. On the DEX side the same ticker can hide a completely different contract (a different project with the same abbreviation or a clone-trap). Open the pool's contract address in a block explorer (Etherscan, Solscan, BscScan — for the matching chain) and compare it against the contract the exchange itself lists for that network (visible on the CEX token deposit page in your account). Mismatch = immediate pass.
On the token page in the exchange account: is withdrawal open in the required network and is deposit not paused. If the trade direction is DEX → CEX — separately check deposit in the network where the pool sits. The main thing that wipes a CEX-DEX trade is a closed deposit or withdrawal discovered after the buy.
If CEX is cheaper — market buy on the CEX. Taker fee (~0.1%) accounted for. If DEX is cheaper — swap through a DEX aggregator (1inch, Jupiter), tight slippage tolerance (0.5–1% for liquid pools), confirm wallet has native gas.
From CEX to wallet address, or from wallet to CEX deposit address. Critically: pick the right network (if the token has several). If the network requires memo/tag (an identifier field — required for TON, XRP, XLM, EOS and some BSC tokens), fill it exactly — copied from the deposit page, not from memory. Wait for confirmation before doing anything else.
Market sell on the CEX or swap through a DEX aggregator. Slippage tolerance must be tight — the spread is already narrowing from price movement during the transfer. If the post-fee difference is below plan — take what's there and don't linger: the spread lives in minutes.
If the token has perps, open a short on a CEX (same or different exchange) at the trade size at the moment of the CEX-side buy. That neutralises price movement during the transfer. Funding cost for 5–30 minutes of hedge is negligible vs a potential adverse move on a low-liquidity alt.
Record the essentials: token, direction (CEX→DEX or reverse), exchange, network, net profit, time. Detailed fee breakdown isn't needed in the moment — the overall picture matters. Without a log you can't tell which assets and routes deliver real profit vs which regularly underperform. After 50 trades, the pattern becomes visible.
The main risk of CEX-DEX. Exchanges periodically close withdrawals (network upgrades, signing incidents, cold-wallet rebalance) and deposits (chain forks, technical work). On fresh low-liquidity alts, withdrawals can be blocked for the first N days after listing — while trading is already open. Always verify status BEFORE buying on the CEX side.
Under a popular ticker on a fresh chain, a completely different contract can trade. Sometimes — good-faith confusion (another project took the same abbreviation), sometimes — a clone-trap specifically for arbitrageurs that you can buy but not sell. Either way it's not the asset the exchange lists. Always verify the pool contract address against the one the CEX lists (visible on the token deposit page) and run a quick scan through GoPlus or honeypot.is.
BSC (some tokens), TON, XRP, XLM, EOS require memo/tag (an identifier field) to credit the right account. Forget it → funds land at the general deposit address with no owner attribution. Support sometimes recovers (paid, slow), sometimes doesn't. Copy the memo from the deposit page and verify it twice.
The exchange lists a token across several networks (BSC + ETH + Tron). Picking the wrong network = funds sent to an address that doesn't exist under the other network. Recovery is complex and not always possible. The withdrawal network must exactly match where the DEX pool sits.
On low-liquidity alts, two effects compound: a small pool moves on $1k+ trades, and in 5–30 minutes of withdrawal/deposit, the price drifts too. Without a hedge, real net can be 30–50% below the alert on 4%+ spreads. Hedging with a perp short during the transfer is the simplest fix.
Step by step — a realistic CEX-DEX trade: 4.8% gross spread on WIF between a Solana pool (Raydium) and the Bybit book, $1,000 USDC notional. Numbers typical for a popular memecoin in a mid-active session.
The biggest leaks are price drift during credit and exchange fees. Solana is one of the best networks for CEX-DEX: gas near-zero, withdrawal to large CEX often free, credit in seconds.
On Ethereum mainnet the same $1000 trade would look different: gas +$10, credit slower — so more price drift (typically +$20 instead of +$6). Of the same +48 USDC gross, you'd subtract about $35 instead of $10 — net profit falls from 3.8% to 1.0–2%. That's why the same-looking trade clears on a cheap network but can break even on Ethereum.
If the withdrawal had been closed (happens with fresh tokens) — the trade couldn't have started. If under our ticker a different contract was trading in the pool — you'd hold the wrong asset: at deposit, the credit wouldn't have processed (Bybit accepts only its own WIF contract), and the funds would have been locked in the wallet. That's why the checks at steps 02–03 matter.
CEX-DEX arbitrage offers two distinct opportunity types. Most of the time — a daily flow of small trades on low-liquidity alts with 2–6% spreads. On sharp moves (news, listings, panic, dump), the spread can spike to tens of percent — those windows are rare, but one or two such catches can cover a week of regular trading. Quoting alerts-per-day or monthly P&L precisely isn't possible: numbers depend on market conditions, which tokens/exchanges are tracked, reaction speed, and trade size.
Spreads widen during volatile sessions — US market open, news reactions, memecoin pump sessions. Quiet weekends produce few opportunities; high-volatility weeks produce many. The same alert delivers different results to two traders — it depends on how fast they run through checklist 02–03 and how cleanly they execute both sides.
Trade costs are made of four components: CEX taker fee (~0.1%), DEX pool fee (0.05–1%), gas on the network, and slippage — the price impact from the trade itself moving the pool. Sometimes a withdrawal fee from the exchange is added.
That gives two hard rules:
Unlike CEX-CEX, you don't need accounts on multiple exchanges — one CEX and a wallet is enough. Unlike cross-chain DEX-DEX, there's no bridge and no bridge-hack risk. But you get the withdrawal window: the exchange in the bridge role, and its withdrawal halt = funds locked.
Manually tracking every CEX listing against every DEX pool isn't possible: Bybit alone has 800+ spot pairs, plus 30+ DEX chains with their own pools. Finder runs the comparison in the background: for each token with a pool, finds every CEX listing, walks the pool's AMM curve at the default volume, accounts for taker fees, and pings Telegram only when the net spread is genuinely actionable.
What lands in your channel and what the dashboard looks like — below.
DEX side covers actively-traded pools across the tracked chains. CEX side covers the same 20+ exchanges as Spot–Spot.
CEX exchanges paired against pools: Binance, Bybit, OKX, Bitget, KuCoin, MEXC, Gate, BingX, HTX, Coinex, Bitmart, LBank, XT, Phemex, AscendEX, Hotcoin, Hyperliquid, Lighter, EdgeX.
Header carries the token, spread%, magnitude, profit at $1k, and the chain the pool lives on. Buy and Sell rows show the trade direction with a swap link on the DEX side and an exchange deeplink on the CEX side.
The CEX–DEX block lists every exchange trading the token, the pool address, liquidity, FDV, and a token-age check (days since pool created — protects against fresh launches that haven't priced yet).
WIF 4.82% ⚡(41$ on $1000) | SOL
EPjFWdd5...DkZwyTDt1v0x4206931337...d4b8a
CEX-DEX signals arrive in the same web terminal as the other arbitrage types. The CEX-DEX chip filter at the top of the table leaves only exchange-pool pairs on screen, hiding CEX-CEX and DEX-DEX.
Each row — token, buy and sell exchanges, price, spread with profit at the default size, and a mini 24h spread chart. The row can be expanded to see every alternative route for the same token.
All arbitrage types are included with no tiers or quotas while the product is in beta.
All arbitrage types, every exchange, every alert tier — no plans, no card, no quota. We'll announce pricing before launch; early users keep grandfathered terms.
So you don't have to do it by hand — the ping arrives when the spread, after every cost, is still worth taking. All the information you need to act is in the message.
Get alerts