25 tháng Chín, 2026 · nghiên cứu

Làm sao biết dữ liệu thị trường trong backtest có thực sự giao dịch được?

Làm sao biết dữ liệu thị trường trong backtest có thực sự giao dịch được?

Một bản ghi dữ liệu thị trường có thể hoàn toàn chính xác mà vẫn không phải là bằng chứng hữu ích cho backtest. Giao dịch đã diễn ra, mức giá là đúng và dấu thời gian hợp lệ; nhưng luồng dữ liệu có thể đã chuyển đến muộn, nhà cung cấp có thể đã điều chỉnh dữ liệu về sau, hoặc thị trường được báo giá có thể nằm ngoài tầm tiếp cận của chiến lược.

Để biết dữ liệu lịch sử có thể giao dịch được hay không, hãy kiểm tra nhiều hơn dấu thời gian sự kiện. Bạn cần biết bản ghi mô tả điều gì, khi nào hệ thống có thể truy cập bản ghi đó, nó đại diện cho sàn hay công cụ nào, và liệu báo giá hoặc giao dịch ấy có thể hỗ trợ lệnh của bạn một cách hợp lý hay không.

Giá lịch sử chính xác đã đủ cho một backtest chưa?

Chưa. Độ chính xác trả lời câu hỏi: “Cuối cùng nguồn dữ liệu đã ghi nhận mức giá nào?” Backtest còn cần trả lời: “Tại thời điểm ra quyết định, chiến lược của tôi có thể biết được điều gì?” và “Nó có thể khớp lệnh ở mức nào?” Đây là những câu hỏi riêng biệt.

Hãy hình dung một giao dịch tiền mã hóa được ghi nhận lúc 12:00:00.120, nhưng luồng dữ liệu của nhà cung cấp chỉ chuyển đến tiến trình của bạn lúc 12:00:00.480. Chiến lược ra quyết định ở thời điểm .200 không thể sử dụng giao dịch đó, dù dấu thời gian sự kiện có trước thời điểm ra quyết định. Nếu tệp lịch sử chỉ lưu thời gian sự kiện, backtest có thể âm thầm cấp cho chiến lược thông tin mà tiến trình trực tiếp của nó chưa nhận được.

Thời gian hoặc trường dữ liệuCho bạn biết điều gìSai lệch backtest nếu thiếu
Thời gian sự kiệnThời điểm sàn cho biết sự kiện xảy raNhầm thời gian thị trường với thời điểm chiến lược có thể sử dụng dữ liệu
Thời gian nhậnThời điểm bộ thu dữ liệu của bạn nhận được thông điệpDùng dữ liệu đến muộn như thể nó đến ngay lập tức
Số thứ tự hoặc ID cập nhậtVị trí của sự kiện trong thứ tự của luồng dữ liệuÁp dụng cập nhật sai thứ tự hoặc âm thầm bỏ qua chúng
Thời điểm chỉnh sửaThời điểm giá trị lịch sử đã chỉnh sửa được biết đếnBacktest bằng giá trị chưa từng có trong luồng dữ liệu ban đầu

Nếu kho lưu trữ của bạn không có thời gian nhận, hãy thẳng thắn nêu rõ khoảng trống đó. Bạn có thể kiểm tra với giả định độ trễ, hoặc giới hạn kết luận ở nghiên cứu theo thời gian sự kiện. Bạn không thể khôi phục chính xác tập thông tin nếu những dấu thời gian cần thiết chưa từng được lưu.

Làm sao biết một báo giá có thể khớp lệnh?

Hãy bắt đầu từ thị trường mà lệnh của bạn sẽ được gửi đến. Giá mua tốt nhất và giá bán tốt nhất tổng hợp có thể phản ánh nhiều sàn; nhưng điều đó không chứng minh tài khoản của bạn có thể tiếp cận khối lượng được hiển thị, báo giá vẫn còn khi lệnh đến nơi, hay sàn sẽ chấp nhận loại lệnh của bạn.

Với lệnh thị trường, giả định khớp ở giá giữa thường chỉ là hư cấu. Ước tính hữu ích hơn là khớp dần theo sổ lệnh hiển thị ứng với khối lượng lệnh, rồi cộng phí và giả định về độ trễ hoặc tác động giá. Nếu bạn chỉ có dữ liệu cấp giá tốt nhất, hãy giới hạn kết luận: bạn có thể ước tính mức giá đầu tiên, nhưng không thể suy ra độ sâu chưa từng được ghi lại.

