CFD và forex là các công cụ phức tạp, có rủi ro cao bị mất tiền nhanh chóng do đòn bẩy. Công bố rủi ro

Backtest chiến lược giao dịch: kiểm tra trên dữ liệu quá khứ

Trang này giải thích cách backtest vận hành, cách làm cho kết quả đáng tin hơn và những lỗi khiến backtest đẹp nhưng giao dịch thật thua lỗ.

Ban biên tập Extrade Vietnam ·

Trong trang này
  1. Backtest là gì
  2. Quy tắc phải viết rõ trước khi kiểm tra
  3. Chất lượng dữ liệu
  4. Đưa chi phí vào kết quả
  5. In-sample và out-of-sample
  6. Walk-forward
  7. Kiểm tra overfitting
  8. Đọc kết quả
  9. Những cách backtest dẫn đến thua lỗ
  10. Ví dụ giả định
  11. Sau backtest
  12. Câu hỏi thường gặp

Backtest là gì

Backtest là việc chạy các quy tắc của chiến lược trên dữ liệu giá quá khứ để xem các quy tắc đó lẽ ra đã tạo ra những lệnh nào và kết quả ra sao. Có thể làm thủ công (lướt biểu đồ, ghi lại từng lệnh) hoặc tự động (viết code, ví dụ Expert Advisor chạy trong Strategy Tester của MetaTrader).

Backtest không chứng minh chiến lược sẽ có lãi. Nó chỉ trả lời câu hỏi hẹp hơn: trong điều kiện đã qua, với giả định chi phí và khớp lệnh của bạn, các quy tắc này hành xử thế nào. Thị trường thay đổi, nên kết quả quá khứ không bảo đảm kết quả tương lai. Giao dịch CFD và forex có đòn bẩy có thể mất tiền rất nhanh, kể cả với chiến lược có backtest đẹp.

Dữ liệu quá khứ (đã tinh chỉnh)Dữ liệu mớiban đầu
Overfitting (quá khớp): chiến lược được tinh chỉnh theo dữ liệu quá khứ trông rất mượt trên chính dữ liệu đó và thường thất bại trên dữ liệu chưa từng thấy. Hãy kiểm tra trên một giai đoạn riêng và trên tài khoản demo trước. Ví dụ minh họa: số liệu tự đặt ra để học, không phải giá thực hay điều kiện của sàn.

Quy tắc phải viết rõ trước khi kiểm tra

Kiểm tra chiến lược bằng dữ liệu quá khứ chỉ có nghĩa khi quy tắc không cần phán đoán. Mỗi điểm dưới đây cần ghi thành câu cụ thể:

Nếu quy tắc có chữ "thường thì" hoặc "trông có vẻ", backtest thủ công sẽ bị thiên lệch theo những gì bạn đã biết về diễn biến sau đó. Cách đặt quy tắc vào kế hoạch tổng thể có ở trang Xây dựng trading plan.

Chất lượng dữ liệu

Dữ liệu sai cho kết quả sai, dù quy tắc đúng.

Đưa chi phí vào kết quả

Chi phí là lý do phổ biến khiến chiến lược có lãi trên giấy trở thành lỗ khi giao dịch thật.

Chi phí Cách đưa vào backtest
Spread (chênh lệch giá mua và bán) Dùng spread thay đổi theo thời gian nếu có; nếu không, dùng mức thận trọng, rộng hơn vào giờ thanh khoản thấp và quanh tin
Commission (phí theo khối lượng) Trừ theo từng lệnh nếu loại tài khoản có tính phí này
Swap (phí qua đêm) Tính cho lệnh giữ qua đêm; xem Phí swap
Slippage (trượt giá) Cộng thêm độ trượt bất lợi cho lệnh stop và lệnh thị trường

Điều kiện chi phí của mỗi nhà môi giới khác nhau và có thể thay đổi; nếu dùng Exness, hãy kiểm tra điều kiện hiện hành trong khu vực cá nhân hoặc trên trang chính thức. Một cách kiểm tra đơn giản: nhân đôi chi phí giả định và chạy lại. Nếu kết quả sụp đổ, chiến lược có biên lợi nhuận quá mỏng.

