Trang chủBlogHướng Dẫn Cơ BảnWalk-Forward Analysis trong kiểm tra độ bền chiến lược
Walk-Forward Analysis trong kiểm tra độ bền chiến lược
Hướng Dẫn Cơ Bản

Walk-Forward Analysis trong kiểm tra độ bền chiến lược

Walk-Forward Analysis

Ngọc Hải LươngNgọc Hải Lương
14/7/2026
17 phút phút đọc
71 lượt xem

Một chiến lược giao dịch nhìn rất đẹp trên backtest chưa chắc đã dùng được ngoài thực tế. Lý do đơn giản là backtest thường được xây trên dữ liệu quá khứ, còn giao dịch thật lại diễn ra ở tương lai. Nếu mình tối ưu tham số quá kỹ trên toàn bộ dữ liệu quá khứ, chiến lược có thể chỉ đang “học thuộc” thị trường cũ, chứ không thật sự có lợi thế bền vững. Đây là lý do Walk-Forward Analysis trở thành một bước rất quan trọng khi kiểm tra độ bền chiến lược.

Walk-Forward Analysis, hiểu đơn giản, là cách kiểm tra chiến lược theo kiểu gần với thực tế hơn: dùng dữ liệu quá khứ để tối ưu, sau đó đem bộ tham số đó đi kiểm tra trên giai đoạn tương lai chưa được dùng để tối ưu. Sau đó lại trượt cửa sổ dữ liệu về phía trước, tối ưu lại, kiểm tra tiếp. Quá trình này lặp đi lặp lại nhiều lần để xem chiến lược có còn hoạt động khi thị trường thay đổi hay không.

Điểm hay của Walk-Forward không nằm ở việc nó làm backtest đẹp hơn. Ngược lại, nhiều khi Walk-Forward sẽ làm kết quả xấu đi so với backtest tối ưu toàn bộ dữ liệu. Nhưng chính điều đó lại có giá trị, vì nó giúp mình nhìn chiến lược thực tế hơn, bớt tự lừa mình hơn.

17db6fea-4b05-4334-9db6-13009eb49edf.png

Vì sao cần Walk-Forward Analysis?

Một lỗi rất phổ biến khi xây chiến lược là dùng toàn bộ dữ liệu lịch sử để tìm bộ tham số tối ưu nhất. Ví dụ mình test một chiến lược theo đường trung bình động trong 5 năm, rồi thử hàng trăm tổ hợp MA20, MA30, MA50, MA100, stoploss 5%, 7%, 10%, take profit 12%, 15%, 20%. Cuối cùng mình tìm ra một bộ tham số cho kết quả rất đẹp: lợi nhuận cao, drawdown thấp, win rate ổn, equity curve đi lên đều.

Nhưng câu hỏi là: bộ tham số đó có thật sự tốt, hay chỉ là bộ tham số may mắn khớp với dữ liệu 5 năm vừa qua?

Nếu chiến lược chỉ thắng vì được tối ưu trên đúng quá khứ đó, khi sang giai đoạn mới nó rất dễ hỏng. Đây là overfitting. Backtest càng được tinh chỉnh nhiều, càng có nguy cơ tìm ra một chiến lược đẹp trên giấy nhưng yếu ngoài thực tế. Walk-Forward Analysis giúp xử lý vấn đề này bằng cách tách quá trình thành hai phần: in-sample để học và out-of-sample để kiểm tra.

Trong giao dịch thật, mình không bao giờ biết dữ liệu tương lai. Mình chỉ có thể dùng dữ liệu quá khứ đến thời điểm hiện tại để ra quyết định. Walk-Forward mô phỏng đúng tư duy đó. Tại mỗi thời điểm, chiến lược chỉ được nhìn dữ liệu quá khứ, chọn tham số, rồi đem tham số đó giao dịch ở giai đoạn tiếp theo. Vì vậy, nếu chiến lược vẫn sống tốt qua nhiều vòng Walk-Forward, độ tin cậy sẽ cao hơn nhiều so với một backtest tối ưu một lần trên toàn bộ lịch sử.