Với lệnh giới hạn, giá chạm mức đặt không có nghĩa là lệnh được khớp. Các lệnh xếp trước bạn có thể đã lấy hết khối lượng khả dụng. Thông thường, dữ liệu ảnh chụp sổ lệnh không cho biết vị trí trong hàng đợi, vì vậy quy tắc giả định khớp khi giá chạm nên được xem là một kịch bản lạc quan, chứ không phải sự thật về những gì đã xảy ra.

Nến 1-minute có thể cho biết giá thấp nhất đã chạm qua mức giá giới hạn của bạn. Nhưng nó không thể cho biết lệnh chờ của bạn đã đến sàn trước thời điểm đó hay chưa, khối lượng giao dịch tại đó là bao nhiêu, hoặc có bao nhiêu lệnh xếp trước bạn trong hàng đợi.

Cần kiểm tra gì trước khi tin cậy kho dữ liệu thị trường?

Trước tiên, tôi kiểm tra những thuộc tính cơ bản. Chúng phát hiện nhiều vấn đề nghiên cứu hơn cả một mô hình khớp lệnh tinh vi được chắp thêm vào một luồng dữ liệu lỗi.

Kiểm tra cuối cùng nghe có vẻ quá cơ bản. Có lần tôi mất cả buổi sáng để truy tìm một thay đổi chế độ biến động có vẻ rõ rệt, nhưng hóa ra một trường khối lượng đã đổi đơn vị sau khi chuyển đổi luồng dữ liệu. Biểu đồ trông rất đẹp; đơn vị thì sai.

Làm sao kiểm tra tính sẵn có của dữ liệu có làm thay đổi kết quả không?

Hãy chạy một bài kiểm tra độ nhạy nhỏ quanh ngưỡng ra quyết định của chiến lược. Dịch thời điểm dữ liệu có thể sử dụng theo các độ trễ thực tế, loại bỏ cập nhật có chuỗi thứ tự bị đứt đoạn, rồi so sánh kết quả khớp lệnh bằng sổ lệnh của đúng sàn nếu bạn có dữ liệu đó. Báo cáo cả kết quả ban đầu lẫn kết quả sau khi làm suy giảm dữ liệu. Nếu chỉ một độ trễ nhỏ đã xóa sạch hiệu quả, chiến lược có thể đang dựa vào lợi thế thông tin mà hệ thống thu thập của bạn không thể cung cấp một cách đáng tin cậy.

Ví dụ cụ thể: giả sử tín hiệu được kích hoạt khi giá mua tốt nhất tăng 1 tick. Phát lại tín hiệu một lần theo thời gian sự kiện của sàn và một lần theo thời gian bộ thu dữ liệu nhận được. Nếu phiên bản theo thời gian sự kiện giao dịch 40 lần còn phiên bản theo thời gian nhận giao dịch 27 lần, chênh lệch đó là một phần bằng chứng về chiến lược. Hiệu suất ở mỗi lần phát lại cũng vậy. Đừng giấu đi kết quả kém hơn chỉ vì dữ liệu của nó trông không đẹp bằng.

Giao dịch mô phỏng là bước kiểm tra tiếp theo hữu ích vì nó bộc lộ độ trễ luồng dữ liệu, báo giá cũ, lỗi ánh xạ mã giao dịch và bộ lọc của sàn trong cùng quy trình vận hành mà hệ thống nghiên cứu của bạn sử dụng. Tuy vậy, nó vẫn không mô phỏng được mọi vị trí trong hàng đợi trực tiếp hay tác động lên thị trường. Hãy làm rõ giới hạn đó.

Trên thực tế, “dữ liệu có thể giao dịch” nghĩa là gì?

Nghĩa là backtest có thể giải thích thời điểm một quan sát xảy ra, khi nào chiến lược có thể sử dụng nó, dữ liệu đến từ thị trường nào và bằng chứng khớp lệnh nào hỗ trợ giả định về việc khớp. Một chuỗi giá sạch chỉ là điểm khởi đầu. Nghiên cứu trở nên đáng tin khi các giả định về thời điểm, khả năng tiếp cận và khớp lệnh đứng vững trước khi được kiểm tra—và khi kết quả vẫn hợp lý sau khi bạn nới lỏng các giả định đó.

dữ liệu thị trườngbacktestingkỹ thuật dữ liệukhớp lệnhgiao dịch mô phỏng
← Tất cả bài viết