Lợi nhuận backtest rất đẹp, tại sao giao dịch thực tế vẫn thua lỗ?
Một chiến lược giao dịch có thể đạt kết quả xuất sắc trên dữ liệu lịch sử: lợi nhuận thường niên cao, tỷ lệ thắng đẹp và mức sụt giảm cũng không lớn. Nhưng khi bạn thực sự bỏ vốn vào, lợi nhuận lại không được như kỳ vọng, thậm chí còn bắt đầu thua lỗ liên tục.
Vấn đề có thể không nằm ở chỗ backtest vô nghĩa, mà ở những khác biệt dễ bị bỏ qua giữa mô phỏng lịch sử và giao dịch thực tế.
Thứ nhất, phí giao dịch liên tục bào mòn lợi nhuận.
Nếu chiến lược giao dịch thường xuyên, mỗi khoản phí tuy có vẻ không đáng kể nhưng cộng dồn lại vẫn có thể làm thay đổi đáng kể kết quả cuối cùng. Đặc biệt với những chiến lược có biên lợi nhuận mỗi lệnh hạn chế, chi phí giao dịch có thể trực tiếp ăn mòn lợi thế vốn có.
Thứ hai, trượt giá khiến giá khớp lệnh khác với mức dự kiến.
Backtest có thể giả định rằng lệnh được khớp theo mức giá tín hiệu. Nhưng trên thị trường thực, thanh khoản, quy mô lệnh và biến động giá đều có thể khiến giá khớp thực tế khác đi. Khi thị trường biến động mạnh, chênh lệch này có thể càng rõ rệt.
Thứ ba, tối ưu hóa tham số có thể tạo ra kết quả xuất sắc giả tạo.
Nếu liên tục điều chỉnh tham số chỉ để chiến lược đạt lợi nhuận cao nhất trên một giai đoạn dữ liệu lịch sử, bạn rất dễ rơi vào tình trạng quá khớp. Chiến lược có vẻ như đã nắm bắt được quy luật thị trường, nhưng thực chất có thể chỉ đang thích nghi với những nhiễu động trong quá khứ.
Thứ tư, môi trường thị trường luôn thay đổi.
Logic giao dịch từng hiệu quả trong quá khứ không có nghĩa là sẽ tiếp tục hiệu quả trong tương lai. Khi thành phần tham gia thị trường, thanh khoản và cấu trúc biến động thay đổi, hiệu quả của chiến lược cũng có thể thay đổi theo.
Cách kiểm chứng thận trọng hơn là chia dữ liệu thành giai đoạn huấn luyện, giai đoạn xác thực và giai đoạn kiểm tra ngoài mẫu; tính đến mức phí giao dịch và trượt giá hợp lý; đồng thời quan sát hiệu quả thực thi qua giao dịch mô phỏng. Ngay cả khi vượt qua những bài kiểm tra này, cũng không thể đảm bảo chiến lược sẽ sinh lời trong tương lai.
Giá trị của backtest không phải là chứng minh chiến lược chắc chắn kiếm được tiền, mà là giúp chúng ta phát hiện những điểm mà chiến lược có thể thất bại.
Ở bài tiếp theo, chúng ta sẽ tiếp tục tìm hiểu: Khi giao dịch thua lỗ liên tiếp, làm sao phân biệt đó là mức sụt giảm bình thường hay chiến lược đã mất đi lợi thế?
Một chiến lược giao dịch có thể đạt kết quả xuất sắc trên dữ liệu lịch sử: lợi nhuận thường niên cao, tỷ lệ thắng đẹp và mức sụt giảm cũng không lớn. Nhưng khi bạn thực sự bỏ vốn vào, lợi nhuận lại không được như kỳ vọng, thậm chí còn bắt đầu thua lỗ liên tục.
Vấn đề có thể không nằm ở chỗ backtest vô nghĩa, mà ở những khác biệt dễ bị bỏ qua giữa mô phỏng lịch sử và giao dịch thực tế.
Thứ nhất, phí giao dịch liên tục bào mòn lợi nhuận.
Nếu chiến lược giao dịch thường xuyên, mỗi khoản phí tuy có vẻ không đáng kể nhưng cộng dồn lại vẫn có thể làm thay đổi đáng kể kết quả cuối cùng. Đặc biệt với những chiến lược có biên lợi nhuận mỗi lệnh hạn chế, chi phí giao dịch có thể trực tiếp ăn mòn lợi thế vốn có.
Thứ hai, trượt giá khiến giá khớp lệnh khác với mức dự kiến.
Backtest có thể giả định rằng lệnh được khớp theo mức giá tín hiệu. Nhưng trên thị trường thực, thanh khoản, quy mô lệnh và biến động giá đều có thể khiến giá khớp thực tế khác đi. Khi thị trường biến động mạnh, chênh lệch này có thể càng rõ rệt.
Thứ ba, tối ưu hóa tham số có thể tạo ra kết quả xuất sắc giả tạo.
Nếu liên tục điều chỉnh tham số chỉ để chiến lược đạt lợi nhuận cao nhất trên một giai đoạn dữ liệu lịch sử, bạn rất dễ rơi vào tình trạng quá khớp. Chiến lược có vẻ như đã nắm bắt được quy luật thị trường, nhưng thực chất có thể chỉ đang thích nghi với những nhiễu động trong quá khứ.
Thứ tư, môi trường thị trường luôn thay đổi.
Logic giao dịch từng hiệu quả trong quá khứ không có nghĩa là sẽ tiếp tục hiệu quả trong tương lai. Khi thành phần tham gia thị trường, thanh khoản và cấu trúc biến động thay đổi, hiệu quả của chiến lược cũng có thể thay đổi theo.
Cách kiểm chứng thận trọng hơn là chia dữ liệu thành giai đoạn huấn luyện, giai đoạn xác thực và giai đoạn kiểm tra ngoài mẫu; tính đến mức phí giao dịch và trượt giá hợp lý; đồng thời quan sát hiệu quả thực thi qua giao dịch mô phỏng. Ngay cả khi vượt qua những bài kiểm tra này, cũng không thể đảm bảo chiến lược sẽ sinh lời trong tương lai.
Giá trị của backtest không phải là chứng minh chiến lược chắc chắn kiếm được tiền, mà là giúp chúng ta phát hiện những điểm mà chiến lược có thể thất bại.
Ở bài tiếp theo, chúng ta sẽ tiếp tục tìm hiểu: Khi giao dịch thua lỗ liên tiếp, làm sao phân biệt đó là mức sụt giảm bình thường hay chiến lược đã mất đi lợi thế?