การเก็งกำไรทางสถิติในคริปโต — การเทรดแบบคู่และการกลับสู่ค่าเฉลี่ย

การเก็งกำไรทางสถิติใช้ประโยชน์จากความเบี่ยงเบนชั่วคราวจากราคาดุลยภาพ เมื่อสินทรัพย์สองรายการที่ปกติเคลื่อนไหวไปด้วยกันแยกจากกัน นักเก็งกำไรทางสถิติจะซื้อสินทรัพย์ที่ทำผลงานได้ต่ำกว่าและขายชอร์ตสินทรัพย์ที่ทำผลงานได้ดีกว่า โดยคาดว่าจะกลับมาบรรจบกัน ในตลาดคริปโต วิธีนี้มีประสิทธิภาพเป็นพิเศษเพราะสินทรัพย์มีความสัมพันธ์กันแต่ไม่สมบูรณ์แบบ สร้างโอกาสทำกำไร

ตัวอย่าง: BTC และ ETH มีความสัมพันธ์ 0.85 เมื่อ ETH ทำผลงานได้ต่ำกว่า BTC 3% ในช่วงเวลา 1 ชั่วโมง (ซึ่งไม่ปกติ) นักเก็งกำไรทางสถิติจะขายชอร์ต BTC และซื้อ LONG 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:]:
# คำนวณความสัมพันธ์
corr, p_value = pearsonr(data[sym1], data[sym2])
if corr > 0.75:
# ทดสอบโคอินทิเกรชัน (Engle-Granger test)
residuals = data[sym1] - (data[sym2] * corr)
adf_stat = adf_test(residuals) # ความนิ่ง
if adf_stat < 0.05: # นิ่ง
candidates.append((sym1, sym2, corr))
return candidates

การวิเคราะห์โคอินทิเกรชัน

โคอินทิเกรชันคืออะไร?

อนุกรมที่ไม่นิ่งสองชุดจะโคอินทิเกรตกันหากผลรวมเชิงเส้นของพวกมันนิ่ง กล่าวง่ายๆ คือพวกมันเคลื่อนไหวไปด้วยกันตลอดเวลา และความเบี่ยงเบนจากความสัมพันธ์นั้นจะกลับมาในที่สุด

สำหรับ BTC และ ETH:

การหาอัตราการป้องกันความเสี่ยง

ใช้การถดถอยกำลังสองน้อยที่สุดเพื่อหาอัตราส่วนที่เหมาะสมที่สุด:

Python — การคำนวณอัตราการป้องกันความเสี่ยง
from sklearn.linear_model import LinearRegression
def get_hedge_ratio(price1, price2):
# ถดถอย price1 บน price2 เพื่อหา beta (อัตราการป้องกันความเสี่ยง)
X = price2.reshape(-1, 1)
y = price1
model = LinearRegression().fit(X, y)
hedge_ratio = model.coef_[0]
intercept = model.intercept_
return hedge_ratio, intercept
# สเปรด = price1 - (hedge_ratio × price2) + intercept
beta, alpha = get_hedge_ratio(btc_prices, eth_prices)
spread = btc - (beta * eth)

กลยุทธ์การกลับสู่ค่าเฉลี่ย

การใช้ Z-Scores

มาตรฐานสเปรดเพื่อตรวจจับจุดสุดขั้ว เมื่อ z-score > 2 แสดงว่าสเปรดกว้างผิดปกติ (โอกาสในการเทรด):

Python — การเทรดแบบกลับสู่ค่าเฉลี่ย
def mean_reversion_signal(spread, lookback=20):
# คำนวณค่าเฉลี่ยและส่วนเบี่ยงเบนมาตรฐานแบบเคลื่อนที่
mean = spread.rolling(window=lookback).mean()
std = spread.rolling(window=lookback).std()
# Z-score: ห่างจากค่าเฉลี่ยกี่ส่วนเบี่ยงเบนมาตรฐาน
z_score = (spread - mean) / std
# สัญญาณการเทรด
if z_score[-1] > 2.0:
return "LONG_SPREAD" # สเปรดกว้างเกินไป ซื้อสินทรัพย์ที่ทำผลงานต่ำกว่า
elif z_score[-1] < -2.0:
return "SHORT_SPREAD" # สเปรดแคบเกินไป ขายชอร์ตสินทรัพย์ที่ทำผลงานต่ำกว่า
else:
return "NEUTRAL"

กฎการออก

ปิดเมื่อสเปรดกลับสู่ค่าเฉลี่ย (z-score → 0) หรือถึงเกณฑ์ขาดทุน (หยุดเมื่อ z-score กลับตัว):

Python — ตรรกะการออก
def check_exit(entry_z_score, current_z_score, entry_price):
# รับกำไร: สเปรดกลับมาบรรจบครึ่งทางสู่ค่าเฉลี่ย
if abs(current_z_score) < abs(entry_z_score) * 0.5:
return ออก, เป้าหมายกำไร
# Stop loss: z-score เคลื่อนที่ในทิศทางผิด >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
ส่งคืน ถือ, ไม่มี

การทดสอบย้อนกลยุทธ์สถิติอาร์บ

เมตริกหลักสำหรับสถิติอาร์บ:

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
สำหรับ i ใน range(len(z_score)):
ถ้า position คือ None:
ถ้า z_score[i] > 2.0:
position = {"entry": spread[i], "z_entry": z_score[i], "idx": i}
อื่น:
exit_reason = check_exit(position["z_entry"], z_score[i], spread[i])[1]
ถ้า exit_reason:
pnl = position["entry"] - spread[i]
trades.append({"pnl": pnl, "reason": exit_reason})
position = None
ส่งคืน 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 = ความแตกต่างที่แข็งแกร่ง
# เวลาที่ดีในการเทรด spread
divergence_score = abs(sm1["composite"] - sm2["composite"])
ถ้า z_score > 2.0 และ divergence_score > 0.3 และ sm1["confidence"] != "VETO":
ส่งคืน "เทรด" # สัญญาณความมั่นใจสูง
อื่น:
ส่งคืน "ข้าม" # รอการจัดตำแหน่ง

เพิ่มพลังให้สถิติอาร์บด้วยสัญญาณคู่จาก Smart Money

กรองการเทรดการกลับตัวด้วยความเห็นพ้องของวาฬและข้อมูลอนุพันธ์ API ของเรายืนยันความถูกต้องของความแตกต่างคู่ด้วยการปรับปรุงความแม่นยำ 62%

เริ่มเทรดคู่ →