Backtesting8 phút đọc

Cách Backtest Chiến Lược Polymarket Trên Order Book

DepthFeed Research

Nhóm dữ liệu thị trường dự đoán

Hướng dẫn

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, hãy phát lại các sổ lệnh mua/bán đầy đủ đã ghi lại của nó và định cỡ các lệnh điền giả định dựa trên thanh khoản đã quan sát. Kiểm tra dấu thời gian, nhịp độ đã lưu trữ và khoảng trống; kho lưu trữ không thể thiết lập sổ lệnh chính xác giữa các quan sát. Một mức giá cuối cùng hoặc một mức giá trung bình duy nhất cũng bỏ qua chênh lệch giá và chiều sâu mà một lệnh thực tế sẽ gặp phải.

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

Bắt đầu từ các sổ lệnh đầy đủ chiều sâu đã ghi lại ở cả hai phía. DepthFeed nhập các bản cập nhật Polymarket CLOB, nhưng các quan sát đã lưu trữ tuân theo nhịp độ thu thập được tài liệu hóa và có thể có khoảng trống. Kiểm tra các dấu thời gian có sẵn cho thị trường của bạn thay vì giả định rằng mọi sự kiện thượng nguồn đều được lưu giữ.

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

Phát lại các quan sát đã ghi lại theo thứ tự dấu thời gian. Mỗi quan sát mô tả sổ lệnh đã lưu trữ tại thời điểm quan sát đó, bao gồm giá mua tốt nhất, giá bán tốt nhất, chiều sâu và chênh lệch giá. Không suy luận trạng thái sổ lệnh chính xác hoặc các lệnh điền được đảm bảo giữa các quan sát; hãy làm rõ mọi giả định nội suy hoặc duy trì trong backtest.

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 — Xác thực bộ điều hợp dữ liệu trực tiếp

Các phản hồi REST lịch sử và các khung WebSocket trực tiếp sử dụng các hợp đồng được tài liệu hóa riêng biệt. Xác thực một bộ điều hợp cho các mã định danh, dấu thời gian và trường của chúng trước khi đưa cả hai vào logic chiến lược được chia sẻ. Backtest trên các quan sát đã lưu trữ, sau đó kiểm tra bộ điều hợp trực tiếp bằng giao dịch giấy.

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.

Điểm chính

  • 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í

Giải đáp thắc mắc.

Chỉ một phần. API công khai của Polymarket cung cấp các thị trường hiện tại, các giao dịch và một endpoint lịch sử giá, nhưng nó không phục vụ các snapshot order book lịch sử — nên bạn không thể replay lại order book đang chờ mà một chiến lược đã giao dịch. Chính độ sâu lịch sử đó là khoảng trống cụ thể mà dữ liệu order book từ bên thứ ba lấp đầy.

Bắt đầu backtest Polymarket trên độ sâu thật.

Miễn phí để bắt đầu, không cần thẻ. Nâng cấp khi chiến lược của bạn đã sẵn sàng cho cả sổ lệnh.

Bắt đầu miễn phí