LacQuantLACQUANT

Blog

Công cụ & Thực hành

Walk-Forward Testing: Phương pháp kiểm chứng chiến lược đầu tư chống overfitting

Walk-Forward Testing là phương pháp backtesting nâng cao giúp kiểm chứng chiến lược đầu tư tránh overfitting. Tìm hiểu cách hoạt động, tại sao quan trọng hơn simple backtest và cách áp dụng trên dữ liệu HOSE.

31 tháng 3, 2025

·

5 min read

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 traPhát hiện overfittingĐộ tin cậy
Full-history backtestKhôngThấp — có thể hoàn toàn là curve-fitting
Train/Test split đơn giản (70/30)Một phầnTrung bình — dựa vào 1 OOS period
Cross-validation (k-fold)Tốt hơnKhá — nhưng data leakage khó tránh với time series
Walk-Forward TestingTốt nhấtCao — 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ê:

1

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.

2

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ế.

3

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.

4

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.

Phân tích rủi ro danh mục của bạn với LacQuant

Công cụ quant + AI cho nhà đầu tư cá nhân Việt Nam.

Dùng thử miễn phí