Backtesting, Forward testing và Walk-forward testing

27/12/2025

282 lượt đọc

Vì sao rất nhiều chiến lược “hợp lý” vẫn chết khi chạy thật

Trong algo trading, có một nghịch lý mà gần như ai cũng gặp ít nhất một lần: bạn có một ý tưởng nghe rất logic, backtest không quá đẹp nhưng đủ ổn để tin là có edge, thậm chí forward test vài tháng đầu còn kiếm được tiền. Nhưng rồi đến một lúc nào đó, chiến lược bắt đầu đi chệch khỏi kỳ vọng. Lỗ không phải kiểu “sai logic”, mà là lỗ dai, lỗ đều, khiến bạn nghi ngờ chính khả năng đánh giá hệ thống của mình. Khi nhìn lại, rất nhiều người mới nhận ra: vấn đề không nằm ở việc chiến lược có edge hay không, mà nằm ở việc mình đã tin vào kết quả test sai chỗ.

Phần 1: Backtesting – khi quá khứ trả lời rất rõ, nhưng lại không trả lời đúng câu hỏi

Backtesting về bản chất chỉ làm một việc: lấy một tập dữ liệu lịch sử, áp luật giao dịch vào, rồi tính xem nếu đã biết trước mọi thứ thì kết quả sẽ như thế nào. Vấn đề là, con người rất dễ đánh tráo mục tiêu. Ta không hỏi “chiến lược này có từng kiếm tiền không?”, mà vô thức hỏi “chiến lược này có đáng để mình tin không?”. Và backtest thì không được thiết kế để trả lời câu hỏi thứ hai.

Ví dụ rất thực tế: bạn xây một chiến lược breakout đơn giản, dùng high/low của 20 ngày. Bạn optimize thêm vài tham số như stop, take profit, filter volatility. Sau một hồi thử, bạn thấy có một vùng tham số cho kết quả ổn trên dữ liệu 2010–2020. Lúc này, điều bạn không nhìn thấy là: chiến lược đó ăn chủ yếu nhờ một số giai đoạn có trend kéo dài và biến động có cấu trúc rất “đẹp”. Bạn không cố tình gian lận, nhưng bạn đã vô tình điều chỉnh chiến lược cho phù hợp với lịch sử mà bạn đã nhìn thấy.

Backtest không cho bạn cảm giác rủi ro thật. Bạn không phải chịu chuỗi lỗ liên tiếp mà không biết bao giờ kết thúc. Bạn không phải đối mặt với việc “logic vẫn đúng nhưng P&L vẫn xấu”. Vì vậy, backtest rất dễ tạo ra một dạng tự tin giả: không phải vì số liệu bị làm đẹp, mà vì bạn đang đứng ngoài cuộc chơi khi đánh giá nó.

Phần 2: Forward testing – nơi cảm xúc bắt đầu phá vỡ mọi thứ một cách rất hợp lý

Forward testing thường được xem là “bước tiếp theo tự nhiên”: chạy chiến lược trên dữ liệu mới, không dùng để optimize. Trên lý thuyết, đây là bước rất tốt. Nhưng trên thực tế, forward test là nơi rất nhiều chiến lược chết theo cách âm thầm nhất.

Lý do là vì forward testing đặt bạn vào một trạng thái tâm lý rất khó: bạn đã đầu tư công sức vào chiến lược, đã thấy nó hoạt động trong backtest, và giờ bạn chờ nó chứng minh mình đúng. Khi kết quả không như kỳ vọng, phản xạ rất tự nhiên là can thiệp. Ban đầu chỉ là những điều chỉnh nhỏ: “market này hơi khác”, “volatility cao quá”, “giảm size chút cho an toàn”. Nhưng mỗi lần bạn chỉnh, bạn đang học từ dữ liệu forward, và như vậy forward test không còn là forward test nữa.

Một ví dụ rất phổ biến: một chiến lược mean reversion chạy tốt trong môi trường volatility thấp. Khi volatility tăng, chiến lược lỗ liên tục. Thay vì chấp nhận rằng edge của mình có giới hạn regime, người chạy chiến lược thêm filter để “tránh market xấu”. Kết quả: forward test sau đó nhìn có vẻ ổn hơn, nhưng thực chất bạn vừa fit chiến lược vào đúng giai đoạn đang chạy, và lần tới khi regime đổi nữa, vấn đề lại lặp lại.