Walk-Forward hoạt động như thế nào?

Giả sử mình có dữ liệu 6 năm của thị trường, từ năm 2019 đến 2024. Thay vì dùng cả 6 năm để tối ưu một lần, mình chia dữ liệu thành nhiều đoạn. Ví dụ dùng 2 năm để tối ưu chiến lược, rồi dùng 6 tháng tiếp theo để kiểm tra. Sau đó trượt cửa sổ thêm 6 tháng, lại dùng 2 năm gần nhất để tối ưu, rồi kiểm tra 6 tháng tiếp theo.

Quy trình có thể hình dung như sau:

  • Giai đoạn 1: tối ưu trên 2019–2020, kiểm tra trên nửa đầu 2021.

  • Giai đoạn 2: tối ưu trên nửa cuối 2019–nửa đầu 2021, kiểm tra trên nửa cuối 2021.

  • Giai đoạn 3: tối ưu trên 2020–2021, kiểm tra trên nửa đầu 2022.

  • Giai đoạn 4: tiếp tục trượt cửa sổ cho đến hết dữ liệu.

Sau mỗi lần kiểm tra, mình ghép toàn bộ kết quả out-of-sample lại thành một đường equity curve. Đường equity này quan trọng hơn rất nhiều so với equity curve trong giai đoạn tối ưu, vì nó phản ánh việc chiến lược hoạt động như thế nào trên những đoạn dữ liệu mà nó chưa được “nhìn thấy” trước.

Nếu kết quả in-sample rất đẹp nhưng out-of-sample liên tục yếu, đó là dấu hiệu chiến lược bị overfit. Nếu in-sample đẹp vừa phải nhưng out-of-sample vẫn ổn định, đó lại là tín hiệu tốt hơn. Trong thực tế, một chiến lược có Walk-Forward ổn định thường đáng tin hơn một chiến lược backtest tổng thể quá hoàn hảo.

Một ví dụ thực tế với chiến lược momentum cổ phiếu

Giả sử mình xây một chiến lược momentum đơn giản trên cổ phiếu Việt Nam. Ý tưởng là mỗi tháng chọn các cổ phiếu có sức mạnh giá tốt hơn thị trường, thanh khoản đủ lớn, giá nằm trên MA50 và không có drawdown quá sâu. Bộ tham số cần tối ưu có thể gồm: số phiên tính momentum, ngưỡng thanh khoản tối thiểu, số lượng cổ phiếu nắm giữ, thời gian tái cân bằng và mức cắt lỗ.

Nếu dùng toàn bộ dữ liệu 2019–2024 để tối ưu, có thể mình tìm được bộ tham số rất đẹp: momentum 63 phiên, thanh khoản tối thiểu 25 tỷ/ngày, chọn top 12 cổ phiếu, tái cân bằng 20 phiên/lần, cắt lỗ 8%. Kết quả backtest cho CAGR 28%, max drawdown 14%, win rate theo tháng 65%. Nghe rất hấp dẫn.

Nhưng nếu đem Walk-Forward ra kiểm tra, câu chuyện có thể khác. Giai đoạn 2019–2020 tối ưu ra bộ tham số thiên về cổ phiếu tăng trưởng. Đem sang 2021 thì vẫn hoạt động tốt vì thị trường thuận. Nhưng khi sang 2022, thị trường giảm mạnh, thanh khoản co lại, nhóm beta cao bị bán sâu, bộ tham số cũ có thể bắt đầu thua. Đến 2023, chiến lược có thể cần điều chỉnh sang tiêu chí thanh khoản ổn định hơn, drawdown thấp hơn. Đến 2024, nếu dòng tiền quay lại nhóm vốn hóa lớn, bộ tham số lại khác.

