Tác nhân nghiên cứu chiến lược có thể làm nhiễm bẩn tập kiểm thử mà không đưa dù chỉ một dòng dữ liệu kiểm thử vào tác vụ huấn luyện. Nếu tác nhân thấy điểm kiểm thử, thay đổi một tham số rồi chạy lại, điểm số đó đã ảnh hưởng đến chiến lược. Mã có thể gọi giai đoạn này là “ngoài mẫu”. Nhưng quy trình nghiên cứu đã biến nó thành một phần của quá trình tìm kiếm.
Tôi từng thấy chuyện này xảy ra vì sự tiện lợi: tác nhân chạy một loạt thử nghiệm, đọc bảng tóm tắt rồi đề xuất một cải tiến nhỏ. Không ai yêu cầu nó khớp mô hình trên tập giữ lại. Vòng lặp phản hồi vẫn làm việc đó.
Lỗi 1: Để tác nhân xem kết quả sau mỗi lần chạy
Dấu hiệu thường thấy là Sharpe trên tập kiểm thử tăng đều qua từng bước nhỏ. Tác nhân thử 30 biến thể, giữ lại biến thể tốt nhất rồi thử thêm 30 biến thể quanh lựa chọn đó. Mỗi thay đổi riêng lẻ đều có vẻ hợp lý. Kết hợp lại, chúng biến giai đoạn kiểm thử thành mục tiêu tối ưu hóa.
Đây là ví dụ đơn giản. Giả sử chiến lược không có lợi thế thực sự và bạn kiểm thử 100 biến thể độc lập trên tập giữ lại. Nếu chọn biến thể có Sharpe cao nhất, rất có thể bạn sẽ tình cờ tìm được một kết quả có vẻ ấn tượng. Trong hầu hết các cuộc tìm kiếm chiến lược, các biến thể sẽ không thực sự độc lập, nhưng điều đó không cứu được quy trình: phản hồi lặp đi lặp lại vẫn ưu ái những thiết lập tình cờ khớp với đặc điểm riêng của tập giữ lại.
Hãy đặt tập giữ lại sau một ranh giới kết quả. Tác nhân có thể phát triển chiến lược bằng các giai đoạn huấn luyện và xác thực; nó không thể truy xuất chỉ số hay biểu đồ của tập giữ lại. Hãy chạy lần đánh giá cuối cùng trong một tác vụ riêng, chỉ chạy 1 lần sau khi đã chốt các quyết định nghiên cứu, đồng thời ghi lại phiên bản chiến lược và ảnh chụp dữ liệu đi kèm kết quả.
Lỗi 2: Gọi mọi giai đoạn sau đó là “mới”
Một khoảng thời gian không tự nhiên trở thành dữ liệu mới chỉ vì nó nằm sau giai đoạn huấn luyện. Nếu tác nhân đã thấy điểm số của khoảng thời gian đó, hoặc con người đã dựa vào mức sụt giảm của nó để chọn một đặc trưng khác, thì khoảng thời gian ấy đã trở thành một phần của vòng lặp phản hồi.
| Giai đoạn | Cách sử dụng được phép | Điều làm thay đổi trạng thái |
|---|---|---|
| Huấn luyện | Khớp quy tắc và tham số | Không có gì; giai đoạn này vốn dành cho việc tìm kiếm |
| Xác thực | So sánh các ứng viên và đưa ra quyết định nghiên cứu | Sử dụng lặp lại khiến nguy cơ quá khớp tăng lên |
| Tập giữ lại cuối cùng | Đánh giá ứng viên đã chốt 1 lần | Đọc kết quả rồi thay đổi ứng viên |
| Giai đoạn giao dịch giấy trong tương lai | Quan sát trước cách triển khai vận hành | Dùng kết quả để tinh chỉnh sẽ tạo ra một chu kỳ nghiên cứu mới |
Đánh giá cuốn chiếu theo phương pháp walk-forward có thể giúp ước tính một quy trình nghiên cứu cố định sẽ hoạt động ra sao qua thời gian. Phương pháp này không cho phép bạn xem kết quả mọi fold tùy ý. Nếu tác nhân thấy kết quả các fold rồi điều chỉnh quá trình tìm kiếm, các fold đó cũng trở thành nguồn phản hồi. Hãy giữ lại 1 giai đoạn cuối cùng chưa bị động đến để đưa ra quyết định bạn thực sự cần.
Lỗi 3: Giữ nguyên mã nhưng thay đổi câu hỏi
Đôi khi mã chiến lược vẫn giữ nguyên, nhưng nhà nghiên cứu lại thay đổi cách đánh giá sau khi thấy kết quả: đổi chuẩn so sánh, loại bỏ một tháng khó khăn, báo cáo một tập tài sản khác hoặc tập trung vào chỉ số trông có vẻ tốt nhất. Tập kiểm thử đã định hướng câu chuyện, dù không có tham số nào thay đổi.
Dấu hiệu là một báo cáo trau chuốt với 1 tiêu đề nổi bật nhưng không ghi lại những góc nhìn khác đã được thử. Chiến lược cổ phiếu có thể trông yếu khi so với chỉ số thị trường rộng nhưng lại mạnh khi so với tiền mặt; chiến lược tiền mã hóa có thể tỏa sáng trên 1 nền tảng giao dịch sau khi đã kiểm tra nhiều nền tảng. Những phép so sánh đó có thể hữu ích, nhưng chọn lựa giữa chúng sau khi xem tập giữ lại cũng là một bước chọn lọc nữa.
Hãy duy trì sổ theo dõi nghiên cứu. Với mỗi lần chạy, lưu lại giả thuyết, phiên bản mã, ảnh chụp dữ liệu, quá trình tìm kiếm tham số, các cửa sổ đánh giá, chỉ số được yêu cầu và việc tác nhân hay nhà nghiên cứu có xem kết quả hay không. Một bản ghi ngắn gọn hữu ích hơn nhãn “ngoài mẫu” nghe có vẻ hoàn hảo.
Sau đó, hãy nêu rõ câu hỏi cuối cùng trước khi đánh giá: ứng viên nào, tập thị trường nào, chuẩn so sánh nào, chi phí nào và những chỉ số nào? Nếu câu trả lời thay đổi sau khi có kết quả, hãy coi lần chạy tiếp theo là nghiên cứu và dành dữ liệu mới cho lần kiểm tra cuối kế tiếp.
Tôi còn có thể học được gì từ tập giữ lại đã bị nhiễm bẩn?
Tập này không vô dụng. Nó có thể cho thấy chiến lược đã vận hành ra sao trong giai đoạn đó và giúp chẩn đoán thất bại. Chỉ cần đừng trình bày điểm số của nó như một xác nhận độc lập. Hãy dùng nó làm bằng chứng trong quá trình phát triển, chốt ứng viên tiếp theo rồi đánh giá ứng viên đó trên một giai đoạn giao dịch giấy thực sự trong tương lai, với cùng giả định về hạch toán và khớp lệnh.
Trong quy trình có tác nhân, rất dễ mất dấu số lượng thí nghiệm: chỉ 1 câu lệnh có thể tạo ra hàng chục lần chạy trước khi có người nhận ra. Cách bảo vệ nằm ở quy trình. Hạn chế những gì tác nhân được phép xem, ghi lại mọi thí nghiệm và giữ lại 1 lần đánh giá có kết quả không thể chi phối ứng viên đang được đánh giá.
← Tất cả bài viết


