Ảo ảnh Backtest: Overfitting, Look-ahead bias và vì sao đường cong lợi nhuận trên giấy luôn sụp đổ ngoài thực tế
- +217/09/2026Phương phápghi 17/09/2026 · 13:47
Trong thế giới của các nhà giao dịch thuật toán và nhà đầu tư định lượng, có một kịch bản kinh điển diễn ra lặp đi lặp lại như một lời nguyền: Một lập trình viên hoặc nhà phân tích dành hàng tháng trời thu thập dữ liệu lịch sử 5–10 năm, miệt mài tinh chỉnh các bộ lọc tín hiệu kỹ thuật để tạo ra một đường cong vốn (Equity Curve) đẹp như tranh vẽ — tăng trưởng thẳng đứng một góc 45 độ, tỷ số Sharpe vượt mức 3.0 và tỷ lệ sụt giảm tối đa (Max Drawdown) chưa đầy 5%.
Thế nhưng, khoảnh khắc tài khoản live được nạp tiền thật và thuật toán bắt đầu khớp lệnh thực tế ngoài thị trường, "cỗ máy in tiền" đó gần như lập tức gãy vụn. Đường cong lợi nhuận đảo chiều cắm đầu đi xuống, các khoản lỗ liên tiếp xuất hiện và tài khoản nhanh chóng bị bào mòn. Sự sụp đổ này không phải vì thị trường bỗng nhiên "xấu tính", mà vì bản thân bản backtest ban đầu chỉ là một ảo ảnh toán học được xây dựng trên những cái bẫy thống kê chết người.