Đây chính là giá trị của Walk-Forward. Nó cho thấy một chiến lược không chỉ cần thắng trong “trung bình quá khứ”, mà còn phải thích nghi qua nhiều trạng thái thị trường. Một chiến lược momentum có thể rất tốt trong thị trường tăng, nhưng nếu không có cơ chế giảm rủi ro khi thị trường xấu, Walk-Forward sẽ bộc lộ điểm yếu đó khá rõ.

In-sample đẹp không quan trọng bằng out-of-sample ổn

Khi chạy backtest, nhiều người dễ bị cuốn vào kết quả in-sample. Vì đây là nơi chiến lược được tối ưu, nên nó thường đẹp hơn. CAGR cao hơn, drawdown thấp hơn, Sharpe tốt hơn. Nhưng phần đó không phải nơi mình nên đặt niềm tin quá lớn. Phần đáng tin hơn là out-of-sample.

Nếu chiến lược tối ưu trên 2 năm quá khứ tạo Sharpe 2.0, nhưng sang 6 tháng tiếp theo Sharpe chỉ còn 0 hoặc âm, cần cẩn thận. Nếu chuyện này lặp lại nhiều vòng, nghĩa là bộ tham số tối ưu không có khả năng tổng quát hóa. Nó chỉ hoạt động trong giai đoạn đã học, nhưng không đi được sang tương lai.

Ngược lại, nếu in-sample không quá đẹp, ví dụ Sharpe chỉ 1.2–1.4, nhưng out-of-sample vẫn giữ được Sharpe 0.8–1.0 qua nhiều giai đoạn, chiến lược đó có thể đáng nghiên cứu hơn. Trong giao dịch thật, mình không cần một chiến lược hoàn hảo trên quá khứ. Mình cần một chiến lược đủ ổn, đủ logic và đủ bền khi thị trường thay đổi.

Điểm cần nhớ là: Walk-Forward không tìm chiến lược đẹp nhất, mà tìm chiến lược ít bị vỡ nhất khi ra khỏi dữ liệu tối ưu.

Chọn độ dài cửa sổ Walk-Forward như thế nào?

Không có một độ dài duy nhất đúng cho mọi chiến lược. Nếu cửa sổ tối ưu quá ngắn, chiến lược dễ bị nhiễu vì chỉ học một đoạn thị trường rất nhỏ. Nếu cửa sổ tối ưu quá dài, tham số có thể phản ứng chậm với thay đổi regime. Vì vậy, độ dài cửa sổ phải phù hợp với bản chất chiến lược.

Với chiến lược ngắn hạn, ví dụ giao dịch theo tín hiệu kỹ thuật vài ngày đến vài tuần, có thể dùng cửa sổ tối ưu 6–12 tháng và kiểm tra 1–3 tháng. Với chiến lược trung hạn trên cổ phiếu, ví dụ momentum 1–3 tháng, có thể dùng cửa sổ tối ưu 2–3 năm và kiểm tra 3–6 tháng. Với chiến lược dài hạn hơn, cần dữ liệu dài hơn để tránh bị nhiễu.

Ví dụ một chiến lược mean reversion intraday sẽ không thể dùng cùng cửa sổ với một chiến lược phân bổ tài sản theo chu kỳ vĩ mô. Chiến lược càng giao dịch nhanh, dữ liệu càng nhiều, cửa sổ có thể ngắn hơn. Chiến lược càng ít tín hiệu, càng cần dữ liệu dài hơn để kết quả có ý nghĩa thống kê.

Một lỗi thường gặp là chọn cửa sổ Walk-Forward sao cho kết quả đẹp nhất. Nếu thử 10 kiểu cửa sổ rồi chỉ chọn kiểu cho lợi nhuận tốt nhất, mình lại đang overfit chính quá trình Walk-Forward. Vì vậy, trước khi chạy, nên có lý do rõ ràng cho việc chọn cửa sổ: chiến lược giao dịch trong bao lâu, tín hiệu thay đổi nhanh hay chậm, thị trường có bao nhiêu regime, số lượng giao dịch có đủ lớn không.