Forward testing chỉ thực sự có giá trị nếu bạn chấp nhận một điều rất khó: để chiến lược thua đúng cách. Không sửa, không tối ưu, không biện minh. Điều này cực kỳ khó với con người, đặc biệt khi có tiền thật liên quan.

Phần 3: Walk-forward testing – mô phỏng đúng cách mà một trader phải sống cùng sự không chắc chắn

Walk-forward testing là phương pháp gần nhất với thực tế ra quyết định của con người trong trading. Bạn chỉ được phép dùng dữ liệu quá khứ để đưa ra tham số, rồi buộc phải sống với kết quả trong tương lai mà bạn không kiểm soát được. Điểm quan trọng không nằm ở con số lợi nhuận, mà ở hành vi của chiến lược qua nhiều giai đoạn khác nhau.

Khi làm walk-forward nghiêm túc, bạn sẽ thấy những thứ mà backtest không bao giờ cho thấy: có giai đoạn chiến lược hoạt động đúng như kỳ vọng, có giai đoạn edge gần như biến mất, có giai đoạn lỗ kéo dài dù logic không hề sai. Đây chính là bức tranh thực của trading: edge không bật/tắt rõ ràng, mà mờ dần rồi quay lại.

Một ví dụ rất đời: hai chiến lược có cùng CAGR trong backtest, nhưng khi walk-forward, một cái cho kết quả tương đối ổn định qua các window, cái còn lại phụ thuộc nặng vào một vài giai đoạn ngắn. Nếu chỉ nhìn backtest, bạn không phân biệt được. Nhưng walk-forward buộc bạn phải hỏi câu hỏi quan trọng hơn: “Nếu tôi bắt đầu chạy chiến lược này ở một thời điểm ngẫu nhiên trong tương lai, xác suất tôi gặp giai đoạn xấu là bao nhiêu?”

Điểm mạnh nhất của walk-forward không phải là “giảm overfitting”, mà là giảm ảo tưởng kiểm soát. Nó dạy bạn rằng một chiến lược tốt không phải là chiến lược thắng nhiều, mà là chiến lược thua theo cách bạn có thể chịu đựng và tồn tại.

Kết luận: Test không phải để tìm chiến lược thắng, mà để loại bỏ những chiến lược khiến bạn tự tin nhầm

Nếu chỉ rút ra một bài học sau tất cả các phương pháp test, thì đó là: đừng dùng test để chứng minh bạn đúng. Hãy dùng test để tìm ra tất cả những cách bạn có thể sai. Một chiến lược sống sót qua walk-forward không đảm bảo sẽ kiếm tiền, nhưng một chiến lược không sống sót qua walk-forward gần như chắc chắn sẽ làm bạn mất tiền khi chạy thật.

Trong algo trading, thứ nguy hiểm nhất không phải là chiến lược kém, mà là chiến lược trông có vẻ hợp lý đủ để bạn tin, nhưng không đủ bền để bạn sống sót khi market đổi mặt. Và chỉ khi bạn test theo cách khiến bản thân thấy khó chịu, mất tự tin và buộc phải đặt câu hỏi ngược lại, bạn mới đang đi đúng hướng.

Chia sẻ bài viết

Đánh giá

Hãy là người đầu tiên nhận xét bài viết này!

Đăng ký nhận tin

Nhập Email để nhận được bản tin mới nhất từ QM Capital.

Bài viết liên quan

Xu hướng Algorithmic Trading 2026
11/02/2026
27 lượt đọc

Xu hướng Algorithmic Trading 2026 C

Nếu nhìn lại 3–5 năm gần đây, algorithmic trading đã thay đổi rất nhiều. Trước đây, chỉ cần một chiến lược có equity curve đẹp trên backtest là đủ để nhiều người tin rằng mình đã tìm ra “công thức in tiền”. Nhưng bước sang 2026, môi trường thị trường buộc người làm algo phải trưởng thành hơn. Biến động cao hơn, dòng tiền luân chuyển nhanh hơn, và sự cạnh tranh cũng dày đặc hơn. Điều này khiến lợi thế không còn nằm ở việc bạn có một mô hình phức tạp hay không, mà nằm ở việc hệ thống của bạn có thực sự sống sót được trong điều kiện xấu hay không.

Tâm Lý Tài Chính: Hiểu Các Thiên Kiến Trong Giao Dịch và Ứng Dụng Thực Tế Tại Thị Trường Việt Nam
10/02/2026
45 lượt đọc

