When two pools quote the same pair at different effective prices, compare executable output after fees and price impact; arbitrage trades tend to close the gap only while the spread covers every cost. For a trade you are placing now, check the pair, pool fee, active liquidity and quote size before treating a displayed price difference as an opportunity.
- Arbitrage buys the asset where it is cheaper and sells it where it is dearer.
- Each trade moves the pool price, so the initial spread overstates the profit available.
- Fees, gas and execution risk set the point where correcting the gap stops paying.
What makes two pools disagree?
Each pool prices a pair from its own reserves or active liquidity, and trades update that state independently. In a constant-product pool, reserves x and y follow xy = k, so the marginal price of X in units of Y is y/x; a trade also incurs price impact as it moves along the curve.
A large buy in one pool can lift its X price while another pool remains untouched. Prices can also diverge after a move on another venue, a change in pool liquidity, or simply because the pools serve different order flow. The Uniswap v2 whitepaper sets out the constant-product mechanism; the exact curve and fee rules depend on the pool implementation.
How does an arbitrage trade realign them?
If pool A offers X for less Y than pool B, an arbitrageur buys X from A and sells it into B. The first leg removes X from A and adds Y, raising A’s price; the second adds X to B and removes Y, lowering B’s price. The price gap narrows from both sides.
For example, suppose the two pools initially quote X at 100 Y and 106 Y. A bot does not earn the full 6 Y difference on every unit: buying X makes it progressively more expensive in A, while selling X makes it progressively cheaper in B. The best trade size is where the next unit’s expected spread is consumed by both pools’ swap fees, curve impact and execution costs.
Blackhole Swap gives you the live Avalanche pool route to inspect, so you can check whether a price difference remains at the size you intend to trade. Its pool’s quote is local to that pool state; a price shown elsewhere may use a different pool, route or block. Compare the actual output amounts rather than relying on headline spot prices.
When is the gap large enough to trade?
Use the pool’s configured fee, not a DEX-wide assumption: fee rates vary by pool and can materially change the break-even spread. With two pools charging, say, 0.3% each, a tiny gap is already consumed by roughly 0.6% in fees before price impact or gas; the exact threshold depends on trade size and pool depth.
On Avalanche C-Chain, account for transaction gas in AVAX as a fixed cost against the trade’s expected profit. A route through two pools may execute atomically in one transaction, but another searcher can capture the opportunity first, or a state change can make the transaction revert or return less than your minimum output. Slippage tolerance is your limit on acceptable execution, not a forecast of the trade’s likely price impact.
Angeris and co-authors’ work on constant-function market makers explains why arbitrage aligns pool prices subject to trading costs, rather than forcing exact equality. The residual gap is a no-trade band: when fees, gas and risk exceed the remaining spread, rational arbitrageurs stop, so pools can stay slightly apart.
What should you check before signing?
For an ordinary swap, use the quoted output for your exact amount, check the fee and price impact, and set a minimum received amount that reflects how much movement you can tolerate. If you are evaluating an apparent arbitrage, estimate both legs against current pool state and include gas, token transfer taxes or restrictions, and the possibility that the second venue’s liquidity is concentrated outside the price range you need.
I would trade only when the net spread remains positive after both pool fees, impact and gas, with enough margin for a competing transaction or state change. Otherwise, use the better available quote and leave the cross-pool correction to searchers whose execution costs are lower.
Top comments (0)