Walk-Forward giúp kiểm tra độ ổn định tham số

Một chiến lược bền thường không phụ thuộc vào một bộ tham số quá chính xác. Nếu MA50 hoạt động tốt nhưng MA49 và MA51 đều tệ, đó là dấu hiệu đáng nghi. Nếu stoploss 7,3% đẹp nhưng 6,5% và 8% đều hỏng, chiến lược có thể đang được tối ưu quá mức.

Walk-Forward giúp nhìn rõ điều này. Qua mỗi vòng tối ưu, nếu bộ tham số thay đổi quá mạnh, lúc thì momentum 20 phiên, lúc 120 phiên, lúc stoploss 5%, lúc 18%, lúc chọn top 5 mã, lúc top 30 mã, thì cần hỏi: chiến lược có logic ổn định không, hay mô hình đang cố đuổi theo nhiễu?

Một chiến lược tốt thường có vùng tham số hợp lý. Ví dụ momentum 50–80 phiên đều ổn, thanh khoản tối thiểu 15–30 tỷ đều ổn, tái cân bằng 15–25 phiên đều ổn. Khi đó mình có thể tin rằng chiến lược không sống nhờ một con số chính xác, mà sống nhờ một logic thị trường có thật.

Đây là điểm rất quan trọng trong nghiên cứu định lượng. Mình không nên chỉ hỏi “tham số nào tốt nhất?”, mà nên hỏi: vùng tham số nào vẫn cho kết quả ổn định? Nếu có một vùng ổn định, chiến lược đáng tin hơn. Nếu chỉ có một điểm tối ưu sắc nhọn, rủi ro overfitting cao hơn.

Walk-Forward và regime thị trường

Thị trường không đứng yên. Có giai đoạn tiền rẻ, thanh khoản mạnh, cổ phiếu beta cao dẫn dắt. Có giai đoạn lãi suất tăng, dòng tiền phòng thủ hơn. Có giai đoạn thị trường đi ngang, breakout dễ thất bại. Có giai đoạn xu hướng rõ, momentum hoạt động tốt. Một chiến lược không thể được đánh giá nghiêm túc nếu chỉ thắng trong một regime.

Walk-Forward giúp kiểm tra chiến lược qua nhiều regime hơn. Khi trượt cửa sổ qua từng giai đoạn, mình có thể thấy chiến lược mạnh ở đâu và yếu ở đâu. Ví dụ:

Chiến lược momentum có thể hoạt động tốt trong thị trường tăng và giai đoạn phân hóa mạnh, nhưng dễ thua khi thị trường đảo chiều nhanh.

Chiến lược mean reversion có thể tốt trong thị trường đi ngang, nhưng nguy hiểm khi thị trường có trend giảm mạnh.

Chiến lược breakout có thể hiệu quả khi thanh khoản tăng, nhưng cho nhiều tín hiệu giả khi thanh khoản cạn.

Việc biết chiến lược yếu trong môi trường nào không phải điều xấu. Ngược lại, nó giúp nhà đầu tư dùng chiến lược đúng lúc hơn. Không có chiến lược nào thắng mọi thời điểm. Một hệ thống tốt cần biết khi nào nên tăng vốn, khi nào nên giảm vốn, và khi nào nên đứng ngoài.

Walk-Forward Efficiency: kết quả thực tế còn giữ được bao nhiêu?

Một chỉ tiêu thường được dùng trong Walk-Forward là Walk-Forward Efficiency, tức so sánh hiệu quả out-of-sample với hiệu quả in-sample. Ý tưởng rất đơn giản: nếu chiến lược tối ưu trong quá khứ tạo ra mức lợi nhuận rất cao, nhưng khi áp dụng sang giai đoạn mới chỉ giữ được một phần rất nhỏ, thì độ tin cậy không cao.

