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
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 fixCách Fix
Gộp lệnh overlap — Tính PnL tổng hợp của các lệnh chồng lấn
Dùng Position Manager — Chỉ cho phép 1 position mỗi lúc
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ả.