Lúc 10:14 UTC, một chiến lược breakout đơn giản mua hợp đồng perpetual crypto sau khi giá vượt mức cao nhất trong 20 phút. Backtest ghi nhận khớp lệnh ở mức $64,210. Con số đó có trong dữ liệu, tín hiệu được đóng dấu thời gian chính xác và lệnh mô phỏng được gửi đến ở cây nến kế tiếp. Chúng tôi suýt gọi đây là một kết quả sạch.
Sau đó, chúng tôi đối chiếu mã định danh công cụ. Tín hiệu đến từ hợp đồng perpetual BTCUSDT. Lệnh khớp lại được tính theo hợp đồng nghịch đảo BTCUSD. Cả hai đều giao dịch quanh mức $64,210 và đều là những thị trường có thanh khoản. Nhưng đó vẫn là hai sổ lệnh khác nhau, với giá, bước giá, độ sâu và biểu phí khác nhau. Backtest đã ghép nối thành một thị trường mà không nhà giao dịch nào có thể tiếp cận.
Bản thân chiến lược không có gì đặc biệt: vào lệnh khi giá đóng cửa vượt mức cao nhất trong cửa sổ trượt, thoát lệnh khi giá đóng cửa thấp hơn mức thấp nhất trong cửa sổ trượt, và định cỡ mỗi vị thế theo một mức rủi ro cố định tính bằng đô la. Vấn đề chỉ lộ ra khi chúng tôi đặt câu hỏi chính xác hơn “BTC đáng giá bao nhiêu?” Chúng tôi hỏi: “Lúc đó, lệnh này có thể mua được gì trong chính hợp đồng này?”
Biểu đồ đã là dữ liệu tổng hợp trước khi chiến lược chạy
Nguồn cấp dữ liệu nghiên cứu giúp chúng tôi dễ dàng so sánh các sàn. Nguồn này chuẩn hóa ký hiệu và hiển thị chuỗi giá tổng hợp. Điều đó tiện để quan sát thị trường, nhưng không thích hợp làm tham chiếu khớp lệnh. Dữ liệu tổng hợp có thể hiển thị mức giá tốt nhất trên nhiều sàn, dù chiến lược chỉ có thể gửi lệnh đến một sàn duy nhất.
Khi breakout xảy ra, mức cao nhất của nến tổng hợp là $64,205. Giao dịch gần nhất của hợp đồng được chọn đã lên $64,218. Trong khi đó, một báo giá lưu trong bộ nhớ đệm của hợp đồng nghịch đảo vẫn hiển thị giá bán ở mức $64,210. Trình mô phỏng dùng tín hiệu breakout từ chuỗi này và mức giá bán hấp dẫn từ chuỗi khác. Mỗi giá trị đều có thật. Ghép chúng lại thì thành hư cấu.
| Đầu vào | Backtest đã dùng gì | Lệnh cần gì |
|---|---|---|
| Mức cao breakout | Giá BTC tổng hợp | Lịch sử giá của hợp đồng được chọn |
| Giá tham chiếu khi vào lệnh | Giá bán lưu trong bộ nhớ đệm của hợp đồng nghịch đảo | Giá bán mới nhất của công cụ được giao dịch |
| Khối lượng khớp | Quy mô vị thế yêu cầu | Khối lượng có sẵn ở từng mức giá |
Một hàng trong bảng dữ liệu thị trường có thể trông đầy đủ dù các trường trong đó mô tả những thị trường khác nhau. Bí danh của ký hiệu không chứng minh rằng hai công cụ dùng chung một sổ lệnh. Mã hợp đồng, sàn, đồng tiền định giá và dấu thời gian cần được giữ xuyên suốt quá trình tạo tín hiệu và khớp lệnh.
Chúng tôi phát lại lệnh trên sổ lệnh
Chúng tôi chạy lại lệnh vào bằng giá bán tốt nhất của chính hợp đồng perpetual đã chọn và các cập nhật sổ lệnh có sẵn tại thời điểm ra quyết định. Báo giá còn mới, nhưng ở mức giá tốt nhất chỉ có 0.18 BTC. Lệnh mô phỏng của chúng tôi là 0.50 BTC. 0.32 BTC còn lại sẽ phải khớp ở các mức giá bán cao hơn.
Giá vào lệnh sau điều chỉnh cao hơn $21 mỗi BTC so với mức giá được ghi nhận, chưa tính phí. Chênh lệch này nhỏ nếu xét một giao dịch riêng lẻ. Tuy nhiên, trong toàn bộ đợt kiểm thử, phần lớn lợi nhuận gộp của chiến lược đến từ một vài cú breakout nhanh. Phát lại các lệnh vào đó trên đúng sổ lệnh làm giảm kết quả gộp 31%; phí taker và tác động thị trường còn làm kết quả giảm thêm.
Chúng tôi cũng phát hiện hai trường hợp báo giá đầu sổ đến sau thời điểm ra quyết định của tín hiệu. Backtest ghép theo dấu thời gian gần nhất có thể âm thầm chọn một cập nhật trong tương lai. Giờ đây, chúng tôi ghép lùi về quá khứ: báo giá phải được ghi nhận trước thời điểm gửi lệnh, và chúng tôi lưu lại độ cũ của báo giá. Nếu báo giá gần nhất có thể sử dụng đã quá cũ, trình mô phỏng đánh dấu lệnh là không thể khớp hoặc áp dụng quy tắc dữ liệu cũ được nêu rõ.
Giá có thể giao dịch cần những gì
Giá đóng cửa của nến hữu ích để tính tín hiệu. Nhưng giá đó không chứng minh một lệnh cụ thể có thể khớp tại đó. Để làm được điều đó, giá phải thuộc đúng công cụ và sàn, có sẵn khi lệnh đến và có đủ khối lượng đối ứng cho quy mô lệnh yêu cầu. Khi dữ liệu không trả lời được những câu hỏi đó, kết quả trung thực là một khoảng giá hoặc không có lệnh khớp, chứ không phải một mức giá chính xác bịa ra.
Chúng tôi vẫn giữ chuỗi tổng hợp để nắm bối cảnh thị trường, nhưng đã đưa chuỗi này ra khỏi quy trình khớp lệnh. Tín hiệu giờ đây tham chiếu lịch sử riêng của hợp đồng được chọn; lệnh được phát lại trên sổ lệnh của hợp đồng đó, còn phí và khối lượng được áp dụng sau khi tính xong giá khớp. Thêm một chút kết nối dữ liệu, và đường vốn kém đẹp hơn nhiều.
Cú breakout đó đã thực sự xảy ra. Chỉ là backtest đã cho nó một thị trường tốt hơn thị trường mà chiến lược chọn giao dịch.
← Tất cả bài viết


