Kiểm thử ngược (Backtest) chiến lược Forex — cách thực hiện đúng?

Xác minh lần cuối: · Nội dung luôn có giá trị
Chỉ mang tính giáo dục — không phải lời khuyên đầu tư. 74–89% tài khoản bán lẻ thua lỗ.

Khi một độc giả nói với tôi rằng chiến lược của anh ấy đạt tỷ lệ thắng chín mươi lăm phần trăm, tôi đã biết câu chuyện sẽ không có kết thúc tốt đẹp. Kiểm thử ngược (backtesting) không phải là lời tiên tri, cũng không phải lời hứa về lợi nhuận tương lai. Đây là công cụ để bác bỏ ý tưởng của bạn — để tìm hiểu xem các quy tắc của bạn có thực sự hoạt động qua nhiều giai đoạn thị trường khác nhau, hay chỉ mô tả một giai đoạn thuận lợi ngẫu nhiên. Dưới đây là cách chạy kiểm thử một cách trung thực, những cạm bẫy nguy hiểm nhất, và tại sao ngay cả một backtest được thực hiện tốt cũng không đảm bảo tài khoản giao dịch thực sẽ có lợi nhuận.

Tại sao cần kiểm thử chiến lược trên dữ liệu lịch sử?

Trước khi đặt cược tiền thật, bạn kiểm tra xem các quy tắc của mình có tạo ra lợi nhuận trong vài năm qua không. Nếu chúng cho thấy kỳ vọng dương qua năm năm điều kiện hỗn hợp, chúng có thể mang lại một lợi thế nhất định. Lợi thế này mong manh — thị trường biến đổi, ngân hàng trung ương thay đổi chính sách, thanh khoản di chuyển — nhưng đây là điều tốt nhất chúng ta có. Backtest sàng lọc những ý tưởng không khả thi và để lọt những ý tưởng đáng thử nghiệm trên tài khoản demo và, sau đó, với vị thế nhỏ trên tài khoản thực. Không hơn, không kém.

Quy tắc phải rõ ràng, không mơ hồ — hoặc bạn đang kiểm thử điều không thực

Bước đầu tiên khiến hầu hết người mới bắt đầu vấp ngã. Chiến lược phải được viết ra sao để một người lạ đọc quy tắc sẽ đặt lệnh giống hệt bạn. Điều kiện vào lệnh như "tôi mua khi thấy xu hướng" không phải là chiến lược — đó là cảm xúc. Phiên bản có thể kiểm thử: "vị thế mua EUR/USD trên biểu đồ ngày khi EMA 50 kỳ nằm trên EMA 200 kỳ, RSI 14 kỳ dưới 70, và giá chạm đường trung bình 20 kỳ từ phía trên; cắt lỗ (stop loss) tại 1,5 ATR(14) bên dưới điểm vào; mục tiêu 2,5 ATR phía trên; rủi ro một phần trăm vốn mỗi lệnh." Chỉ những quy tắc như vậy mới có thể được kiểm thử một cách trung thực.

Chủ đề liên quan là phân tích kỹ thuật trong Forex: nếu bạn không biết lợi thế của mình là gì, backtest sẽ cho bạn biết một cách tàn nhẫn và nhanh chóng. Để có bức tranh toàn diện hơn về kiểm thử trong quy trình làm việc hàng ngày của trader, xem thêm tại trader's workshop trên ForexMechanics.com.

Lấy dữ liệu lịch sử ở đâu và cần bao nhiêu mẫu?

Dữ liệu là nguồn lỗi lớn thứ hai. Lịch sử tick từ một nhà môi giới (broker) sẽ không bao giờ khớp với broker khác — mô hình thực thi khác nhau, nguồn thanh khoản khác nhau. Với chiến lược dùng stop loss chặt, khoảng chênh lệch đó quyết định kết quả. Đối với giao dịch trong ngày, hãy sử dụng dữ liệu hợp đồng tương lai CME — tập trung và có thể kiểm chứng. Đối với swing trên nến ngày, lịch sử từ broker thường đủ dùng.

Vấn đề thứ hai là kích thước mẫu. Quy tắc lâu đời: ít nhất một trăm lệnh, nếu không kết quả dễ là sản phẩm của may mắn. Ba mươi lệnh tuyệt vời trong sáu tháng không nói lên điều gì. Một trăm là ngưỡng có ý nghĩa thống kê; các chuyên gia nhắm đến ba trăm lệnh trở lên. Swing trên D1 cần năm năm, giao dịch ngày cần hai năm, scalping cần một năm lịch sử tick thực.