Ví dụ trong giai đoạn in-sample, chiến lược đạt lợi nhuận trung bình 20%/năm. Sang out-of-sample, lợi nhuận chỉ còn 5%/năm. Khi đó hiệu quả giữ lại chỉ khoảng 25%. Nếu qua nhiều vòng Walk-Forward, tỷ lệ này liên tục thấp, có thể chiến lược đang bị tối ưu quá mức. Ngược lại, nếu in-sample đạt 18% và out-of-sample giữ được 12–14%, chiến lược có vẻ thực tế hơn.

Tuy nhiên, không nên máy móc. Out-of-sample thấp hơn in-sample là chuyện bình thường, vì in-sample là nơi chiến lược được tối ưu. Điều cần quan sát là out-of-sample có còn dương không, drawdown có chấp nhận được không, lợi nhuận có đến từ nhiều giai đoạn hay chỉ một vài đoạn may mắn, và chiến lược có còn giữ được logic ban đầu không.

Một chiến lược có Walk-Forward tốt không nhất thiết phải có lợi nhuận cao nhất. Nó cần cho thấy rằng khi bước sang dữ liệu mới, hệ thống không bị sụp hoàn toàn.

Những lỗi thường gặp khi dùng Walk-Forward

Walk-Forward giúp giảm overfitting, nhưng nếu làm sai, nó vẫn có thể tạo cảm giác an toàn giả. Lỗi đầu tiên là tối ưu quá nhiều tham số trong mỗi cửa sổ. Nếu một chiến lược có 10–15 tham số và mỗi tham số có nhiều giá trị thử nghiệm, số tổ hợp sẽ rất lớn. Khi đó dù có Walk-Forward, mô hình vẫn có thể tìm ra các bộ tham số may mắn trong từng đoạn dữ liệu.

Lỗi thứ hai là nhìn kết quả Walk-Forward rồi quay lại sửa chiến lược quá nhiều lần. Nếu mỗi lần kết quả không đẹp, mình lại thêm điều kiện, đổi bộ lọc, thay khung thời gian, bỏ giai đoạn xấu, cuối cùng out-of-sample cũng bị “nhiễm bẩn”. Dữ liệu kiểm tra ban đầu không còn thật sự là dữ liệu chưa biết nữa, vì mình đã dùng nó để chỉnh chiến lược.

Lỗi thứ ba là không tính phí giao dịch, thuế, trượt giá và thanh khoản. Một chiến lược Walk-Forward có lợi nhuận dương trên lý thuyết nhưng turnover quá cao có thể bị phí ăn hết. Với cổ phiếu thanh khoản thấp, kết quả khớp lệnh thực tế có thể kém hơn backtest rất nhiều. Nếu chiến lược mua các mã tăng mạnh nhưng thanh khoản mỏng, out-of-sample đẹp cũng chưa chắc giao dịch được.

Lỗi thứ tư là chỉ nhìn CAGR mà bỏ qua drawdown. Một chiến lược có lợi nhuận tốt nhưng drawdown 35–40% có thể không phù hợp với nhà đầu tư thật. Trong Walk-Forward, cần xem equity curve có bị gãy mạnh ở một vài giai đoạn không, thời gian hồi phục sau drawdown là bao lâu, và nhà đầu tư có chịu được giai đoạn đó không.

Nên đọc kết quả Walk-Forward như thế nào?

Khi có kết quả Walk-Forward, không nên chỉ nhìn một con số tổng hợp. Cần đọc cả cấu trúc kết quả. Một chiến lược tốt thường có out-of-sample equity curve không quá phụ thuộc vào một đoạn duy nhất. Nếu 80% lợi nhuận đến từ một giai đoạn thị trường rất đặc biệt, còn các giai đoạn khác đi ngang hoặc lỗ, chiến lược chưa chắc bền.

