Skip to content

Overlap Bias Detection

Overlap bias xảy ra khi các lệnh giao dịch chồng lấn thời gian, làm sai lệch kết quả backtest (thường làm Sharpe cao giả).

Overlap Bias Là Gì?

Khi bạn có nhiều tín hiệu giao dịch trên cùng một tài sản và chúng chồng lấn về mặt thời gian, PnL của các lệnh không độc lập. Điều này làm:

  • Tăng Sharpe giả — Vì variance bị underestimated

  • P-value sai — T-test không hợp lệ vì samples không độc lập

  • Win Rate ảo — Các lệnh overlap cùng thắng/cùng thua

Phát Hiện Overlap

python
import pandas as pd

def detect_overlap(trades_df):
    """
    trades_df: DataFrame với cột [entry_time, exit_time, pnl]
    """
    overlaps = []
    for i in range(len(trades_df)):
        for j in range(i+1, len(trades_df)):
            t1_entry, t1_exit = trades_df.iloc[i]['entry_time'], trades_df.iloc[i]['exit_time']
            t2_entry, t2_exit = trades_df.iloc[j]['entry_time'], trades_df.iloc[j]['exit_time']

            # Kiểm tra chồng lấn
            if t1_entry < t2_exit and t2_entry < t1_exit:
                overlaps.append((i, j))

    ratio = len(overlaps) / (len(trades_df) * (len(trades_df)-1) / 2)
    print(f"Overlap ratio: {ratio:.2%}")
    return ratio > 0.1  # >10% overlap = cần fix

Cách Fix

  1. Gộp lệnh overlap — Tính PnL tổng hợp của các lệnh chồng lấn

  2. Dùng Position Manager — Chỉ cho phép 1 position mỗi lúc

  3. Backtest với Position Model — Set ExecutionModel để kiểm soát

Bài Học Thực Tế

Qua thực tế backtest VN30F với multiple signals (OFI/BADR/VWAP), overlap bias có thể làm Sharpe tăng giả 30-50%. Luôn kiểm tra overlap ratio trước khi báo cáo kết quả.

Powered by dautu.tech