In-sample và out-of-sample

Chia dữ liệu thành các phần riêng:

Chạy out-of-sample chỉ có giá trị nếu bạn không quay lại sửa quy tắc sau khi thấy kết quả. Mỗi lần sửa rồi chạy lại, phần out-of-sample dần trở thành in-sample.

Walk-forward

Walk-forward là cách lặp lại việc chia dữ liệu theo thời gian:

  1. Tối ưu tham số trên đoạn dữ liệu cũ.
  2. Áp tham số đó lên đoạn tiếp theo chưa dùng.
  3. Dịch cửa sổ về phía trước và lặp lại.
  4. Ghép các đoạn kiểm tra lại để xem kết quả tổng.

Cách này mô phỏng việc bạn chỉ biết dữ liệu đến thời điểm đó. Nếu tham số tối ưu thay đổi mạnh giữa các cửa sổ và kết quả kiểm tra kém hẳn so với kết quả tối ưu, chiến lược có thể đang bám vào nhiễu.

Kiểm tra overfitting

Overfitting (quá khớp) là khi quy tắc được chỉnh để khớp với dữ liệu quá khứ đến mức chỉ còn mô tả nhiễu. Dấu hiệu thường gặp:

Các phép thử hữu ích: chạy trên cặp tiền tương tự, xáo trộn thứ tự lệnh để xem dải drawdown có thể xảy ra (Monte Carlo), bỏ bớt bộ lọc xem kết quả còn đứng không.

Đọc kết quả

Đừng chỉ nhìn tổng lợi nhuận. Cần xem:

Các công thức tính khối lượng và rủi ro có ở Công cụ tính toán.

Những cách backtest dẫn đến thua lỗ

Ví dụ giả định

Ví dụ minh họa, không phải kết quả thật và không phải khuyến nghị. Bạn kiểm tra quy tắc giao cắt đường MA trên EURUSD: mua khi MA ngắn cắt lên MA dài tại giá đóng nến, bán khi cắt xuống, stop loss đặt dưới đáy gần nhất. Bạn tối ưu độ dài MA trên dữ liệu cũ, rồi chạy walk-forward. Nếu kết quả kiểm tra chỉ đứng được khi spread thấp và chỉ ở đúng cặp độ dài MA đã chọn, đó là dấu hiệu overfitting và chi phí quá nhạy, cần loại hoặc đơn giản hóa quy tắc.

Sau backtest

Bước tiếp theo là forward test trên tài khoản demo: chạy quy tắc trong thời gian thực để kiểm tra khớp lệnh, spread thực và kỷ luật của chính bạn. Với chiến lược tự động, xem thêm Giao dịch thuật toán. Về tình trạng pháp lý của giao dịch forex tại Việt Nam, đọc Pháp lý và an toàn.

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

Backtest là gì nói ngắn gọn?

Là chạy quy tắc giao dịch trên dữ liệu giá quá khứ để xem các lệnh và kết quả lẽ ra đã xảy ra, có tính chi phí.

Backtest thủ công hay tự động tốt hơn?

Tự động nhanh và nhất quán hơn nhưng cần code đúng. Thủ công giúp hiểu thị trường nhưng dễ thiên lệch vì bạn đã thấy giá sau đó.

Backtest có lãi thì giao dịch thật có lãi không?

Không chắc. Thị trường thay đổi, chi phí thực và tâm lý khác giả định. Giao dịch có đòn bẩy vẫn có thể mất tiền nhanh.

Cần bao nhiêu dữ liệu?

Không có con số chung. Dữ liệu cần đủ dài để bao gồm nhiều trạng thái thị trường và tạo đủ lệnh để kết quả không chỉ là may rủi.

Làm sao biết chiến lược bị overfitting?

Kết quả tốt in-sample nhưng kém out-of-sample, nhạy với thay đổi nhỏ của tham số, và chỉ chạy trên đúng sản phẩm đã chọn.

Trang liên quan