Spotting the gap is the easy part. This guide covers what actually happens between seeing a price difference and walking away with profit — fee math, capital positioning, simultaneous execution, and how to close cleanly.
Cross-exchange arbitrage is the most direct form of crypto arbitrage: the same asset trades at two different prices on two different exchanges at the same moment. You buy where it's cheap and sell where it's expensive — simultaneously — and the spread is your profit.
Unlike triangular arbitrage (which runs a loop on one exchange) or funding rate arb (which earns passive payments over time), cross-exchange arb is transactional. You enter, capture the gap, and exit. The entire trade can last seconds if both legs are pre-positioned and execution is clean.
The key constraint: both legs must execute as close to simultaneously as possible. If you buy first and then the gap closes before you can sell, you own the asset at market price with no edge. Pre-positioned capital on both exchanges eliminates the need to transfer coins mid-trade.
Here's what a real cross-exchange opportunity looks like when it fires. The scanner shows SOL/USDT with a significant price gap between two exchanges:
On $1,000 capital, +2.07% net = +$20.70 profit per trade. ArbVertex only signals gaps that have already cleared the fee threshold — you act, you don't calculate on the fly.
Fees are the single biggest factor in whether a cross-exchange trade is profitable. Every trade involves four fee events: two opens (buy on A, sell on B) and two closes when you unwind. Understanding the exact cost structure is non-negotiable before entering any trade.
| Exchange | Standard Taker | VIP/BNB/Discount | Round-trip cost |
|---|---|---|---|
| Binance | 0.10% | 0.04% (BNB discount) | 0.08% (with BNB) |
| Bybit | 0.10% | 0.055% (VIP1) | 0.11% (VIP1) |
| Gate.io | 0.20% | 0.10% (VIP1) | 0.20% (VIP1) |
| MEXC | 0.20% | 0.00% (promo) | 0.00% (promo periods) |
| KuCoin | 0.10% | 0.06% (KCS discount) | 0.12% (KCS) |
| Bitget | 0.10% | 0.06% (VIP1) | 0.12% (VIP1) |
Binance's BNB fee discount (25% off) and MEXC's periodic zero-fee promotions can meaningfully change minimum viable spread thresholds. With Binance BNB + Bybit VIP1, your combined round-trip cost drops to ~0.19% — meaning a 0.25% gap is already profitable. Always check current fee schedules as these change.
Let's run the complete numbers on the SOL scenario above with $2,000 total capital ($1,000 on each exchange):
The other $1,000 (SOL pre-held on Bybit) is used as the sell-side inventory — it's not consumed, just repositioned. After the trade, you have more USDT on Bybit and less SOL there, while Binance has more SOL and less USDT. The rebalancing step (described below) resets you for the next trade.
The biggest mistake beginners make is trying to buy on Exchange A and then withdraw the coin to Exchange B to sell. Blockchain confirmations take 10 minutes to 2 hours — the gap closes in seconds. You need capital already sitting on both exchanges before any signal fires.
After the trade, Exchange A has more coin and less USDT. Exchange B has more USDT and less coin. You can either wait for a reverse gap on the same pair (which naturally rebalances), or periodically rebalance by transferring USDT from Bybit back to Binance and coin from Binance back to Bybit via the most cost-effective network.
A practical starting allocation: keep 60% of your capital as USDT spread across 2–3 exchanges, and 40% as a coin inventory (BTC, ETH, SOL split evenly) across those same exchanges. This gives you buy-side liquidity and sell-side inventory simultaneously, without over-concentrating in any single position.
When a gap signal fires, this is the exact sequence of actions:
Open both exchange apps side by side (or use ArbVertex scanner). Confirm the bid/ask prices still show the gap. Gaps can close in under 10 seconds — if the spread has already compressed to under 0.5%, stand down.
Decide how much capital to deploy. Consider: order book depth on both exchanges (can you fill without moving price?), your available inventory on the sell side, and your total exposure limit per trade.
Position size = min(buy-side USDT, sell-side inventory value)Open the buy order on the cheap exchange in one window/tab, and the sell order on the expensive exchange in another. Submit both as close together as possible — ideally within 2–3 seconds. Use market orders for guaranteed fills (taker fees apply), or limit orders at the current ask/bid if the gap is large enough to absorb them.
Check trade history on both exchanges. If one leg didn't fill or partially filled, assess your net position. A partial fill on the sell side while the buy fully filled means you're holding long exposure — decide quickly whether to hold or flatten at market.
Your capital is now misallocated — more coin on the buy exchange, more USDT on the sell exchange. Options: wait for a reverse gap that naturally rebalances, or transfer USDT via a low-fee stablecoin bridge (USDT on TRC-20 is ~$1 flat transfer fee). Don't leave capital locked in an imbalanced state for multiple days.
The displayed price in the order book is for the first unit. If you're buying $2,000 worth of SOL and the order book has $500 at the displayed price, the next $1,500 will fill at progressively worse prices. Always check order book depth before entering — if your full position size isn't available within 0.2% of the displayed price, the real spread after slippage may be smaller than it appears.
Every signal from ArbVertex has already had the fee math done. The 2%+ net gap threshold accounts for standard taker fees on both sides plus an estimated slippage buffer. You don't need to calculate anything on the fly — you just need to execute both legs before the gap closes.