Cách Backtest Chiến Lược Polymarket Trên Order Book
Một mức giá cuối được lấy mẫu mỗi giờ một lần không thể cho bạn biết liệu lệnh của bạn có khớp hay không. Đây là cách backtest Polymarket dựa trên đúng order book mà nó thực sự đã giao dịch.
Để backtest một chiến lược Polymarket đúng cách, bạn replay lại order book lịch sử mà chiến lược đó đã thực sự giao dịch — toàn bộ thang bid/ask tại mỗi lần thay đổi — và tính khối lượng khớp lệnh dựa trên lượng thanh khoản thực sự đang chờ ở đó. Backtest trên một mức giá cuối hay một mức mid đơn lẻ sẽ luôn thổi phồng lợi thế của bạn một cách có hệ thống, vì nó che giấu spread và slippage mà một lệnh thật phải trả.
Vì sao backtest theo giá cuối lại dối trá
Hầu hết dữ liệu Polymarket miễn phí có sẵn là giá khớp lệnh cuối (last traded price), thường được lấy mẫu mỗi giờ một lần. Lượng dữ liệu đó chỉ đủ để vẽ một biểu đồ, không hơn. Một bài backtest cần trả lời một câu hỏi khó hơn: nếu lệnh của tôi đang chờ (hoặc đã cắt qua spread) tại thời điểm đó, liệu nó có khớp không, khớp với khối lượng bao nhiêu, và ở mức giá nào?
Để trả lời câu hỏi đó cần đến order book — từng lệnh bid và ask đang chờ kèm khối lượng của nó — chứ không phải một con số đơn lẻ. Một chiến lược được backtest dựa trên mức mid mặc định rằng nó luôn khớp tại mid với slippage bằng không, điều không bao giờ đúng. Trên các thị trường crypto ngắn hạn, nơi spread giãn rộng gần thời điểm settlement, giả định đó có thể biến một chiến lược thua lỗ thành một kẻ thắng cuộc giả tạo.
Bước 1 — Lấy dữ liệu order book full-depth
Hãy bắt đầu từ dữ liệu ghi lại toàn bộ order book ở cả hai phía, được thu thập theo từng lần thay đổi thay vì theo một nhịp đồng hồ cố định. DepthFeed thu dữ liệu Polymarket theo cơ chế event-driven trực tiếp từ CLOB websocket, nên mọi sự kiện book và thay đổi giá đều được ghi lại với toàn bộ thang bid/ask — chứ không phải một mẫu theo giờ hay theo phút bỏ lỡ cả vòng đời của một thị trường năm phút.
Hãy kéo các thị trường bạn muốn qua REST API: tìm chúng bằng GET /v3/{coin}/markets, rồi kéo độ sâu từ /v3/{coin}/markets/{id}/snapshots. Mỗi snapshot mang theo các mảng giá và khối lượng bid/ask cùng các timestamp exchange và receive ở dạng epoch-millis.
Bước 2 — Dựng lại order book tại mỗi thời điểm
Replay các snapshot theo thứ tự timestamp để tái dựng lại order book đúng như nó từng tồn tại ở bất kỳ khoảnh khắc nào. Vì dữ liệu là event-driven, việc tái dựng là chính xác giữa các sự kiện — không có sự phỏng đoán nội suy nào. Đây chính là trạng thái mà chiến lược của bạn phản ứng theo: best bid, best ask, độ sâu phía sau mỗi mức, và spread.
Bước 3 — Mô phỏng khớp lệnh dựa trên độ sâu thật
Giờ hãy mô phỏng việc thực thi một cách trung thực. Một lệnh marketable đi xuyên qua order book: nó khớp ở mức tốt nhất trước, rồi đến mức kế tiếp, cho đến khi cạn khối lượng — nên giá trung bình của nó tệ hơn mức touch mỗi khi nó ngốn hết phần đỉnh thang. Một lệnh đang chờ thì xếp vào hàng đợi và chỉ khớp nếu thị trường giao dịch xuyên qua mức giá của nó với đủ khối lượng phía sau.
Tính khối lượng khớp lệnh dựa trên thang giá đã ghi lại chính là điểm cốt lõi: nó cho bạn slippage và xác suất khớp thực tế, thay vì điều hư cấu rằng bạn luôn giao dịch tại mid.
Bước 4 — Ghép giá tài sản cơ sở
Các thị trường crypto up/down của Polymarket bị chi phối bởi biến động giá spot của tài sản cơ sở. Mỗi snapshot của DepthFeed được ghép với một mức giá tham chiếu Binance tần suất cao theo timestamp epoch-millis, nhờ đó bạn có thể khớp trạng thái order book với biến động spot đã định giá lại hợp đồng — điều thiết yếu cho bất kỳ chiến lược nào giao dịch dựa trên mối quan hệ giữa giá crypto và xác suất ngụ ý của thị trường.
Bước 5 — Lên live với cùng một đoạn code
REST API lịch sử và luồng WebSocket live phát ra các đối tượng snapshot JSON y hệt nhau. Điều đó có nghĩa là cái loader bạn viết để replay lịch sử có thể đọc luồng live mà không cần sửa đổi gì — không phải viết lại giữa nghiên cứu và sản xuất. Backtest, kiểm chứng, rồi chỉ cùng đoạn code đó tới wss://api.depthfeed.com/v3/stream và giao dịch.
Những sai lầm thường gặp
- Dùng dữ liệu giá cuối: che giấu spread và slippage; thổi phồng lợi nhuận backtest.
- Snapshot theo khoảng thời gian cố định: một mẫu theo giờ hay theo phút bỏ lỡ phần lớn vòng đời của một thị trường 5 phút.
- Bỏ qua vị trí trong hàng đợi: mặc định rằng lệnh đang chờ luôn khớp sẽ thổi phồng các chiến lược thụ động.
- Look-ahead bias: chỉ phản ứng với dữ liệu có receive timestamp tại hoặc trước thời điểm ra quyết định của bạn.
- Bỏ qua tài sản cơ sở: lợi thế của crypto up/down thường nằm ở mối quan hệ giữa giá spot và xác suất.
Key takeaways
- 01Backtest dựa trên order book, không phải giá cuối — chính độ sâu mới quyết định việc khớp lệnh.
- 02Dùng dữ liệu event-driven: mẫu theo khoảng cố định bỏ lỡ vòng đời của các thị trường ngắn hạn.
- 03Mô phỏng lệnh marketable đi xuyên order book và lệnh đang chờ xếp hàng trong queue.
- 04Ghép giá crypto cơ sở để nắm bắt mối quan hệ giữa giá spot và xác suất.
- 05Chọn dữ liệu mà lịch sử và luồng live dùng chung một định dạng, để bạn giao dịch đúng đoạn code đã backtest.
Một mức giá cuối được lấy mẫu mỗi giờ một lần không thể cho bạn biết liệu lệnh của bạn có khớp hay không. Đây là cách backtest Polymarket dựa trên đúng order book mà nó thực sự đã giao dịch.
Bắt đầu miễn phí