Pairs Trading: Giao dịch chênh lệch cặp cổ phiếu tương quan cao

2025-06-01 — Admin

Pairs Trading: Giao dịch chênh lệch cặp cổ phiếu tương quan cao

Pairs Trading là chiến lược giao dịch chênh lệch giữa hai tài sản có tương quan mạnh, thường được áp dụng cho cổ phiếu hoặc coin. Bài viết này hướng dẫn bạn cách tìm cặp tài sản phù hợp, xác định tín hiệu giao dịch và backtest hiệu quả bằng Python.

Pairs Trading Illustration

1. Tìm cặp coin/cổ phiếu có tương quan mạnh

  • Tải dữ liệu giá lịch sử của nhiều tài sản.
  • Tính hệ số tương quan Pearson giữa các cặp.
  • Chọn cặp có tương quan cao nhất (gần 1 hoặc -1).

Ví dụ tìm cặp tương quan mạnh:

import pandas as pd
# Giả sử df1, df2 là DataFrame giá đóng cửa của 2 tài sản
corr = df1['close'].corr(df2['close'])
print(f"Correlation: {corr:.2f}")

2. Xác định tín hiệu giao dịch bằng spread và z-score

  • Tính spread: hiệu số giá giữa hai tài sản (hoặc hồi quy tuyến tính để tìm hệ số hedge beta).
  • Tính z-score của spread để xác định điểm vào/ra lệnh.

Ví dụ tính spread và z-score:

import numpy as np
spread = df1['close'] - df2['close']
mean = spread.rolling(window=30).mean()
std = spread.rolling(window=30).std()
zscore = (spread - mean) / std

# Tín hiệu: zscore > 1 => short spread, zscore < -1 => long spread

3. Backtest pairs trading bằng Python

  • Mua/bán khi z-score vượt ngưỡng, đóng vị thế khi z-score về 0.
  • Theo dõi PnL (profit and loss) của chiến lược.

Ví dụ backtest đơn giản:

position = 0  # 1: long spread, -1: short spread, 0: no position
pnl = []
for i in range(1, len(zscore)):
    if position == 0:
        if zscore[i] > 1:
            position = -1  # short spread
            entry = spread[i]
        elif zscore[i] < -1:
            position = 1   # long spread
            entry = spread[i]
    elif position == 1 and zscore[i] > 0:
        pnl.append(entry - spread[i])
        position = 0
    elif position == -1 and zscore[i] < 0:
        pnl.append(spread[i] - entry)
        position = 0
print(f"Total PnL: {np.sum(pnl):.2f}")

4. Đánh giá hiệu quả chiến lược

  • Tính tổng lợi nhuận, số lần giao dịch, tỉ lệ thắng/thua.
  • Vẽ biểu đồ PnL theo thời gian để đánh giá độ ổn định.

Ví dụ vẽ PnL:

import matplotlib.pyplot as plt
plt.plot(np.cumsum(pnl))
plt.title('Cumulative PnL')
plt.xlabel('Trade')
plt.ylabel('PnL')
plt.show()

Tổng kết

  • Pairs trading tận dụng sự đồng biến động của hai tài sản để kiếm lợi nhuận khi spread lệch khỏi giá trị trung bình.
  • Xác định tín hiệu bằng spread và z-score giúp vào/ra lệnh khách quan.
  • Backtest kỹ càng để đánh giá hiệu quả trước khi giao dịch thực tế.

Chúc bạn thành công với pairs trading!

← Xem tất cả bài viết · Trang chủ