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

Backtest đã đạt. Chiến lược paper bỏ lỡ 37% số lệnh.

Backtest đã đạt. Chiến lược paper bỏ lỡ 37% số lệnh.

Backtest của chúng tôi tính 91 lệnh khớp trên tổng số 100 lệnh đã gửi. Khi giao dịch paper, cùng chiến lược đó khớp được 63 lệnh. Thời gian trung vị từ lúc có tín hiệu đến khi nhận xác nhận lệnh là 84 mili giây, và 12 lệnh paper bị bỏ lỡ là lệnh giới hạn mà backtest giả định đã khớp ngay khi giá chạm mức đặt.

Chênh lệch 28 điểm này thoạt nhìn giống vấn đề của chiến lược, cho đến khi chúng tôi tách quyết định đặt lệnh khỏi quyết định khớp lệnh. Trong cả 2 lần chạy, chiến lược chọn gần như cùng chiều, khối lượng và giá. Khác biệt nằm ở quy trình khớp lệnh: một số lệnh đến trễ, một số vẫn còn mở, còn một số được gửi đến thị trường sau khi giá đã dịch chuyển.

Mức độ tương đồng lệnh giữa backtest và paper nghĩa là gì?

Mức độ tương đồng có nghĩa là backtest và hệ thống paper đưa ra các quyết định tương đương dựa trên cùng thông tin sẵn có, sau đó tính đến riêng các khác biệt trong mô hình khớp lệnh. Điều đó không có nghĩa là mọi lệnh khớp mô phỏng đều phải trùng với lệnh paper. Dữ liệu nến lịch sử không thể tái dựng vị trí trong hàng đợi, và một nền tảng paper có thể dùng mô hình khớp lệnh khác với sàn giao dịch thực.

Câu hỏi thiết thực hơn là: với mỗi lệnh mà chiến lược định đặt, bạn có giải thích được chuyện gì xảy ra tiếp theo không? Số lượng giao dịch và lợi nhuận cuối kỳ che khuất quá nhiều chi tiết. Hãy lưu một bản ghi liên kết cho mỗi quyết định, dùng một ID quyết định chiến lược ổn định xuyên suốt các sự kiện tín hiệu, lệnh, xác nhận, hủy và khớp.

Nội dung so sánhPhát hiện được gìVí dụ
Thời điểm và chiều quyết địnhĐầu vào hoặc lịch chạy khác nhauTín hiệu paper xuất hiện trễ hơn 1 nến
Khối lượng và giá yêu cầuQuy tắc làm tròn, quản lý rủi ro hoặc quy định của sànBacktest gửi 0.013 BTC; paper làm tròn thành 0.01
Chuyển trạng thái lệnhKhoảng trống khi gửi, từ chối và hủy lệnhBacktest xem yêu cầu hủy là đã hoàn tất
Khối lượng và giá khớpMô hình khớp lệnh quá lạc quan hoặc biến động thị trườngLệnh giới hạn được chạm giá thì khớp toàn bộ trong backtest, nhưng không khớp trong paper

Vì sao các lệnh giới hạn chạm giá lại chiếm phần lớn số lệnh bị bỏ lỡ?

Backtest của chúng tôi dùng nến 1 phút. Nếu giá giới hạn nằm trong biên độ cao-thấp của một nến, hệ thống đánh dấu lệnh là đã khớp. Quy tắc đó cho biết liệu thị trường có giao dịch ở mức giá ấy vào một thời điểm nào đó trong phút đó hay không. Nó không cho biết lúc ấy lệnh của chúng tôi đã hoạt động chưa, lệnh có đứng đầu hàng đợi không, hay có đủ khối lượng giao dịch sau khi lệnh đến hay không.

Nhật ký paper cho thấy vấn đề về thời điểm. Chiến lược tính tín hiệu lúc 12:03:00.000, nhưng sự kiện dữ liệu thị trường đến quy trình đặt lệnh muộn hơn 31 mili giây. Kiểm tra rủi ro mất thêm 22 mili giây, rồi trình mô phỏng của sàn xác nhận lệnh sau đó 31 mili giây. Khi giá biến động nhanh, nến lịch sử có thể khiến một mức giá trông như có thể khớp, dù lệnh giới hạn đến sau khi thị trường đã rời mức đó.

Còn một điểm nữa: 12 lệnh paper vẫn mở trong khi backtest đã chuyển sang bước tiếp theo. Trình mô phỏng chấp nhận yêu cầu hủy như thể lệnh lập tức biến mất. Trong hệ thống paper, xác nhận hủy đến sau đó; 3 lệnh khớp trong khoảng chờ này. Điều đó làm thay đổi vị thế mà tín hiệu tiếp theo nhìn thấy.