Nên nhìn ít nhất các yếu tố sau: lợi nhuận out-of-sample, max drawdown, Sharpe hoặc Sortino, tỷ lệ vòng Walk-Forward có lãi, độ ổn định tham số, turnover, số lượng giao dịch, chi phí, thanh khoản và hiệu quả trong từng regime thị trường. Không cần biến nó thành một bảng điểm quá phức tạp, nhưng phải đủ để trả lời câu hỏi: chiến lược này có còn sống khi bước ra khỏi dữ liệu tối ưu không?

Ví dụ một chiến lược có 10 vòng Walk-Forward, trong đó 7 vòng có lãi, 3 vòng lỗ nhẹ, drawdown kiểm soát được, tham số dao động trong vùng hợp lý, lợi nhuận không phụ thuộc vào một giai đoạn duy nhất, thì đáng nghiên cứu tiếp. Ngược lại, nếu chỉ 3 vòng có lãi rất lớn, 7 vòng còn lại yếu hoặc âm, cần thận trọng dù tổng lợi nhuận cuối cùng vẫn đẹp.

Walk-Forward không thay thế tư duy thị trường

Một điểm quan trọng là Walk-Forward chỉ là công cụ kiểm tra, không phải bằng chứng tuyệt đối rằng chiến lược sẽ thắng trong tương lai. Thị trường có thể thay đổi theo cách chưa từng xuất hiện trong dữ liệu. Cơ chế giao dịch thay đổi, thanh khoản thay đổi, hành vi nhà đầu tư thay đổi, chính sách vĩ mô thay đổi. Không có phương pháp backtest nào loại bỏ hoàn toàn rủi ro.

Vì vậy, kết quả Walk-Forward cần được đặt cạnh logic chiến lược. Nếu một chiến lược có kết quả tốt nhưng không giải thích được vì sao nó có thể tạo lợi nhuận, cần cẩn thận. Ngược lại, một chiến lược có logic hợp lý, kết quả Walk-Forward ổn, tham số bền, chi phí thực tế chấp nhận được, thanh khoản đủ, thì đáng tin hơn.

Trong đầu tư định lượng, kết quả thống kê và câu chuyện kinh tế nên đi cùng nhau. Nếu chỉ có thống kê mà không có logic, dễ overfit. Nếu chỉ có logic mà không kiểm chứng, dễ chủ quan. Walk-Forward là cầu nối giữa hai thứ đó: nó buộc chiến lược phải chứng minh rằng logic của nó không chỉ đúng trên một đoạn quá khứ được chọn đẹp.

Kết luận

Walk-Forward Analysis là một phương pháp quan trọng để kiểm tra độ bền của chiến lược giao dịch. Thay vì tối ưu một lần trên toàn bộ dữ liệu quá khứ, Walk-Forward mô phỏng cách nhà đầu tư thật ra quyết định: dùng dữ liệu đã biết để chọn tham số, rồi kiểm tra trên giai đoạn tương lai chưa được dùng trong tối ưu. Nhờ vậy, nó giúp giảm rủi ro overfitting và cho thấy chiến lược có khả năng thích nghi qua nhiều điều kiện thị trường hay không.

Giá trị lớn nhất của Walk-Forward không phải là tạo ra kết quả đẹp hơn, mà là làm kết quả trung thực hơn. Nó giúp mình biết chiến lược có còn hiệu quả ngoài giai đoạn tối ưu không, tham số có ổn định không, lợi nhuận có bền không, drawdown có chịu được không, và chiến lược yếu trong regime nào.

Một chiến lược backtest đẹp có thể chỉ là sản phẩm của quá khứ. Một chiến lược qua được Walk-Forward với kết quả ổn định, logic rõ ràng, tham số bền và chi phí thực tế hợp lý sẽ đáng tin hơn nhiều. Trong giao dịch, điều quan trọng không phải là tìm ra chiến lược hoàn hảo trên dữ liệu cũ, mà là tìm ra chiến lược có khả năng sống sót khi bước vào dữ liệu mới.