Backtest có thể gắn đúng dấu thời gian cho từng cây nến mà vẫn dùng thông tin của ngày mai. Điều này xảy ra khi chiến lược kiểm định các tài sản còn tồn tại hôm nay trên dữ liệu lịch sử nhiều năm, như thể từ trước nó đã biết thị trường nào sẽ còn thanh khoản, còn được niêm yết và đáng để giữ lại.
Xây dựng tập tài sản là một phần của chiến lược. Nếu hệ thống chạy thật chỉ có thể chọn trong số tài sản khả dụng tại mỗi thời điểm ra quyết định, backtest cũng cần tuân theo ranh giới đó. Có ba cách làm tắt thường xuyên xóa nhòa ranh giới này.
Sai lầm thứ nhất: backtest danh sách hôm nay trên toàn bộ lịch sử
Giả sử hôm nay bạn lọc ra 50 thị trường hợp đồng vĩnh cửu tiền mã hóa lớn nhất, rồi backtest chúng từ năm 2021. Danh sách đó loại bỏ các hợp đồng đã biến mất, mất thanh khoản hoặc bị hủy niêm yết. Đồng thời, nó còn cho phép những ngày trong quá khứ tiếp cận các thị trường có thể khi đó chưa tồn tại.
Hậu quả rất dễ bị bỏ qua: chiến lược trông ổn định hơn vì những tài sản thất bại đã biến mất khỏi mẫu dữ liệu. Chẳng hạn, một quy tắc động lượng có thể cho kết quả xuất sắc trên 50 thị trường hiện nay, trong khi nếu áp dụng trong quá khứ, nó sẽ nhiều lần phân bổ vào những mã sau này sụp đổ hoặc mất niêm yết trên sàn. Bạn đã kiểm định một danh mục được chọn dựa trên việc biết trước kết quả.
Hãy lập hồ sơ tư cách thành viên tập tài sản kèm mốc thời gian. Với mỗi tài sản, ghi lại thời điểm tài sản đủ điều kiện, thời điểm hết đủ điều kiện và lý do. Ở mỗi lần tái cân bằng, áp dụng quy tắc chỉ bằng thông tin có sẵn lúc đó. Một thị trường chỉ nên được đưa vào sau khi thực sự niêm yết và hoàn tất khoảng khởi động cần thiết. Nếu thị trường bị hủy niêm yết, cần xác định cách thoát vị thế cuối cùng hoặc xử lý thanh toán; xóa các dòng dữ liệu của thị trường đó không phải là quy tắc thoát lệnh.
Sai lầm thứ hai: xếp hạng theo số liệu được đo sau thời điểm ra quyết định
Ngay cả tập tài sản lịch sử cũng có thể rò rỉ thông tin nếu quy tắc thành viên dùng một cửa sổ dữ liệu bao trọn cả tương lai. “Giao dịch 20 cổ phiếu thanh khoản nhất mỗi tháng” nghe có vẻ hợp lý, cho đến khi thanh khoản được xếp hạng dựa trên cả tháng mà chiến lược được cho là đang giao dịch.
Hãy hình dung bạn tái cân bằng vào ngày giao dịch đầu tiên. Xếp hạng theo khối lượng giao dịch bình quân tính bằng đô la của tháng đó đã âm thầm dùng dữ liệu của ba tuần tiếp theo để quyết định mã nào đủ điều kiện ngay ngày đầu tiên. Hậu quả thường thể hiện ở sức chứa giao dịch cao bất thường: chiến lược tránh được các tài sản trở nên kém thanh khoản về sau trong tháng, dù tại thời điểm vào lệnh nó không thể biết trước điều đó.
Đặt mốc chốt số liệu trước thời điểm lựa chọn. Với lần tái cân bằng hằng tháng diễn ra trong phiên đầu tiên, bạn có thể xếp hạng dựa trên 20 phiên đã hoàn tất trước đó, kết thúc ở phiên liền trước. Sau đó, hãy nêu rõ độ trễ khớp lệnh: nếu thứ hạng dựa trên giá đóng cửa hôm qua, theo quy trình giả định của bạn, lệnh có thể được gửi vào lúc mở cửa hôm nay không?
| Quy tắc lựa chọn | Phiên bản tại từng thời điểm | Rò rỉ thường gặp |
|---|---|---|
| Top 20 theo khối lượng giao dịch tính bằng đô la | Xếp hạng theo các phiên đã hoàn tất trước khi tái cân bằng | Tính cả ngày hoặc tháng tái cân bằng |
| Được niêm yết trên sàn | Dùng thời điểm niêm yết và hủy niêm yết có hiệu lực | Dùng API danh sách mã hiện tại cho các ngày trong quá khứ |
| Lịch sử tối thiểu | Đếm số quan sát có sẵn tại thời điểm lựa chọn | Yêu cầu tài sản phải trụ lại trong tương lai mới vượt qua bộ lọc |
Sai lầm thứ ba: xem lịch sử dữ liệu bị thiếu là bằng chứng tài sản không đủ điều kiện
Kho lưu trữ của nhà cung cấp dữ liệu không nhất thiết ghi lại đầy đủ thị trường trong quá khứ. Một mã bị thiếu có thể có nghĩa là tài sản chưa từng tồn tại, sàn đã đổi quy ước đặt tên, nhà cung cấp không lưu lại các công cụ đã bị hủy niêm yết, hoặc nguồn dữ liệu đơn giản là bị gián đoạn. Mỗi trường hợp kéo theo hệ quả khác nhau.
Hậu quả là một tập tài sản trông gọn gàng nhưng có những lỗ hổng không lời giải thích. Nhà nghiên cứu thường yêu cầu phải có đủ toàn bộ cửa sổ dữ liệu nhìn ngược, rồi âm thầm loại mọi tài sản không đáp ứng. Quy tắc khởi động như vậy có thể hợp lý, nhưng cũng mặc định loại bỏ các tài sản mới niêm yết. Tệ hơn, nếu dữ liệu bị thiếu tập trung ở các thị trường thất bại, yêu cầu “chỉ dùng dữ liệu đầy đủ” sẽ trở thành một dạng lọc theo thiên lệch sống sót khác.
Hãy ghi nhận tư cách đủ điều kiện, mức độ sẵn có của dữ liệu và thời gian khởi động của chiến lược thành các dữ kiện riêng biệt. Ghi lại lý do loại từng tài sản ở mỗi ngày. Giữ thông tin dữ liệu bị thiếu trong sổ theo dõi nghiên cứu thay vì âm thầm xóa bỏ. Khi nguồn dữ liệu không thể xác định một thị trường đã được niêm yết hoặc có thể giao dịch hay chưa, hãy nói rõ và đo lường kết quả phụ thuộc vào mức độ bất định đó đến đâu.
Đảm bảo tập tài sản có thể tái lập
Một cuộc kiểm tra hữu ích bắt đầu với một lần tái cân bằng trong quá khứ. Dựng lại danh sách ứng viên từ dữ liệu niêm yết có mốc thời gian và dữ liệu sẵn có tại thời điểm chốt. Tính lại các đầu vào xếp hạng chỉ bằng những quan sát đã hoàn tất. Sau đó, so sánh tập thành viên thu được với danh sách mà backtest thực sự đã dùng.
Lưu quy tắc, mốc chốt dữ liệu, các quyết định về thành viên và phiên bản nguồn dữ liệu cùng với lần chạy. Nếu bạn không giải thích được vì sao một tài sản được đưa vào còn tài sản khác bị loại tại một ngày cụ thể, bạn vẫn chưa thể biết liệu chiến lược phát hiện ra lợi thế hay chỉ kế thừa một mẫu dữ liệu đã bị định hình bởi tương lai.
Sai lầm khi xây dựng tập tài sản hiếm khi lộ ra qua những mức giá bất khả thi. Chúng thường thể hiện ở một chiến lược thuận tiện tránh được những thị trường không còn thuận tiện nữa.
← Tất cả bài viết