Năm năm còn có ưu điểm khác: nó bao phủ nhiều giai đoạn thị trường. Thập kỷ vừa qua đã có giai đoạn xu hướng (DXY 2014–2017), cú sốc biến động (tháng 3 năm 2020), chu kỳ thắt chặt tiền tệ (2022–2023) và giai đoạn tích lũy năm 2024. Chiến lược chỉ hoạt động trong một giai đoạn không phải là chiến lược — đó là ảo giác được tối ưu hóa cho một thời kỳ.

Spread, hoa hồng và trượt giá — thiếu chúng backtest sẽ dối trá

Backtest "thần kỳ" phổ biến nhất là quên không trừ chi phí. Với swing trên H4 có mục tiêu 200 pip, spread 0,8 pip gần như không đáng kể. Nhưng với scalper thực hiện 30 lệnh mỗi ngày với mục tiêu năm pip, cùng mức spread đó sẽ ngốn hầu hết lợi thế. Backtest thực tế phải bao gồm spread của broker, hoa hồng theo lot và, với chiến lược nhạy cảm về thực thi, trượt giá (slippage) — khoảng cách giữa giá bạn thấy khi nhấn lệnh và giá thực tế nhận được.

Ngưỡng của tôi: nếu lợi nhuận trung bình mỗi lệnh nhỏ hơn hai lần chi phí trung bình (spread, hoa hồng và trượt giá ước tính cộng lại), chiến lược không có biên an toàn. Khắt khe, nhưng điều này tiết kiệm nhiều tháng tự dối. Một bẫy khác cần chú ý: các chỉ báo kỹ thuật vẽ lại giá trị lịch sử sẽ trông hoàn hảo trong mọi backtest nhưng hoạt động hoàn toàn khác trong giao dịch thực.

Đường cong khớp với lịch sử không phải chiến lược — đó là viện bảo tàng

Bẫy mà hầu hết trader tự học mắc phải là tối ưu hóa quá mức (over-fitting). Bạn kiểm thử ba mươi giá trị của một tham số, chọn kết quả tốt nhất và tuyên bố hệ thống mang lại bốn mươi phần trăm lợi nhuận một năm. Thực ra bạn đã tối ưu hóa cho nhiễu, không phải tín hiệu. Càng nhiều tham số được tối ưu, cơ hội kết quả chỉ là trùng hợp ngẫu nhiên càng cao. Robert Pardo, tác giả cuốn sách kinh điển về đánh giá hệ thống giao dịch, nói thẳng:

"Bài kiểm thử ngoài mẫu là thước đo duy nhất trung thực về chất lượng chiến lược. Nếu một hệ thống không giữ được lợi thế trên dữ liệu mà nó không thấy trong quá trình tối ưu hóa, hệ thống đó đã được khớp với lịch sử, không phải với thị trường." — Robert Pardo, 2008

Do đó cần chia dữ liệu thành phần tối ưu trong mẫu (in-sample) và phần xác nhận ngoài mẫu (out-of-sample), thường theo tỷ lệ bảy mươi / ba mươi. Nếu kết quả ngoài mẫu kém hơn đáng kể, bạn đang gặp over-fitting — chiến lược chưa sẵn sàng cho tài khoản thực. Phương pháp nghiêm ngặt hơn là phân tích walk-forward trong quản lý rủi ro, xen kẽ cửa sổ tối ưu hóa với cửa sổ xác minh, cuộn qua lịch sử. Đây là biện pháp bảo vệ tốt nhất chúng ta có trước sự tự tin sai lầm từ backtest.

Ví dụ minh họa — cách đọc con số một cách trung thực

Hãy tưởng tượng một chiến lược swing trên EUR/USD D1 được kiểm thử trong giai đoạn 2019–2024. Kết quả minh họa: 147 lệnh, tỷ lệ thắng 54 phần trăm, tỷ lệ rủi ro/lợi nhuận trung bình 2,3 trên 1, profit factor 1,78, sụt giảm vốn (drawdown) 14,5 phần trăm, lợi nhuận ròng cộng 87 phần trăm trong năm năm (khoảng 13,3 phần trăm lãi kép). Không ngoạn mục nhưng thực tế — đây là mẫu, không phải tài khoản thực. Bước hữu ích tiếp theo là chạy mô phỏng Monte Carlo, xáo trộn thứ tự các lệnh để thấy vốn có thể đã biến động ra sao trong các chuỗi khác nhau.