Tâm Lý Tài Chính: Hiểu Các Thiên Kiến Trong Giao Dịch và Ứng Dụng Thực Tế Tại Thị Trường Việt Nam C

Tâm lý tài chính (Behavioral Finance) là một lĩnh vực nghiên cứu tâm lý học và kinh tế học, giúp giải thích tại sao những nhà đầu tư, dù có kỹ năng hay kiến thức, vẫn thường xuyên đưa ra các quyết định tài chính không hợp lý. Đặc biệt, tâm lý tài chính không đồng ý với giả thuyết của lý thuyết tài chính truyền thống, cho rằng mọi quyết định trong thị trường đều được đưa ra một cách hợp lý và tối ưu. Trái lại, tâm lý tài chính nhìn nhận rằng con người thường xuyên bị chi phối bởi cảm xúc, và điều này có thể dẫn đến những sai lầm trong giao dịch.

Market Flow Trading: Nhìn dòng chảy thị trường Việt Nam để giao dịch hiệu quả hơn
09/02/2026
54 lượt đọc

Market Flow Trading: Nhìn dòng chảy thị trường Việt Nam để giao dịch hiệu quả hơn C

Market flow trading, hiểu đơn giản, không phải là cố đoán xem giá sẽ lên hay xuống, mà là quan sát dòng tiền và hành vi giao dịch đang thực sự diễn ra. Thay vì hỏi “cổ phiếu này rẻ hay đắt”, market flow đặt câu hỏi: ai đang mua, ai đang bán, và họ có đang quyết liệt hay không.

Python hay C++ trong Quantitative Finance: chọn ngôn ngữ theo bài toán
08/02/2026
165 lượt đọc

Python hay C++ trong Quantitative Finance: chọn ngôn ngữ theo bài toán C

Trong quantitative finance, câu hỏi Python hay C++ xuất hiện rất sớm, thường ngay khi người ta bắt đầu viết những dòng code đầu tiên cho trading. Điều thú vị là câu hỏi này không bao giờ có câu trả lời dứt khoát, và chính việc nó tồn tại suốt nhiều năm cho thấy một điều: hai ngôn ngữ này không thay thế nhau, mà phục vụ những mục đích rất khác nhau. Nếu chỉ nhìn ở mức bề mặt, người ta thường nói Python dễ nhưng chậm, C++ khó nhưng nhanh. Nhưng trong công việc quant thực tế, sự khác biệt quan trọng hơn nhiều nằm ở bạn đang giải quyết loại vấn đề gì, và ở giai đoạn nào của pipeline.

Modern Pairs Trading: Điều gì còn hiệu quả và vì sao?
08/02/2026
69 lượt đọc

Modern Pairs Trading: Điều gì còn hiệu quả và vì sao? C

Pairs trading là một trong những chiến lược định lượng xuất hiện rất sớm và tồn tại lâu dài trên thị trường tài chính. Ý tưởng cốt lõi của nó nghe qua thì rất dễ hiểu: hai tài sản có mối quan hệ chặt chẽ với nhau trong quá khứ thì khi mối quan hệ đó bị lệch đi, thị trường sẽ có xu hướng kéo chúng quay lại trạng thái “bình thường”. Chính sự đơn giản này khiến pairs trading từng được xem là một chiến lược gần như hiển nhiên, đặc biệt trong giai đoạn thị trường còn ít cạnh tranh và chi phí giao dịch thấp.

Danh mục của bạn đang ngầm giả định điều gì về tương lai thị trường?
05/02/2026
105 lượt đọc

Danh mục của bạn đang ngầm giả định điều gì về tương lai thị trường? C

Một danh mục đầu tư, dù được xây dựng cẩn trọng đến đâu, cũng luôn chứa đựng những giả định ngầm về tương lai. Những giả định này hiếm khi được viết ra thành lời, nhưng lại quyết định cách danh mục phản ứng khi thị trường đi vào những trạng thái bất lợi. Vấn đề không nằm ở việc có giả định hay không, mà ở chỗ nhà đầu tư có ý thức được những giả định đó hay không.

video-image

Truy Cập Miễn Phí Thư Viện Bot Tín Hiệu Giao Dịch Tự Động

Được nghiên cứu và phát triển bởi các chuyên gia từ QMTrade và cộng đồng nhà đầu tư chuyên nghiệp.

Truy cập ngay!