Bạn vừa tìm ra chiến lược cho CAGR 35%, Sharpe 2.1, Max Drawdown chỉ 12% trên backtest 5 năm. Nghe quá tốt? Thực ra đó là dấu hiệu rõ nhất của overfitting — chiến lược được "học thuộc" dữ liệu lịch sử, không phản ánh hiệu quả thực tế trong tương lai.
Walk-Forward Testing là phương pháp kiểm chứng nghiêm khắc nhất để phân biệt chiến lược thực sự hoạt động với chiến lược chỉ trông tốt trên giấy.
Walk-Forward Testing: Backtest phản ánh tương lai, không phải quá khứ
Nếu chiến lược không vượt qua Walk-Forward Test — nó chưa được kiểm chứng đủ
In-Sample
Dữ liệu để tối ưu tham số chiến lược
Out-of-Sample
Dữ liệu để kiểm tra — không được dùng khi tối ưu
Walk-Forward
Lặp lại nhiều lần: train → test → train mới → test mới
Tại sao Simple Backtest không đủ?
Simple Backtest: Tối ưu tham số trên toàn bộ dữ liệu lịch sử → báo cáo kết quả trên cùng dữ liệu đó.
Vấn đề: Bạn đang "học bài thi" trên đúng đề thi sẽ chấm. Tất nhiên kết quả đẹp — nhưng không có nghĩa gì về tương lai.
Overfitting xảy ra khi tham số được tối ưu quá chi tiết cho dữ liệu lịch sử cụ thể — chiến lược "nhớ" các biến động đặc thù trong quá khứ, không phải học được quy luật tổng quát.
Walk-Forward Testing hoạt động thế nào?
Bước 1: Chia dữ liệu thành nhiều cửa sổ
Dữ liệu đầy đủ: 2010 → 2024 (14 năm)
Cửa sổ 1: Train 2010–2013 (4 năm) → Test 2014 (1 năm)
Cửa sổ 2: Train 2011–2014 (4 năm) → Test 2015 (1 năm)
Cửa sổ 3: Train 2012–2015 (4 năm) → Test 2016 (1 năm)
...
Cửa sổ 10: Train 2019–2022 (4 năm) → Test 2023 (1 năm)
Dữ liệu đầy đủ: 2010 → 2024 (14 năm)
Cửa sổ 1: Train 2010–2013 (4 năm) → Test 2014 (1 năm)
Cửa sổ 2: Train 2011–2014 (4 năm) → Test 2015 (1 năm)
Cửa sổ 3: Train 2012–2015 (4 năm) → Test 2016 (1 năm)
...
Cửa sổ 10: Train 2019–2022 (4 năm) → Test 2023 (1 năm)
Bước 2: Tối ưu tham số trong từng cửa sổ Train
Với mỗi cửa sổ Train, tìm bộ tham số tốt nhất (ví dụ: MA fast/slow, RSI threshold...) trên dữ liệu train đó.
Bước 3: Test trên Out-of-Sample ngay sau cửa sổ Train
Áp dụng tham số tối ưu từ Train vào Test period tiếp theo — phần dữ liệu chưa bao giờ được dùng để tối ưu.
Bước 4: Ghép tất cả Out-of-Sample results lại
Kết quả Walk-Forward = ghép 10 kết quả OOS → đây mới là hiệu quả thực tế của chiến lược.
Chỉ số Walk-Forward Efficiency
Walk-Forward Efficiency (WFE) = CAGR_OOS / CAGR_IS
- WFE > 0.7: Chiến lược robustm — OOS giữ được > 70% hiệu quả IS
- WFE 0.5–0.7: Chấp nhận được — chiến lược có vấn đề nhẹ về overfitting
- WFE < 0.5: Overfitting rõ — IS tốt nhưng OOS tệ hơn nhiều
WFE < 0.5 là dấu hiệu chắc chắn của overfitting — dừng lại trước khi bỏ tiền thật
Nhiều chiến lược trông xuất sắc trên backtest full-history nhưng WFE < 0.3 — nghĩa là OOS chỉ cho 30% kết quả IS. Thực tế có thể tệ hơn vì OOS vẫn là dữ liệu lịch sử, không phải tương lai thực sự. WFE > 0.7 mới là dấu hiệu chiến lược có edge thực sự.
Tại sao Walk-Forward Testing khó nhưng cần thiết?
| Phương pháp kiểm tra | Phát hiện overfitting | Độ tin cậy |
|---|---|---|
| Full-history backtest | Không | Thấp — có thể hoàn toàn là curve-fitting |
| Train/Test split đơn giản (70/30) | Một phần | Trung bình — dựa vào 1 OOS period |
| Cross-validation (k-fold) | Tốt hơn | Khá — nhưng data leakage khó tránh với time series |
| Walk-Forward Testing | Tốt nhất | Cao — nhiều OOS periods liên tiếp, không overlap |
Áp dụng Walk-Forward trên Backtesting LacQuant
Với gói Premium trên LacQuant Backtesting, có thể chạy backtest với giai đoạn 5–15 năm — đủ dài để thực hiện Walk-Forward Testing có ý nghĩa thống kê:
Chọn giai đoạn dài nhất có thể (ưu tiên 10+ năm)
Walk-Forward cần ít nhất 5–7 cửa sổ để kết quả ổn định. Với cửa sổ Train 3 năm + Test 1 năm, cần tối thiểu 7–8 năm dữ liệu.
Dùng 70% dữ liệu để thiết kế chiến lược, 30% để kiểm tra
Ví dụ: dùng 2010–2019 để thiết kế và tối ưu. Dùng 2020–2024 làm OOS cuối — chưa bao giờ nhìn vào khi thiết kế.
Kiểm tra WFE: OOS/IS ratio
So sánh CAGR của giai đoạn OOS với IS. WFE > 0.7 cho thấy chiến lược không phụ thuộc quá nhiều vào tham số tối ưu.
Stress test thêm: Test trên COVID 2020 và siết tín dụng 2022
Hai giai đoạn này rất khác điều kiện bình thường — chiến lược tốt phải giảm ít hơn thị trường hoặc ít nhất không thảm họa hơn.
Nguyên tắc: Chiến lược đơn giản hơn thường Walk-Forward tốt hơn
Chiến lược có 2–3 tham số thường WFE cao hơn chiến lược 8–10 tham số. Vì ít tham số = ít overfitting = kết quả OOS gần IS hơn. Đây là lý do các chiến lược đơn giản như Buy & Hold hay MA Crossover cơ bản thường hoạt động tốt trong thực tế dù không đẹp trên backtest in-sample.
Walk-Forward Testing là "bài kiểm tra cuối cùng" trước khi bỏ tiền thật vào một chiến lược. Nếu chiến lược không vượt qua được — nó chưa được kiểm chứng đủ, dù in-sample backtest có đẹp đến đâu. Đầu tư dựa trên chiến lược chưa walk-forward tested giống như thi hộ cho người khác rồi tự ra làm bài thi thật.