Bước tiếp theo của bạn

Kiến thức về backtesting chỉ thực sự phát huy tác dụng khi bạn tự chạy một lần và so sánh kết quả với nhật ký giao dịch của mình. Năm bước dưới đây mất vài buổi chiều và giúp bạn tránh những lỗi phổ biến nhất của trader đang phát triển.

  1. Viết chiến lược vào một tệp văn bản, theo cách máy móc. Mọi điểm vào, điểm ra, cắt lỗ (stop loss) và bộ lọc phải được viết sao cho người khác đọc quy tắc sẽ đặt lệnh giống hệt bạn. Nếu bạn phải thêm "tùy tình huống" ở bất kỳ đâu, hãy làm chặt quy tắc đó — backtest không đọc được ý nghĩa ẩn sau từ ngữ.
  2. Thu thập năm năm dữ liệu cho swing hoặc hai năm cho giao dịch ngày, chia ngay từ đầu. Giữ lại bảy mươi phần trăm đầu tiên để tối ưu hóa, khóa ba mươi phần trăm cuối cho đến khi chiến lược đã cố định. Chỉ sau đó mới chạy kiểm thử trên phần được giữ lại — đây là bài kiểm tra thực sự của bạn trong xây dựng chiến lược giao dịch.
  3. Đưa chi phí thực tế vào mọi mô phỏng. Cộng thêm spread của broker, hoa hồng theo lot và trượt giá ước tính, với giá trị riêng biệt cho các phiên thị trường yên tĩnh và các phiên xung quanh tin tức lớn. Nếu chiến lược mất hơn hai mươi phần trăm lợi nhuận sau khi tính chi phí, câu trả lời rõ ràng: không có biên an toàn.
  4. Đặt ngưỡng cứng là một trăm lệnh. Nếu cửa sổ thời gian tạo ra ít hơn số đó, hãy mở rộng lịch sử, thêm các công cụ từ cùng nhóm, hoặc chấp nhận rằng kết quả là giả thuyết, không phải bằng chứng. Ghi lại số lượng lệnh, sụt giảm vốn trung bình và tỷ lệ thắng — ba con số đó nói lên nhiều hơn lợi nhuận tổng thể.
  5. Sau khi backtest thành công, chạy demo ít nhất ba tháng trước khi giao dịch thực. So sánh demo với backtest — nếu demo kém hơn đáng kể, hãy nghi ngờ over-fitting, chi phí ước tính thấp hơn thực tế, hoặc lỗi trong code. Quay lại với quy tắc, không phải hy vọng mọi thứ sẽ cải thiện trên tài khoản thực. Lưu ý quan trọng về pháp lý: giao dịch Forex/CFD qua broker nước ngoài không được Ngân hàng Nhà nước Việt Nam (NHNN) cấp phép cho nhà đầu tư cá nhân tại Việt Nam, do đó tiềm ẩn rủi ro pháp lý và tài chính đáng kể. Hãy tham khảo ý kiến chuyên gia pháp lý và thuế trước khi bắt đầu.
Jarosław Wasiński
Giới thiệu tác giả

Jarosław Wasiński

Tổng biên tập MyBank.pl · Nhà phân tích tài chính và thị trường

Nhà phân tích và chuyên gia thực hành độc lập với hơn 20 năm kinh nghiệm trong lĩnh vực tài chính. Người sáng lập và tổng biên tập cổng thông tin MyBank.pl hoạt động từ năm 2004. Phân tích cơ bản thị trường ngoại hối và kinh tế vĩ mô từ năm 2007. Viết từ góc độ thị trường toàn cầu, chú trọng khung pháp lý quốc tế. Nội dung mang tính giáo dục; giao dịch Forex ký quỹ không được cấp phép cho nhà đầu tư cá nhân tại Việt Nam.