Bẫy 1: Quá khớp dữ liệu (Overfitting / Curve Fitting)
Bẫy phổ biến nhất và tinh vi nhất trong kiểm thử hệ thống là Overfitting. Trong học máy và thống kê, quá khớp xảy ra khi mô hình thay vì trích xuất được "tín hiệu" (Signal) mang tính bản chất của thị trường, nó lại đi ghi nhớ toàn bộ "nhiễu" (Noise) ngẫu nhiên của chuỗi dữ liệu trong quá khứ.
Nhà nghiên cứu tài chính định lượng Marcos López de Prado (tác giả cuốn Advances in Financial Machine Learning) cùng David Bailey đã công bố một nghiên cứu nổi tiếng về "Định lý chiến lược sai lầm" (False Strategy Theorem). Họ chứng minh rằng: Nếu bạn thử nghiệm 1.000 biến thể tham số ngẫu nhiên trên cùng một tập dữ liệu lịch sử, quy luật xác suất toán học chắc chắn sẽ đãi ra cho bạn ít nhất vài biến thể có kết quả sinh lời ngoạn mục — hoàn toàn do may rủi ngẫu nhiên mà không hề có bất kỳ năng lực dự báo nào cho tương lai.
Khi bạn thêm một điều kiện như "Chỉ mua khi RSI(14) < 30 VÀ đường MA 21 cắt lên MA 55 VÀ ngày đó phải là thứ Ba", bạn không phải đang tạo ra một hệ thống thông minh hơn. Bạn chỉ đang "bắt thị trường quá khứ phải khai ra đáp án mà bạn muốn nghe". Khi môi trường thị trường chuyển pha, toàn bộ các quy tắc gò ép này sẽ lập tức mất hiệu lực.
Bẫy 2: Nhìn trộm dữ liệu tương lai (Look-ahead Bias)
Đây là lỗi lập trình sơ đẳng nhưng xuất hiện với tần suất đáng kinh ngạc trong hàng loạt code kiểm thử trên TradingView (Pine Script), Python hay MetaTrader:
- Dùng giá đóng cửa của cây nến hiện tại để mở vị thế: Thuật toán ra quyết định mua dựa trên giá Close của cây nến ngày hôm nay, nhưng lệnh mua lại được giả định là khớp ngay ở giá Open hoặc Close của chính cây nến đó. Trong thực tế, bạn không thể biết giá đóng cửa của một cây nến cho đến khi cây nến đó kết thúc!
- Độ trễ công bố dữ liệu cơ bản: Khi backtest các chiến lược theo trường phái đầu tư giá trị (chọn cổ phiếu P/E thấp, ROE cao), hệ thống thường gán chỉ số tài chính quý 4 vào ngày 31/12. Trên thực tế, báo cáo tài chính quý 4 phải đến cuối tháng 1 hoặc tháng 3 năm sau mới được công bố công khai. Hệ thống đã vô tình "nhìn trộm tương lai" suốt 3 tháng mà người thử nghiệm không hề hay biết.
Bẫy 3: Thiên lệch kẻ sống sót (Survivorship Bias)
Khi một nhà đầu tư chạy backtest chiến lược mua cổ phiếu bứt phá đỉnh trên rổ chỉ số VN30 hoặc S&P 500 trong giai đoạn 2014–2024, một sai lầm chết người thường xảy ra: Họ áp dụng danh sách các mã cổ phiếu trong VN30 của ngày hôm nay để chạy ngược về quá khứ 10 năm trước.
Vấn đề nằm ở chỗ: Những doanh nghiệp đang nằm trong rổ VN30 hôm nay chính là những "kẻ sống sót vĩ đại nhất" của thị trường. Danh sách này đã tự động loại bỏ hàng chục doanh nghiệp từng nằm trong VN30 nhưng sau đó thua lỗ, bê bối quản trị, bị hủy niêm yết hoặc phá sản trong suốt thập kỷ qua.
Việc kiểm thử trên một tập dữ liệu chỉ toàn những kẻ chiến thắng sẽ tạo ra một tỷ suất sinh lời bị thổi phồng giả tạo từ 30% đến 50% so với thực tế mà một nhà đầu tư thời điểm đó phải trải qua.
Bẫy 4: Sự biến mất của thanh khoản và chi phí trượt giá (Slippage)
Trên phần mềm mô phỏng máy tính, các thuật toán giả định một thế giới hoàn hảo: Bạn đặt lệnh mua 100.000 cổ phiếu tại giá 25.000 đồng, toàn bộ 100.000 cổ phiếu sẽ được khớp ngay tức khắc ở đúng mức giá 25.000 đồng mà không tốn một đồng chi phí ma sát.
Nhưng thực tế thị trường khắc nghiệt hơn rất nhiều:
- Độ trượt giá (Slippage): Khi một lệnh lớn được tung ra, lệnh của bạn sẽ tự đẩy giá thị trường lên cao (Market Impact). Bạn chỉ mua được 20.000 cổ phiếu giá 25.000 đồng, phần còn lại bị khớp ở 25.200 hay 25.500 đồng.
- Chi phí giao dịch bào mòn: Với các chiến lược giao dịch tần suất cao (vào ra lệnh liên tục hàng ngày), tổng chi phí phí môi giới, thuế chuyển nhượng và chênh lệch giá mua - bán (Bid-Ask Spread) có thể nuốt chửng toàn bộ phần lợi nhuận mỏng manh mà hệ thống tạo ra. Một chiến lược có lãi gộp 15%/năm trên giấy có thể trở thành lỗ ròng -5%/năm sau khi trừ sạch phí thực tế.
Làm thế nào để kiểm thử một hệ thống mà không tự lừa dối chính mình?
Để không trở thành nạn nhân của những ảo ảnh backtest, giới nghiên cứu tài chính định lượng chuyên nghiệp luôn áp dụng các nguyên tắc kiểm định nghiêm ngặt:
- Phân tách dữ liệu In-Sample và Out-of-Sample: Dành 70% dữ liệu lịch sử để xây dựng và tinh chỉnh chiến lược (In-Sample), nhưng tuyệt đối giữ lại 30% dữ liệu gần nhất (Out-of-Sample) trong trạng thái "bảo mật tuyệt đối". Chỉ khi chiến lược hoàn thiện mới mang ra chạy thử trên tập dữ liệu này đúng MỘT lần duy nhất.
- Kiểm định tịnh tiến (Walk-Forward Analysis): Thay vì tối ưu hóa trên một khoảng thời gian tĩnh, hệ thống được huấn luyện trên một cửa sổ thời gian trượt (Rolling Window) và kiểm tra liên tục trên các đoạn tương lai liền kề để mô phỏng chính xác quá trình thích nghi của thuật toán trong đời thực.
- Thử nghiệm ấp ủ (Incubator / Paper Trading): Không bao giờ nạp vốn lớn ngay sau khi backtest xong. Một hệ thống bắt buộc phải trải qua giai đoạn chạy tài khoản thử nghiệm hoặc đi lệnh bằng số vốn tối thiểu từ 3 đến 6 tháng trên thị trường thực tế để đo lường độ trượt giá và độ ổn định tâm lý trước khi được phê duyệt cấp vốn.
- Tỷ lệ thất bại thực tế
- >90% hệ thống backtest
- Bẫy dữ liệu tương lai
- Look-ahead bias
- Bẫy quá khớp dữ liệu
- Overfitting / Curve fit
- Thiên lệch kẻ sống sót
- Survivorship bias
- Phương pháp thẩm định
- Walk-forward testing
Theo bạn, rào cản lớn nhất khiến một hệ thống giao dịch có kết quả backtest xuất sắc lại sụp đổ khi bước vào thị trường thực tế là gì?
Bình luận
Chưa có bình luận chung nào — mời bạn nêu ý kiến.