Làm sao đo chênh lệch mà không tự đánh lừa mình?

Hãy bắt đầu bằng một báo cáo đối soát gọn, nhóm theo ý định đặt lệnh. Luôn hiển thị mẫu số. “Tỷ lệ khớp” có thể là số lệnh khớp chia cho số lệnh đã gửi, khối lượng đã khớp chia cho khối lượng yêu cầu, hoặc số lệnh khớp chia cho số lệnh đã đến sàn. Mỗi cách trả lời một câu hỏi khác nhau.

  1. Liên kết các sự kiện bằng ID quyết định hoặc ID lệnh phía client, thay vì đoán thời điểm sau khi sự việc đã xảy ra.
  2. Trước tiên, so sánh quyết định: thời điểm tín hiệu, chiều lệnh, khối lượng yêu cầu, loại lệnh và giá giới hạn.
  3. Với các quyết định trùng khớp, hãy so sánh độ trễ xác nhận, các lần bị từ chối, thời gian mở, thời điểm hủy, khối lượng khớp và giá khớp bình quân gia quyền theo khối lượng.
  4. Báo cáo tỷ lệ theo loại lệnh và điều kiện thị trường. Tỷ lệ khớp tổng thể 63% có thể che khuất mức 90% với lệnh thị trường và 35% với lệnh giới hạn thụ động.

Phân loại rõ ràng để không chồng lấn. Lệnh bị từ chối không phải là lệnh chưa khớp; lệnh khớp một phần không phải là khớp toàn bộ; và lệnh bị hủy sau khi khớp một phần vẫn làm thay đổi vị thế. Hãy đếm cả số lệnh lẫn khối lượng yêu cầu để một nhóm lệnh nhỏ không khiến kết quả trông tốt hơn thực tế.

91%tỷ lệ lệnh khớp trong backtest
63%tỷ lệ lệnh khớp trong paper
28 điểm phần trămchênh lệch cần tìm hiểu

Cần thay đổi gì trong backtest?

Hãy dùng quy tắc khớp lệnh phù hợp với độ phân giải dữ liệu và hành vi đặt lệnh dự kiến. Với dữ liệu nến, việc giá chạm mức giới hạn chỉ cho thấy có khả năng khớp, chứ không chứng minh lệnh đã khớp. Bạn có thể mô hình hóa khớp một phần theo hướng thận trọng, yêu cầu giá đi xuyên qua mức đặt, hoặc loại các lệnh thụ động khi không thể ước tính vị trí trong hàng đợi. Mỗi lựa chọn trả lời một câu hỏi khác nhau; hãy ghi lại lựa chọn và so sánh kết quả theo nhiều quy tắc hợp lý.

Đồng thời, hãy mô hình hóa trạng thái lệnh. Lệnh vẫn có hiệu lực cho đến khi hệ thống nhận được sự kiện kết thúc; yêu cầu hủy không xóa bỏ mức độ rủi ro. Nếu chiến lược có thể gửi lệnh thứ 2 trong khi lệnh thứ nhất đang chờ, backtest cần mô phỏng tình huống chạy đua đó hoặc thiết kế để ngăn tình huống này.

Mô hình khớp lệnh là một nhận định về khả năng lệnh của bạn có thể được xử lý ra sao. Hãy đặt ra quy tắc mà bạn giải thích được, rồi đối chiếu quy tắc đó với nhật ký paper.

Điều khiến chúng tôi bất ngờ về chênh lệch 28 điểm không phải là backtest dùng nến 1 phút đã phóng đại số lệnh thụ động được khớp. Mà là vị thế của chiến lược đã lệch trước quyết định tiếp theo vì thời điểm hủy lệnh bị bỏ qua. Sau khi sửa mô hình trạng thái lệnh và không còn xem mọi lần giá chạm mức giới hạn là khớp, kết quả so sánh paper kém đẹp hơn nhưng hữu ích hơn.

Đó là tiêu chuẩn thực tế cho mức độ tương đồng: mọi khác biệt đáng kể giữa hành vi mô phỏng và paper đều có nguyên nhân được ghi nhận, và backtest không khẳng định chắc chắn khi dữ liệu không thể cung cấp điều đó.

giao dịch paperquản lý lệnhbacktestkhớp lệnhhệ thống giao dịch
← Tất cả bài viết