Nguồn và tài liệu tham khảo

  1. MetaQuotes Strategy Testing in MetaTrader 5 · oficjalna dokumentacja testera strategii (testowanie i optymalizacja na danych historycznych) www.metatrader5.com ↗
  2. MQL5 Reference Testing Trading Strategies · dokumentacja deweloperska MQL5: tryby generowania tików, symulacja spreadu, testy wielowalutowe www.mql5.com ↗
  3. Bank for International Settlements OTC foreign exchange turnover in April 2022 · Triennial Central Bank Survey — dane o strukturze rynku FX (kontekst dla backtestu instrumentów detalicznych) www.bis.org ↗

Câu hỏi thường gặp

Over-fitting (tối ưu hóa quá mức) trong chiến lược giao dịch là gì?

Over-fitting (còn gọi là curve-fitting, khớp đường cong) là tình huống trong đó các tham số của chiến lược được tinh chỉnh quá chặt với giá cả trong quá khứ đến mức không thể xử lý dữ liệu mới. Triệu chứng điển hình: backtest đạt tỷ lệ thắng chín mươi lăm phần trăm nhưng tài khoản thực chỉ đạt ba mươi. Lý do đơn giản: tỷ lệ thắng chín mươi lăm phần trăm không thể duy trì trong Forex về lâu dài — chiến lược thực sự duy trì trong phạm vi năm mươi đến sáu mươi phần trăm. Nếu backtest của bạn hiển thị hơn bảy mươi phần trăm lệnh thắng, hãy coi đó là cảnh báo và nghi ngờ over-fitting cho đến khi có bằng chứng ngược lại.

Nên dùng phần mềm nào để kiểm thử ngược chiến lược?

Đối với người mới bắt đầu, lựa chọn mạnh nhất là Strategy Tester tích hợp trong MetaTrader 5: miễn phí, hỗ trợ kiểm thử đa tiền tệ, dữ liệu tick thực và tối ưu hóa di truyền. MetaTrader 4 vẫn được sử dụng nhưng bị giới hạn ở một công cụ và một khung thời gian. Forex Tester 5 có giá khoảng ba trăm đô la và cung cấp kiểm thử thủ công từng nến một — công cụ tốt cho trader muốn phát triển trực giác thị giác về quy tắc trước khi tự động hóa. Pine Script trong TradingView đủ cho các bài kiểm thử đơn giản trên một công cụ duy nhất. Trong thực tế, hầu hết các bài kiểm thử nghiêm túc nên thực hiện trong MT5 hoặc môi trường lập trình Python với thư viện backtesting chuyên dụng.

Cần bao nhiêu dữ liệu lịch sử để kiểm thử một cách trung thực?

Với chiến lược swing và vị thế, quy tắc thông thường là ít nhất năm năm dữ liệu, với giao dịch ngày là hai năm, và với scalping là một năm lịch sử tick thực. Các khoảng thời gian này không được chọn theo phép màu lịch — chúng tồn tại để kiểm thử bao phủ các giai đoạn thị trường khác nhau: xu hướng, sideway và biến động cao. Độc lập với khung thời gian, có một điều kiện thống kê: ít nhất một trăm lệnh trong bài kiểm thử, để kết quả không phải là sự may mắn ngẫu nhiên. Các chuyên gia nhắm đến ba trăm lệnh trở lên. Nếu lịch sử của bạn tạo ra ít lệnh hơn, hãy mở rộng cửa sổ hoặc thêm các công cụ từ cùng nhóm — nếu không bạn đang kiểm thử một giả thuyết, không phải chiến lược.

Kết quả thực tế của một backtest tốt trông như thế nào?

Con số thực tế là tỷ lệ thắng từ năm mươi đến sáu mươi phần trăm, tỷ lệ rủi ro/lợi nhuận trung bình ít nhất hai trên một, profit factor trong khoảng 1,5 đến 3,0 và sụt giảm vốn tối đa dưới hai mươi phần trăm — với ít nhất một trăm lệnh và con số được xác nhận trên cửa sổ ngoài mẫu (out-of-sample). Hệ số Sharpe trên một cho thấy lợi nhuận hợp lý so với biến động. Cờ đỏ là tỷ lệ thắng trên tám mươi phần trăm, profit factor trên năm và drawdown dưới năm phần trăm — sự kết hợp đó hầu như luôn báo hiệu over-fitting, không phải lợi thế thực sự.

Tìm hiểu sâu hơn · hướng dẫn đầy đủ