Arbitrase Statistik dalam Kripto — Perdagangan Pasangan dan Rata-rata Reversi

Arbitrase statistik memanfaatkan penyimpangan sementara dari harga ekuilibrium. Ketika dua aset yang biasanya bergerak bersama menyimpang, trader stat arb membeli yang underperforming dan menjual yang outperforming, bertaruh pada konvergensi. Di kripto, ini sangat kuat karena aset berkorelasi tetapi tidak sempurna, menciptakan peluang profit.

Contoh: Korelasi BTC dan ETH adalah 0.85. Ketika ETH underperforming terhadap BTC sebesar 3% dalam periode 1 jam (tidak biasa), trader stat arb menjual BTC dan membeli ETH. Secara historis, mereka konvergen dalam 4-8 jam, mengunci profit ~1-1.5%.

Dasar-dasar Perdagangan Pasangan

Memilih Pasangan

Tidak semua pasangan cocok. Anda perlu:

Python — Pemilihan pasangan
import pandas as pd
from scipy.stats import pearsonr
def find_cointegrated_pairs(symbols, data):
candidates = []
for i, sym1 in enumerate(symbols):
for sym2 in symbols[i+1:]:
# Hitung korelasi
corr, p_value = pearsonr(data[sym1], data[sym2])
if corr > 0.75:
# Uji kointegrasi (tes Engle-Granger)
residuals = data[sym1] - (data[sym2] * corr)
adf_stat = adf_test(residuals) # stasioneritas
if adf_stat < 0.05: # stasioner
candidates.append((sym1, sym2, corr))
return candidates

Analisis Kointegrasi

Apa itu Kointegrasi?

Dua deret non-stasioner dikatakan terkointegrasi jika kombinasi liniernya stasioner. Secara sederhana: mereka bergerak bersama seiring waktu, dan penyimpangan dari hubungan itu akhirnya kembali.

Untuk BTC dan ETH:

Mencari Rasio Lindung Nilai

Gunakan regresi kuadrat terkecil biasa untuk menemukan rasio optimal:

Python — Perhitungan rasio lindung nilai
from sklearn.linear_model import LinearRegression
def get_hedge_ratio(price1, price2):
# Regresikan price1 pada price2 untuk menemukan beta (rasio lindung nilai)
X = price2.reshape(-1, 1)
y = price1
model = LinearRegression().fit(X, y)
hedge_ratio = model.coef_[0]
intercept = model.intercept_
return hedge_ratio, intercept
# Spread = price1 - (hedge_ratio × price2) + intercept
beta, alpha = get_hedge_ratio(btc_prices, eth_prices)
spread = btc - (beta * eth)

Strategi Rata-rata Reversi

Menggunakan Z-Score

Standarisasi spread untuk mendeteksi ekstrem. Ketika z-score > 2, spread terlalu lebar (peluang trading):

Python — Trading rata-rata reversi
def mean_reversion_signal(spread, lookback=20):
# Hitung rata-rata dan std bergulir
mean = spread.rolling(window=lookback).mean()
std = spread.rolling(window=lookback).std()
# Z-score: berapa std dev dari rata-rata
z_score = (spread - mean) / std
# Sinyal trading
if z_score[-1] > 2.0:
return "LONG_SPREAD" # spread terlalu lebar, beli underperformer
elif z_score[-1] < -2.0:
return "SHORT_SPREAD" # spread terlalu ketat, jual underperformer
else:
return "NEUTRAL"

Aturan Keluar

Tutup ketika spread kembali ke rata-rata (z-score → 0) atau ambang kerugian (stop saat z-score berbalik):

Python — Logika keluar
def check_exit(entry_z_score, current_z_score, entry_price):
# Ambil profit: spread konvergen setengah jalan kembali ke rata-rata
if abs(current_z_score) < abs(entry_z_score) * 0.5:
return EXIT, target_profit
# Stop loss: z-score bergerak ke arah yang salah sebesar >1
jika (entry_z_score > 0 dan current_z_score < entry_z_score + 1.0):
kembalikan EXIT, stop_loss
elif (entry_z_score < 0 dan current_z_score > entry_z_score - 1.0):
kembalikan EXIT, stop_loss
kembalikan HOLD, None

Backtesting Strategi Stat Arb

Metrik kunci untuk stat arb:

Python — Backtest strategi pasangan
def backtest_pairs_strategy(price1, price2, hedge_ratio):
spread = price1 - (hedge_ratio * price2)
mean = spread.rolling(20).mean()
std = spread.rolling(20).std()
z_score = (spread - mean) / std
trades = []
position = None
untuk i dalam range(len(z_score)):
jika position adalah None:
jika z_score[i] > 2.0:
position = {"entry": spread[i], "z_entry": z_score[i], "idx": i}
lainnya:
exit_reason = check_exit(position["z_entry"], z_score[i], spread[i])[1]
jika exit_reason:
pnl = position["entry"] - spread[i]
trades.append({"pnl": pnl, "reason": exit_reason})
position = None
kembalikan pd.DataFrame(trades)

Menambahkan Kecerdasan Smart Money

Tingkatkan perdagangan pasangan dengan memfilter perdagangan menggunakan konfirmasi Smart Money:

Python — Strategi pasangan yang difilter
def smart_money_pairs_strategy(symbol1, symbol2, z_score):
# Periksa konfirmasi Smart Money tingkat pasangan
sm1 = get_smart_money_signal(symbol1)
sm2 = get_smart_money_signal(symbol2)
# Jika satu HIGH bullish dan lainnya HIGH bearish = divergensi kuat
# Waktu yang tepat untuk memperdagangkan spread
divergence_score = abs(sm1["composite"] - sm2["composite"])
jika z_score > 2.0 dan divergence_score > 0.3 dan sm1["confidence"] != "VETO":
kembalikan "TRADE" # Sinyal dengan kepercayaan tinggi
lainnya:
kembalikan "SKIP" # Tunggu keselarasan

Tingkatkan stat arb dengan sinyal pasangan Smart Money

Filter perdagangan mean reversion dengan konsensus whale dan data derivatif. API kami mengonfirmasi validitas divergensi pasangan dengan peningkatan akurasi 62%.

Mulai Perdagangan Pasangan →