Arbitrage crypto là chiến lược khai thác chênh lệch giá giữa các sàn hoặc các cặp giao dịch để kiếm lợi nhuận gần như không rủi ro về mặt lý thuyết. Trên thực tế, tốc độ và chi phí là thách thức lớn nhất.
Arbitrage Là Gì?
Arbitrage = mua tài sản ở nơi giá thấp hơn và bán ở nơi giá cao hơn cùng lúc, kiếm lời từ chênh lệch.
Ví dụ đơn giản:
- BTC trên Binance: $65,000
- BTC trên OKX: $65,150
- Chênh lệch: $150 (0.23%)
Mua BTC trên Binance, bán trên OKX → lợi nhuận $150 (trừ phí giao dịch).
3 Loại Arbitrage Crypto
1. Inter-Exchange Arbitrage
Khai thác chênh lệch giá của cùng một tài sản giữa hai sàn khác nhau.
Thách thức thực tế:
- Cần vốn sẵn có trên cả hai sàn cùng lúc (không thể chuyển tiền kịp)
- Chênh lệch thường chỉ 0.1-0.5% — phí giao dịch (0.1% × 2 = 0.2%) ăn gần hết lợi nhuận
- Cơ hội tồn tại < 1 giây trước khi market maker bắt kịp
2. Triangular Arbitrage (Tam giác)
Khai thác chênh lệch giữa 3 cặp giao dịch trên cùng một sàn.
Ví dụ:
BTC/USDT = 65,000
ETH/USDT = 3,500
ETH/BTC = 0.0538 (lẽ ra phải = 3500/65000 = 0.05385)
Nếu ETH/BTC đang underpriced:
1. Mua ETH bằng USDT
2. Bán ETH lấy BTC (giá tốt hơn)
3. Bán BTC lấy USDT
→ Lợi nhuận từ chênh lệch tỷ giá
3. Statistical Arbitrage
Hai tài sản có giá tương quan cao (như BTC và ETH) — khi spread giữa chúng lệch xa trung bình lịch sử, bot đặt cược chúng sẽ converge về mean.
Đây là dạng arbitrage phổ biến nhất hiện tại vì không cần tốc độ mili-giây như inter-exchange.
Bot Triangular Arbitrage Với CCXT
import ccxt
import itertools
exchange = ccxt.binance({
'apiKey': 'YOUR_KEY',
'secret': 'YOUR_SECRET',
})
def find_triangular_opportunity(base='USDT', min_profit=0.003):
"""Tìm cơ hội arbitrage tam giác trên Binance"""
markets = exchange.load_markets()
# Lấy tất cả cặp USDT
usdt_pairs = [s for s in markets if s.endswith('/USDT')]
opportunities = []
tickers = exchange.fetch_tickers()
for pair1 in usdt_pairs[:50]: # Giới hạn để tránh rate limit
coin = pair1.split('/')[0]
pair2 = f"{coin}/BTC" # Coin/BTC
pair3 = "BTC/USDT"
if pair2 not in tickers or pair3 not in tickers:
continue
price1 = tickers[pair1]['ask'] # USDT → Coin
price2 = tickers[pair2]['bid'] # Coin → BTC
price3 = tickers[pair3]['bid'] # BTC → USDT
# Tính lợi nhuận sau phí (0.1% × 3 legs = 0.3%)
profit = (1 / price1) * price2 * price3 - 1 - 0.003
if profit > min_profit:
opportunities.append({
'path': f"USDT→{coin}→BTC→USDT",
'profit': f"{profit*100:.3f}%",
'legs': [pair1, pair2, pair3]
})
return sorted(opportunities, key=lambda x: x['profit'], reverse=True)
opportunities = find_triangular_opportunity()
for opp in opportunities[:5]:
print(opp)
Statistical Arbitrage: BTC-ETH Spread
import pandas as pd
import numpy as np
def calculate_zscore(series, window=20):
mean = series.rolling(window).mean()
std = series.rolling(window).std()
return (series - mean) / std
# Lấy dữ liệu
btc_df = pd.DataFrame(exchange.fetch_ohlcv('BTC/USDT', '1h', limit=200))
eth_df = pd.DataFrame(exchange.fetch_ohlcv('ETH/USDT', '1h', limit=200))
btc_df.columns = eth_df.columns = ['ts', 'open', 'high', 'low', 'close', 'vol']
# Tính ratio
ratio = btc_df['close'] / eth_df['close']
zscore = calculate_zscore(ratio)
# Tín hiệu
current_zscore = zscore.iloc[-1]
if current_zscore > 2:
print("BTC đắt so với ETH → Short BTC / Long ETH")
elif current_zscore < -2:
print("ETH đắt so với BTC → Long BTC / Short ETH")
else:
print(f"Spread bình thường (z-score: {current_zscore:.2f})")
Thực Tế Về Arbitrage Năm 2026
Năm 2026, inter-exchange arbitrage gần như không còn khả thi cho retail trader vì:
- Market maker chuyên nghiệp với HFT (High Frequency Trading) phản ứng trong microseconds
- Phí rút/nạp tiền giữa sàn ăn vào lợi nhuận đáng kể
Cơ hội còn lại:
- Statistical arbitrage với horizon 1-4 giờ — ít cạnh tranh hơn
- DeFi arbitrage giữa các protocol (Uniswap, Curve) — cần smart contract knowledge
- Funding rate arbitrage (perpetual futures) — arbitrage lãi suất funding
Học cách xây dựng hệ thống arbitrage hoàn chỉnh tại Hướng Nghiệp Dữ Liệu.