Chia dữ liệu theo thứ tự thời gian: phần trước (trong mẫu) để xây và tinh chỉnh chiến lược, phần sau (ngoài mẫu) giữ nguyên để kiểm tra đúng một lần. Nếu nhìn kết quả ngoài mẫu rồi quay lại sửa tham số, phần đó đã trở thành dữ liệu trong mẫu.
Định nghĩa đầy đủ
Dữ liệu trong mẫu (in-sample) là phần dữ liệu lịch sử dùng để thiết kế và tối ưu tham số chiến lược; dữ liệu ngoài mẫu (out-of-sample) là phần được giữ riêng, không dùng trong quá trình xây dựng, chỉ để đánh giá chiến lược có còn hiệu quả trên dữ liệu chưa thấy hay không.
Lưu ý rủi ro: Nội dung mang tính giáo dục về phương pháp kiểm định, không phải tư vấn đầu tư và không trình bày kết quả của chiến lược thật. Hợp đồng tương lai dùng đòn bẩy nên lãi và lỗ đều bị khuếch đại; kết quả kiểm định tốt không bảo đảm kết quả giao dịch thật.
Những điều cần nhớ
- Dữ liệu chuỗi thời gian phải chia theo thứ tự thời gian để tránh rò rỉ thông tin tương lai
- Dữ liệu ngoài mẫu chỉ có giá trị khi được dùng để đánh giá một lần
- Không có tỷ lệ chia chuẩn; phần ngoài mẫu cần đủ số lệnh để có ý nghĩa thống kê
- Kết quả ngoài mẫu kém hơn trong mẫu là bình thường; sụt quá mạnh là dấu hiệu overfitting
Vì sao phải tách dữ liệu trước khi kiểm định
Khi xây một chiến lược, người kiểm định liên tục đưa ra lựa chọn: dùng chỉ báo nào, cửa sổ bao nhiêu phiên, ngưỡng vào lệnh ở đâu, có lọc theo giờ hay không. Mỗi lựa chọn được "chấm điểm" bằng kết quả backtest. Sau vài chục vòng như vậy, chiến lược không chỉ học được quy luật của thị trường mà còn học cả nhiễu ngẫu nhiên của đúng đoạn dữ liệu đó.
Vấn đề là không có cách nào phân biệt hai phần này nếu chỉ nhìn trên dữ liệu đã dùng để xây dựng. Kết quả trên dữ liệu trong mẫu luôn bị thổi phồng, vì nó được chọn ra chính là để đẹp trên dữ liệu đó. Hiện tượng này được gọi là điểm khớp quá mức (overfitting), phân tích chi tiết trong bài điểm khớp quá mức khi kiểm định chiến lược.
Dữ liệu ngoài mẫu đóng vai trò như một bài thi chưa ai xem đề. Nếu chiến lược chỉ "học thuộc" nhiễu, kết quả trên phần này sẽ sụt mạnh. Nếu chiến lược nắm được một quy luật có thật, kết quả thường kém đi một chút nhưng vẫn giữ được đặc điểm chính.
Chia theo thời gian, không chia ngẫu nhiên
Trong nhiều bài toán thống kê, dữ liệu được xáo trộn rồi chia ngẫu nhiên. Với dữ liệu giá như VN30F1M, cách làm đó sai về nguyên tắc vì hai lý do:
- Rò rỉ thông tin tương lai: nếu một ngày tháng 3 nằm trong phần ngoài mẫu nhưng ngày tháng 4 nằm trong phần trong mẫu, chiến lược đã "thấy" diễn biến sau đó khi được tinh chỉnh. Đây là một dạng sai lệch nhìn trước (look-ahead bias).
- Phụ thuộc giữa các phiên liền nhau: biến động, xu hướng và thanh khoản có tính liên tục. Hai phiên cạnh nhau thường giống nhau hơn hai phiên cách xa, nên chia ngẫu nhiên làm hai phần giống nhau một cách giả tạo.
Quy tắc đơn giản: chọn một mốc thời gian, mọi dữ liệu trước mốc là trong mẫu, mọi dữ liệu sau mốc là ngoài mẫu. Không có phiên nào của phần ngoài mẫu nằm trước phiên cuối của phần trong mẫu. Với chỉ báo cần dữ liệu khởi động (ví dụ trung bình 50 phiên), các phiên khởi động ở đầu phần ngoài mẫu phải được tính từ dữ liệu trước mốc, không được làm tín hiệu đầu tiên bị lệch.
Tỷ lệ chia và độ dài tối thiểu mỗi phần
Các tỷ lệ 70/30 hay 80/20 thường được nhắc tới, nhưng chúng chỉ là điểm xuất phát, không phải chuẩn. Câu hỏi đúng là: mỗi phần có đủ thông tin để kết luận hay không.
- Phần trong mẫu cần đủ dài để chiến lược gặp nhiều trạng thái thị trường — tăng, giảm, đi ngang, biến động mạnh và yếu — nếu không, tham số được chọn chỉ phù hợp với một trạng thái.
- Phần ngoài mẫu cần đủ số lệnh. Chiến lược giao dịch ít lệnh có thể cần phần ngoài mẫu dài hơn nhiều so với chiến lược giao dịch trong ngày. Vài chục lệnh thường chưa đủ để phân biệt kỹ năng với may mắn, xem bài cỡ mẫu và ý nghĩa thống kê trong kiểm định.
- Chế độ thị trường: nếu phần ngoài mẫu chỉ gồm một giai đoạn xu hướng mạnh, kết quả tốt có thể chỉ phản ánh giai đoạn đó. Hiện tượng này được bàn trong bài về phụ thuộc chế độ thị trường.
Ví dụ minh họa: có 6 năm dữ liệu, 4 năm đầu làm trong mẫu, 2 năm cuối làm ngoài mẫu. Chiến lược cho 120 lệnh trong mẫu nhưng chỉ 25 lệnh ngoài mẫu. Với 25 lệnh, một hai lệnh thắng lớn có thể thay đổi toàn bộ kết luận — phần ngoài mẫu quá ít lệnh để đánh giá, cần dữ liệu dài hơn hoặc thận trọng khi đọc kết quả.
| Phần dữ liệu | Giai đoạn (minh họa) | Dùng để | Số lệnh (minh họa) |
|---|---|---|---|
| Trong mẫu | Năm 1 – Năm 4 | Thiết kế, tối ưu tham số | 120 |
| Ngoài mẫu | Năm 5 – Năm 6 | Đánh giá một lần, không chỉnh sửa | 25 |
Giai đoạn và số lệnh là ví dụ minh họa, không phải kết quả kiểm định chiến lược thật.
Lỗi "tiêu hao" dữ liệu ngoài mẫu
Lỗi phổ biến nhất không nằm ở cách chia mà ở cách dùng. Quy trình thường diễn ra thế này: xây chiến lược trên phần trong mẫu, chạy thử phần ngoài mẫu, thấy kết quả chưa đẹp, quay lại chỉnh một tham số, chạy lại phần ngoài mẫu. Sau vài vòng, kết quả ngoài mẫu trông rất tốt.
Nhưng lúc này dữ liệu ngoài mẫu đã tham gia vào việc chọn tham số. Nó không còn là bài thi chưa xem đề mà đã trở thành một phần của dữ liệu trong mẫu. Mỗi lần nhìn kết quả ngoài mẫu rồi sửa chiến lược, giá trị kiểm tra của phần dữ liệu đó bị tiêu hao một ít, cho tới khi mất hẳn.
Cách giảm lỗi này:
- Ghi lại quy tắc và tham số chiến lược trước khi chạy phần ngoài mẫu, kèm ngày giờ.
- Chạy phần ngoài mẫu một lần, ghi kết quả, dù tốt hay xấu.
- Nếu buộc phải sửa chiến lược, coi phần ngoài mẫu cũ là dữ liệu đã dùng và cần một nguồn kiểm tra mới — dữ liệu phát sinh sau này hoặc giai đoạn thử nghiệm trên dữ liệu thời gian thực.
- Ghi lại số lần đã thử, vì càng nhiều lần thử, kết quả tốt nhất càng dễ là may mắn.
Từ chia một lần đến walk-forward
Chia một lần có hạn chế: kết luận phụ thuộc vào đúng một mốc cắt. Nếu mốc rơi vào đầu một giai đoạn thuận lợi, kết quả ngoài mẫu đẹp một cách tình cờ.
Walk-forward mở rộng ý tưởng này bằng cách lặp lại việc chia nhiều lần: tối ưu trên một cửa sổ, kiểm tra trên cửa sổ kế tiếp, rồi trượt cả hai về phía trước. Kết quả ngoài mẫu được ghép từ nhiều đoạn, bao phủ nhiều giai đoạn thị trường hơn. Cách chọn độ dài cửa sổ được trình bày trong bài thiết kế cửa sổ walk-forward.
Chia một lần vẫn hữu ích như bước đầu: đơn giản, dễ kiểm tra và đủ để loại sớm các chiến lược overfitting rõ ràng. Walk-forward là bước sau, khi chiến lược đã qua vòng lọc đầu tiên.
Đọc chênh lệch kết quả trong mẫu và ngoài mẫu
Kết quả ngoài mẫu kém hơn trong mẫu là điều bình thường, vì phần trong mẫu đã được tối ưu. Điều cần xem là mức độ và tính chất của chênh lệch:
- Sụt vừa phải, các đặc điểm chính giữ nguyên (tỷ lệ thắng, lãi lỗ trung bình, độ sụt vốn gần tương tự): chiến lược có thể nắm được một quy luật thật.
- Sụt mạnh hoặc đổi dấu: dấu hiệu rõ của overfitting hoặc chiến lược chỉ phù hợp chế độ thị trường của phần trong mẫu.
- Ngoài mẫu tốt hơn hẳn trong mẫu: không nên vội mừng. Có thể phần ngoài mẫu rơi vào giai đoạn đặc biệt thuận lợi, hoặc số lệnh quá ít.
Dù kết quả thế nào, cần tính đủ chi phí giao dịch và trượt giá ở cả hai phần, nếu không so sánh sẽ bị lệch.
Câu hỏi thường gặp
Nên chia dữ liệu 70/30 hay 80/20?
Không có tỷ lệ cố định đúng cho mọi chiến lược. Điều quan trọng là phần ngoài mẫu có đủ số lệnh để kết luận và bao phủ nhiều chế độ thị trường, còn phần trong mẫu đủ dài để tham số không bị gắn với một giai đoạn duy nhất. Chiến lược ít lệnh thường cần phần ngoài mẫu dài hơn chiến lược giao dịch trong ngày.
Chia dữ liệu ngẫu nhiên có được không?
Không, với dữ liệu chuỗi thời gian như giá VN30F1M. Chia ngẫu nhiên khiến phần trong mẫu chứa các phiên nằm sau phiên ngoài mẫu, tạo rò rỉ thông tin tương lai. Các phiên liền nhau cũng phụ thuộc lẫn nhau, làm hai phần giống nhau giả tạo. Luôn chia theo một mốc thời gian, phần trước là trong mẫu, phần sau là ngoài mẫu.
Kết quả ngoài mẫu tốt hơn trong mẫu thì có nghĩa gì?
Không nhất thiết là tín hiệu tốt. Phần ngoài mẫu có thể rơi đúng vào một giai đoạn thị trường thuận lợi cho chiến lược, hoặc có quá ít lệnh nên vài lệnh thắng lớn kéo kết quả lên. Nên kiểm tra số lệnh, chế độ thị trường của giai đoạn đó và thử thêm walk-forward trước khi đưa ra kết luận.
Có được dùng lại dữ liệu ngoài mẫu sau khi sửa chiến lược không?
Không nên. Khi đã xem kết quả ngoài mẫu rồi sửa chiến lược, phần dữ liệu đó đã tham gia vào việc chọn tham số và mất vai trò kiểm tra độc lập. Để đánh giá phiên bản mới cần một nguồn dữ liệu chưa dùng, ví dụ dữ liệu phát sinh sau thời điểm sửa hoặc giai đoạn thử nghiệm theo thời gian thực.
Walk-forward khác chia một lần thế nào?
Chia một lần dùng một mốc cắt duy nhất, nên kết luận phụ thuộc vào vị trí mốc đó. Walk-forward lặp lại việc tối ưu trên một cửa sổ và kiểm tra trên cửa sổ kế tiếp, rồi trượt dần về phía trước. Kết quả ngoài mẫu được ghép từ nhiều đoạn, bao phủ nhiều giai đoạn thị trường hơn và ít phụ thuộc vào may rủi của một mốc cắt.
Nguồn tham khảo
- Tài liệu phương pháp luận kiểm định chiến lược giao dịch của tổ chức tài chính uy tín
Giai đoạn dữ liệu và số lệnh trong bài là ví dụ minh họa, không phải kết quả kiểm định chiến lược thật.
Lưu ý rủi ro: Bài viết trình bày phương pháp kiểm định, không gợi ý áp dụng chiến lược nào. Chứng khoán phái sinh dùng đòn bẩy — lãi và lỗ đều được khuếch đại.
Kiểm định trung thực là chủ đề chính của Stockup — đăng ký bản tin để nhận checklist kiểm định mỗi khi có bài mới.
