Một bài kiểm thử có thể dùng thông báo thật và giá thật nhưng vẫn cho chiến lược biết những điều chưa thể biết lúc đó. Sai sót thường nằm ở mốc thời gian hoặc phiên bản dữ liệu, trước cả bước tính hiệu suất.
Bài học Đọc phản ứng thị trường này xem cách tái dựng quyết định theo tin tức mà không mắc thiên lệch nhìn trước (look-ahead bias): đưa thông tin xuất hiện sau vào quyết định trước đó. Bài so sánh tin tức và kỹ thuật giải thích hai cách tiếp cận. “Giao dịch theo tin” ở đây là phản ứng với thông báo hoặc chất xúc tác, không phải các chiến lược theo sự kiện của tổ chức như kinh doanh chênh lệch giá trong thương vụ sáp nhập.
Giữ đúng bản công bố tại thời điểm đó
Số liệu tải về hôm nay có thể khác lần công bố đầu tiên. Cục Thống kê Lao động Hoa Kỳ mô tả các lần điều chỉnh bổ sung báo cáo đến sau và những cập nhật khác. Dữ liệu điều chỉnh có thể phù hợp để nghiên cứu nền kinh tế, nhưng người giao dịch chưa có nó khi số liệu ban đầu được công bố.
Bài giải thích ALFRED của Fed St. Louis mô tả các bản dữ liệu lưu theo thời điểm, còn gọi là vintage. Tài liệu về khoảng thời gian thông tin có hiệu lực phân biệt điều được biết hôm nay với điều đã biết trong quá khứ. Những bản ghi theo ngày đó không chứng minh nguồn tin của bạn nhận thông điệp ở mili giây nào; cần bằng chứng riêng.
Trong một ví dụ giả định, chỉ số kinh tế hư cấu được công bố lần đầu ở mức 3.2%, so với bản dự báo 3.0% đã lưu trước khi công bố. Kiểm thử phân loại mức chênh là +0.2 điểm phần trăm so với dự báo. Nếu thay bằng số điều chỉnh sau đó là 2.9%, dòng dữ liệu cũ sẽ thành −0.1 điểm phần trăm. Phân loại bị đảo ngược vì thông tin đến sau lọt vào quá khứ, chứ không phải vì ta sửa đúng điều người giao dịch đã biết.
Hãy lưu cả nguồn, thời điểm thu thập và định nghĩa của dự báo. “Bất ngờ” được tính so với mốc đã ghi nhận đó; không tự động là tin tốt cho token hay dự đoán hướng giá. Khi tiêu đề tin được sửa, lưu thành phiên bản mới thay vì âm thầm ghi đè bản gốc. Các số thập phân trong bài dùng dấu chấm để thống nhất phép tính.
Tách giờ công bố, nhận tin và hành động
Tiếp tục với một ngày tưởng tượng, một token hư cấu báo giá bằng USD trên một sàn giao ngay hư cấu. Chỉ để minh họa thời gian, giả định quy tắc kiểm thử định trước mua hai token khi số công bố lần đầu cao hơn dự báo đã lưu; bằng nhau không đáp ứng điều kiện. Đây là quy tắc giảng giải, không phải khuyến nghị dựa trên kinh tế. Giả định mọi đồng hồ dưới đây đã đồng bộ theo UTC.
| Giờ UTC | Sự kiện |
|---|---|
| 12:00:00.000 | Số liệu được công bố |
| 12:00:02.000 | Bộ thu nhận được tin |
| 12:00:02.100 | Hoàn tất quyết định |
| 12:00:02.300 | Lệnh tới sàn |
Độ trễ giả định là 2.000 giây truyền tin, 0.100 giây xử lý và 0.200 giây chuyển lệnh: tổng cộng 2.300 giây từ công bố tới lúc lệnh đến. Kiểm thử không thể đặt lệnh này ngay giờ công bố chỉ vì lịch sự kiện quá khứ có ghi mốc đó.
Khi nghiên cứu thực tế, ghi rõ độ lệch đồng hồ, quy đổi múi giờ, độ chính xác của dấu thời gian và trường dữ liệu biểu thị giờ công bố, giờ nhận hay lần cập nhật sau. Nếu thiếu nhật ký nhận tin, dùng các kịch bản độ trễ được nêu rõ và ghi nhận giới hạn. Thiếu bằng chứng không phải bằng chứng rằng độ trễ bằng không.
Dùng mức giá phù hợp sau khi lệnh tới sàn
Giả sử giá chào bán tốt nhất là 100.00 USD lúc 11:59:59.900, trước công bố. Tại giờ lệnh đến trong mô hình, 12:00:02.300, giả định có mức chào bán 100.60 mà lệnh có thể tiếp cận, với năm token sẵn có; lệnh mua hai token khớp toàn bộ ngay ở giá đó. Các giả định khớp lệnh dựng sẵn giúp đơn giản hóa phép tính; báo giá hiển thị không tự bảo đảm khớp thật.
Chi phí vào vị thế mô phỏng là 2 × 100.60 = 201.20 USD, chưa tính phí. Gán giá cũ 100.00 sẽ ghi nhận 200.00, làm thấp chi phí vào 1.20 USD. Báo giá trước đó không đủ cơ sở cho mức khớp này. Lệnh thật vẫn có thể khớp 100.00 vào lúc sau, nhưng cần bằng chứng thực thi phù hợp riêng.
Đưa chênh lệch mua–bán, số lượng khả dụng và phí vào mô hình thực thi. Không trừ thêm cùng một khoản chênh lệch hoặc trượt giá nếu nó đã nằm trong giá khớp mô phỏng. Bài học về thanh khoản phân biệt giá tham chiếu với quy mô có thể khớp. Bài tập chỉ so sánh chi phí vào; không có giá thoát, lợi nhuận hay tuyên bố khả năng sinh lời.
Đặt xác nhận kỹ thuật lên cùng dòng thời gian
Nếu quy tắc còn yêu cầu nến một phút hoàn tất, bao phủ từ 12:00 đến trước 12:01 UTC, quyết định không thể hoàn tất lúc 12:00:02.100. Phải đợi khoảng nến kết thúc và dữ liệu hoàn chỉnh được nhận. Xử lý và chuyển lệnh diễn ra sau đó.
Dời quyết định muộn hơn nhưng giữ nguyên giá khớp cũ 100.60 là lặp lại lỗi thời gian, trừ khi có báo giá mới phù hợp làm căn cứ. Tương tự, nhãn nến 12:00 không có nghĩa giá đóng cửa cuối cùng đã có từ 12:00. Xem bài học về khung thời gian để hiểu sự khác biệt.
Mô hình thực thi được Backtrader công bố minh họa một quy ước: lệnh thị trường thông thường tạo từ nến đang được xem xét dùng giá mở cửa nến kế tiếp. Đây là giả định của bộ mô phỏng, không phải bằng chứng lệnh thật có thể khớp tại đó. Kiểm tra thiết lập công cụ và độ phân giải dữ liệu, thay vì cho rằng “nến kế tiếp” giải quyết mọi vấn đề về độ trễ hay thanh khoản.
Chốt thiết kế kiểm thử trước khi xem kết quả tốt
Viết quy tắc chọn sự kiện, định nghĩa bất ngờ, điều kiện kỹ thuật, độ trễ, quy mô vị thế, quy tắc thoát và chi phí trước khi so sánh kết quả. Quy tắc chỉ dựa vào sự kiện và quy tắc đòi xác nhận kỹ thuật là hai phép thử khác nhau; không thể cho phép thử này dùng giá vào sớm hơn của phép thử kia.
Dùng danh sách sự kiện định trước, thay vì chỉ giữ những công bố theo sau bởi biến động lớn. Lưu các trường hợp bị loại và lý do, gồm thiếu dữ liệu hoặc thị trường không thể giao dịch. Chọn ngưỡng trên giai đoạn phát triển rồi giữ cố định cho giai đoạn đánh giá sau đó. Câu chuyện hợp lý và dòng thời gian gọn gàng vẫn chưa chứng minh lợi thế.
Khi thời gian nhận tin chậm hoặc không chắc chắn, thử các phương án đã nêu thay vì chọn độ trễ cho kết quả lịch sử tốt nhất. Đó là phân tích độ nhạy với giả định, không phải tái dựng những lần khớp không có bản ghi.
Làm cho từng quyết định có thể tái dựng
Với mỗi sự kiện được xét, hãy lưu:
- Bản công bố gốc, phiên bản và thời điểm công bố.
- Bản dự báo lưu trước công bố và quy tắc so sánh chính xác.
- Giờ nhận tin và thời điểm khả dụng muộn nhất trong tất cả đầu vào cần thiết.
- Giờ quyết định và giờ lệnh đến, ghi rõ các giả định độ trễ.
- Bằng chứng báo giá hoặc giao dịch phù hợp, số lượng, phí và kết quả cuối cùng hoặc lý do không giao dịch.
Hướng dẫn kiểm thử lịch sử và kết quả vận hành giải thích cách đánh giá bằng chứng thu được. Bắt đầu bằng việc tái dựng một quyết định mà không mượn thông tin tương lai. Sau đó đánh giá toàn bộ mẫu định trước, gồm cả thiết lập thất bại và lệnh không khớp.
Chỉ nhằm mục đích giáo dục, không phải tư vấn tài chính. Mọi sự kiện, số liệu, thời điểm và giá trong ví dụ đều giả định. Trình tự đúng giúp kiểm thử đáng tin cậy hơn, không bảo đảm lợi nhuận giao dịch.