ארביטראז' סטטיסטי בקריפטו — מסחר בזוגות ושיבה לממוצע

ארביטראז' סטטיסטי מנצל סטיות זמניות ממחירי שיווי משקל. כאשר שני נכסים שבדרך כלל נעים יחד מתרחקים, סוחר ארביטראז' קונה את הנכס החלש יותר ומוכר בחסר את החזק יותר, בהנחה שהפער יצטמצם. בשוק הקריפטו זה יעיל במיוחד כי הנכסים קשורים אך לא מושלם, מה שיוצר הזדמנויות רווחיות.

דוגמה: המתאם בין BTC ל-ETH הוא 0.85. כאשר ETH נחלש ב-3% לעומת BTC בטווח שעה (חריג), סוחר ארביטראז' מוכר בחסר את BTC וקונה ETH. מבחינה היסטורית, הפער מצטמצם תוך 4-8 שעות, עם רווח של ~1-1.5%.

יסודות מסחר בזוגות

בחירת זוגות

לא כל הזוגות מתאימים. נדרש:

Python — בחירת זוגות
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:]:
# Calculate correlation
corr, p_value = pearsonr(data[sym1], data[sym2])
if corr > 0.75:
# Test cointegration (Engle-Granger test)
residuals = data[sym1] - (data[sym2] * corr)
adf_stat = adf_test(residuals) # stationarity
if adf_stat < 0.05: # stationary
candidates.append((sym1, sym2, corr))
return candidates

ניתוח קו-אינטגרציה

מהי קו-אינטגרציה?

שני נתונים לא נייחים הם בקו-אינטגרציה אם השילוב הליניארי שלהם נייח. במילים פשוטות: הם נעים יחד לאורך זמן, וסטיות מהיחס הזה מתקנות את עצמן בסופו של דבר.

לדוגמה עם BTC ו-ETH:

חישוב יחס הגידור

השתמש ברגרסיית ריבועים פחותים (OLS) כדי למצוא את היחס האופטימלי:

Python — חישוב יחס הגידור
from sklearn.linear_model import LinearRegression
def get_hedge_ratio(price1, price2):
# Regress price1 on price2 to find beta (hedge ratio)
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)

אסטרטגיות שיבה לממוצע

שימוש בציוני Z

תקנן את הפער כדי לזהות קיצוניות. כאשר ציון Z > 2, הפער רחב באופן חריג (הזדמנות מסחר):

Python — מסחר בשיבה לממוצע
def mean_reversion_signal(spread, lookback=20):
# Calculate rolling mean and std
mean = spread.rolling(window=lookback).mean()
std = spread.rolling(window=lookback).std()
# Z-score: how many std devs from mean
z_score = (spread - mean) / std
# Trading signals
if z_score[-1] > 2.0:
return "LONG_SPREAD" # spread too wide, buy underperformer
elif z_score[-1] < -2.0:
return "SHORT_SPREAD" # spread too tight, short underperformer
else:
return "NEUTRAL"

כללי יציאה

סגור כאשר הפער חוזר לממוצע (ציון Z → 0) או כשמגיע לסף הפסד (עצור כאשר ציון Z מתהפך):

Python — לוגיקת יציאה
def check_exit(entry_z_score, current_z_score, entry_price):
# Take profit: spread converged halfway back to mean
if abs(current_z_score) < abs(entry_z_score) * 0.5:
return יציאה, יעד_רווח
# Stop loss: z-score moved in wrong direction by >1
אם (entry_z_score > 0 וגם current_z_score < entry_z_score + 1.0):
החזר יציאה, stop_loss
אחרת אם (entry_z_score < 0 וגם current_z_score > entry_z_score - 1.0):
החזר יציאה, stop_loss
החזר המתנה, None

בדיקת אסטרטגיות ארביטג' סטטיסטי

מדדים מרכזיים לארביטג' סטטיסטי:

Python — אסטרטגיית זוגות לבדיקה
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
for i in range(len(z_score)):
if position is None:
if z_score[i] > 2.0:
position = {"entry": spread[i], "z_entry": z_score[i], "idx": i}
else:
exit_reason = check_exit(position["z_entry"], z_score[i], spread[i])[1]
if exit_reason:
pnl = position["entry"] - spread[i]
trades.append({"pnl": pnl, "reason": exit_reason})
position = None
return pd.DataFrame(trades)

הוספת אינטליגנציית Smart Money

שפר את מסחר הזוגות על ידי סינון עסקאות עם אישור Smart Money:

Python — אסטרטגיית זוגות מסוננת
def smart_money_pairs_strategy(symbol1, symbol2, z_score):
# בדיקת אישור Smart Money ברמת הזוג
sm1 = get_smart_money_signal(symbol1)
sm2 = get_smart_money_signal(symbol2)
# אם אחד הוא HIGH bullish והשני HIGH bearish = דיברגנציה חזקה
# זמן מצוין לסחור את הספרד
divergence_score = abs(sm1["composite"] - sm2["composite"])
if z_score > 2.0 וגם divergence_score > 0.3 וגם sm1["confidence"] != "VETO":
החזר "TRADE" # אות ביטחון גבוה
else:
החזר "SKIP" # המתנה ליישור

העצמת ארביטג' סטטיסטי עם אותות Smart Money לזוגות

סנן עסקאות היפוך ממוצע עם קונצנזוס לווייתנים ונתוני נגזרות. ה-API שלנו מאשר את תקפות הדיברגנציה של הזוג עם שיפור דיוק של 62%.

התחל לסחור זוגות →