[TOC]

Polymarket là một thị trường dự đoán, nơi mỗi câu hỏi chỉ có hai kết quả—có hoặc không, tăng hoặc giảm, thắng hoặc thua. Lấy hợp đồng thay đổi giá BTC trong 15 phút làm ví dụ, mỗi vòng có…Up Và DownHai hợp đồng, đặt cược vào việc giá đóng cửa của BTC sẽ cao hơn hay thấp hơn giá mở cửa trong vòng 15 phút. Nếu đặt cược đúng, người chơi sẽ nhận được 1 đô la, nếu đặt cược sai thì không nhận được gì.

Thị trường này có một đặc điểm rất đặc biệt:Xác suất của cả hai kết quả cộng lại là 100%, vì vậy về mặt lý thuyết, giá của Up cộng với giá của Down phải bằng chính xác 1.
[ Giá_tăng + Giá_giảm = 1 (Giá_lý_lý) ]
Thuộc tính này không tồn tại trong các thị trường hợp đồng thông thường, mang lại cho chúng ta một điểm tựa chắc chắn tự nhiên.
Giao dịch định lượng luôn xoay quanh một điều: tìm kiếm những cơ hội tương đối chắc chắn trong một thị trường đầy rủi ro.
Cấu trúc nhị phân của Polymarket cung cấp một điểm tựa như vậy:Bất kể BTC tăng hay giảm trong 15 phút này, cả tăng lẫn giảm đều sẽ mang lại lợi nhuận $1.Sử dụng điểm neo này, chúng ta không cần phải xác định hướng; chúng ta chỉ cần tìm một cơ hội mà tổng chi phí mua Up và Down nhỏ hơn 1, và lợi nhuận được đảm bảo.
Vấn đề là, trong hầu hết các trường hợp, tổng của hai mức giá gần bằng 1, khiến việc tìm kiếm cơ hội chênh lệch giá trực tiếp trở nên khó khăn. Vậy chính xác thì cơ hội nằm ở đâu?
Cơ hội đến từSự mất cân bằng giá cả do phản ứng thái quá của thị trường。
Hãy tưởng tượng kịch bản này: Trong vòng 15 phút, BTC đột ngột giảm mạnh, gây ra sự hoảng loạn trên thị trường và một đợt bán tháo ồ ạt các hợp đồng Up, khiến giá giảm từ 0,5 xuống 0,35. Về lý thuyết, dù Up giảm bao nhiêu, Down cũng phải tăng lên cùng một lượng, tổng của chúng luôn bằng 1. Tuy nhiên, thị trường phản ứng với tốc độ khác nhau. Up đã bị đẩy xuống nhanh chóng, trong khi Down vẫn đang di chuyển từ 0,5 lên 0,65 và có thể chưa bắt kịp hoàn toàn.
Tại thời điểm chuyển giao quan trọng này, tổng của Up và Down có thể chỉ là 0,93, dẫn đến sự mất cân bằng giá tạm thời.
[ \text{Up}(0.35) + \text{Down}(0.58) = 0.93 < 1 ]
Đây là cửa sổ chênh lệch giá: một sự kết hợp có giá mua là 0,93 đô la và chắc chắn sẽ mang lại lợi nhuận 1 đô la, với lợi nhuận được xác định tại thời điểm mua.
Ý tưởng ban đầu đến từ người dùng Twitter @the_smart_ape, và nó rất ngắn gọn, chỉ với bốn tham số:
| tham số | nghĩa |
|---|---|
SHARES |
Mua cổ phần theo từng chân |
SUM_TARGET |
Giá mục tiêu cho cả hai nhánh gộp lại (giới hạn trên) |
MOVE_PCT |
Mức độ sụt giảm |
WINDOW_MIN |
Thời gian cửa sổ giám sát |
Quy trình thực hiện như sau: trong khung thời gian giám sát ở đầu mỗi vòng, giá được theo dõi liên tục. Khi một hướng giá nhất định giảm mạnh vượt quá ngưỡng kích hoạt, hướng giá đó sẽ được mua vào ở lượt đầu tiên. Sau đó, chờ giá theo hướng ngược lại giảm trở lại. Khi tổng giá của hai lượt thấp hơn giá mục tiêu, lượt thứ hai sẽ được mua vào và giao dịch chênh lệch giá được đóng lại. Việc thanh toán và hoàn trả được thực hiện trong vòng 15 phút.
Cách tiếp cận này gọn gàng và đơn giản, nhưng nếu áp dụng trực tiếp vào giao dịch thực tế, nó sẽ gặp phải một số vấn đề rõ ràng.
Ý tưởng ban đầu làChờ đợi thụ độngMua vào ở đợt giá đầu tiên, sau đó theo dõi khi giá giảm theo hướng ngược lại. Chỉ mua vào ở đợt giá thứ hai khi tổng giá của cả hai đợt giá thấp hơn giá mục tiêu.
Phương pháp cải tiến của chúng tôi khác nhau.Vào thời điểm giảm mạnh, rất có thể các chỉ báo Tăng và Giảm sẽ di chuyển với tốc độ khác nhau. Chúng ta sẽ hành động đồng thời trong giai đoạn không đồng bộ này:
SUM_TARGET - 第一腿价格Bằng cách áp dụng lệnh giới hạn giá ngược, chúng ta có thể khóa giá trước khi xu hướng ngược lại đạt đỉnh.Khi cả hai lệnh được gửi đồng thời, cơ hội chênh lệch giá được nắm bắt ngay tại thời điểm lệnh được đặt. Thay vì thụ động chờ thị trường đáp ứng các điều kiện, chúng ta chủ động để thị trường đến với mình.
Việc triển khai mã nguồn cốt lõi như sau:
function executeBothLegs(symbols, dumpSide, dumpAsk) {
var leg1Symbol = (dumpSide === "Up") ? symbols.up : symbols.down
var leg2Symbol = (dumpSide === "Up") ? symbols.down : symbols.up
leg1Price = _N(dumpAsk + SLIPPAGE, 4)
// 第二腿限价:SUM_TARGET - leg1Price,确保两腿合计 <= SUM_TARGET 即有利润
leg2Price = _N(SUM_TARGET - leg1Price, 4)
// 并发提交两个限价单
var goLeg1 = exchange.Go("CreateOrder", leg1Symbol, "buy", leg1Price, SHARES)
var goLeg2 = exchange.Go("CreateOrder", leg2Symbol, "buy", leg2Price, SHARES)
var id1 = goLeg1.wait()
var id2 = goLeg2.wait()
leg1OrderId = id1
leg2OrderId = id2
state = STATE.BOTH_PENDING
}
Ý tưởng ban đầu là giai đoạn thứ hai sẽ được hoàn thành nhanh chóng, nhưng trên thực tế, thường xảy ra trường hợp sau khi giá của giai đoạn tăng bị đẩy xuống, giá của giai đoạn giảm không giảm trở lại, tâm lý thị trường vẫn bi quan, và giá kết hợp của cả hai giai đoạn không bao giờ đạt được mục tiêu.
Trong giai đoạn này, nếu bạn giữ vị thế mua một chiều, giá có thể tiếp tục giảm cho đến khi ổn định ở mức 0.Cần phải đặt lệnh cắt lỗ.
Chúng tôi đã thêm hai tham số:
FLOOR_PRICE(Giá tối thiểu)Đặt mức giá thấp tuyệt đối (ví dụ: 0,05). Nếu giá nắm giữ giảm xuống mức này, điều đó cho thấy thị trường đã xác định rằng hướng đi này có khả năng thua lỗ, vì vậy hãy chặn lỗ và thoát khỏi thị trường.EARLY_TAKE_PROFIT(Tỷ lệ chốt lời sơ bộ)Sau khi mua phần đầu tiên của hợp đồng, nếu giá tăng đến mục tiêu lợi nhuận, hãy bán trực tiếp để thu lợi nhuận mà không cần chờ phần thứ hai.function handleLeg1OnlyRisk(symbols, upBid, downBid, isLastMin) {
var holdBid = (leg1Side === "Up") ? upBid : downBid
var profitLine = leg1EntryAsk * (1 + EARLY_TAKE_PROFIT)
var stopLine = leg1EntryAsk * (1 - LAST_MIN_STOP_LOSS)
var needClose = false
var reason = ""
if (holdBid <= FLOOR_PRICE) {
needClose = true; reason = "止损(保底)"
} else if (!isLastMin && holdBid >= profitLine) {
needClose = true; reason = "前期止盈"
} else if (isLastMin && holdBid <= stopLine) {
needClose = true; reason = "末段止损"
}
if (needClose) {
// 先撤对侧挂单,再平仓
cancelAndConfirmUntilClear(leg2OrderId)
closePosition(holdSymbol, holdBid, reason)
}
}
Một bên đảm bảo giới hạn dưới, và bên kia cố định giới hạn trên, do đó đặt ra ranh giới cho lập trường một chiều ban đầu không giới hạn.
Cách tiếp cận ban đầu không phân biệt chiều thời gian, nhưng mọi chuyện hoàn toàn khác khi giai đoạn thanh toán đang đến gần: việc thanh toán sắp diễn ra, và không còn thời gian để chờ đợi ngay cả khi giá chưa giảm. Hơn nữa, càng gần thời điểm thanh toán, biến động giá càng mạnh.
Chúng tôi đã thêmLAST_MIN_S(Ngưỡng thời gian cuối cùng có thể được điều chỉnh.) Logic chuyển mạch sau khi vào giai đoạn cuối:
LAST_MIN_STOP_LOSS(Tỷ lệ cắt lỗ vào cuối phiên giao dịch), thoát lệnh ở giá thị trường nếu giá vị thế giảm xuống dưới mức cắt lỗ.var isLastMin = (remaining <= LAST_MIN_S)
// BOTH_PENDING 状态下
if (isLastMin) {
Log("⏰ 最后1分钟,撤销未成交挂单")
cancelAllPending("最后1分钟")
}
Ở giai đoạn đầu, hãy chờ giá phục hồi; ở giai đoạn sau, hãy tránh để giá giảm xuống bằng không. Hai cách suy luận này không mâu thuẫn với nhau.
Polymarket là một thị trường trên chuỗi, và việc trả về trạng thái lệnh và thông tin vị thế đôi khi có thể chậm; có thể mất vài giây để nhận được xác nhận sau khi đặt lệnh. Do đó, chiến lược này tích hợp cơ chế phát hiện lỗi hết thời gian chờ lệnh và cơ chế thử lại:
function placeOrderAndConfirm(symbol, side, price, amount) {
var orderId = exchange.CreateOrder(symbol, side, orderPrice, amount)
var deadline = Date.now() + ORDER_TIMEOUT_S * 1000
while (Date.now() < deadline) {
var order = exchange.GetOrder(orderId)
if (order && order.Status === 1) {
return { orderId: orderId, avgPrice: order.AvgPrice } // 成交
}
if (order && (order.Status === 2 || order.Status === 4)) {
return { orderId: orderId, avgPrice: null } // 已撤销
}
Sleep(1000)
}
// 超时后执行撤单
exchange.CancelOrder(orderId)
// ... 继续轮询确认最终状态
}
Đồng thời bổ sung thêmSLIPPAGE(Tham số trượt giá) làm tăng xác suất lệnh mua được thực hiện. Giá thực tế khi mua bằng giá mục tiêu cộng với độ trượt giá.
Polymarket có một cơ chế độc đáo: số tiền đã thanh toán không tự động được hoàn trả vào số dư sau khi hợp đồng được hoàn tất.Chỉ có thể giải ngân tiền bằng cách chủ động gọi API Redeem.Nếu bỏ qua bước này, số tiền trong tài khoản sẽ bị khóa ở các vị thế đã được thanh toán.
Chiến lược này tự động khởi tạo quy trình rút tiền theo từng đợt trong mỗi lần chuyển đổi để đảm bảo hoàn trả tiền kịp thời.
function doRedeem() {
var positions = exchange.GetPositions()
for (var i = 0; i < positions.length; i++) {
var pos = positions[i]
if (pos.Info && pos.Info.redeemable) {
var result = exchange.IO("redeem", pos.Symbol, true)
Log("Redeem 结果:", result)
}
}
}
// 每轮结算前(840s 后)自动触发
if (!redeemDone && elapsed >= 840) {
doRedeem()
redeemDone = true
}

Chiến lược này bao gồm một bảng điều khiển thời gian thực hiển thị số dư tài khoản, trạng thái hiện tại, theo dõi giá và lãi/lỗ vị thế dưới dạng bảng, cho phép bạn dễ dàng theo dõi tiến trình của chiến lược trong quá trình giao dịch thực tế. Bảng điều khiển chứa bốn bảng:

Ví dụ giao dịch thực tế:
Một vòng giao dịch mới bắt đầu và chiến lược đang được theo dõi. Hợp đồng giảm giá (Down contract) giảm 18,60%, từ 0,43 xuống 0,35, kích hoạt tín hiệu. Đồng thời, hai lệnh giới hạn được đặt: lệnh giảm giá đầu tiên ở mức 0,37 và lệnh mua (Up order) thứ hai ở mức 0,60, tổng cộng là 0,97, thấp hơn giá mục tiêu. Cả hai lệnh được gửi đồng thời và sau đó được khớp. Giá thực hiện trung bình: lệnh đầu tiên 0,34, lệnh thứ hai 0,60, tổng chi phí thực tế.0.94Lợi nhuận cao hơn dự kiến, nhưng vẫn thấp hơn ngưỡng đã đặt trước là 0,97.
Chiến lược này về cơ bản là hợp lý và có thể mang lại lợi nhuận tốt khi điều kiện thị trường thuận lợi. Tuy nhiên, có ba điểm hạn chế cần được thừa nhận một cách thẳng thắn:
Nhược điểm 1: Khó tìm được cơ hội mở vị thế khi thị trường ổn định.Các cơ hội chênh lệch giá dựa trên phản ứng thái quá của thị trường; khi thị trường ổn định, xác suất giảm mạnh rất thấp, và chiến lược này chỉ có thể hoạt động độc lập. Mở rộng phạm vi kích hoạt có thể làm tăng cơ hội, nhưng chất lượng điểm vào lệnh sẽ giảm.
Nhược điểm 2: Rủi ro khi chỉ nắm giữ một vị thế duy nhất rất khó tránh khỏi hoàn toàn.Sau khi lệnh mua/bán được khớp, nếu giá tiếp tục giảm thay vì phục hồi, lệnh mua/bán thứ hai sẽ không bao giờ được khớp và sẽ tiếp tục giảm cho đến khi chạm mức cắt lỗ và bị kích hoạt. Việc thiết lập ngưỡng cắt lỗ là một vấn đề nan giải: quá chặt thì dễ bị kích hoạt bởi những biến động bình thường; quá lỏng thì tổn thất sẽ quá lớn nếu giá thực sự đi sai hướng.
Sai sót 3: Ngưỡng giá mục tiêu kết hợp của cả hai nhánh là một sự đánh đổi.Đặt ngưỡng quá cao sẽ làm tăng cơ hội nhưng lợi nhuận thu được mỗi lần sẽ nhỏ hơn; đặt ngưỡng quá thấp sẽ làm tăng lợi nhuận mỗi lần nhưng có thể dẫn đến việc phải chờ đợi lâu để có được cơ hội đáng kể. Đây là sự lựa chọn chiến lược: tích lũy nhỏ lẻ thường xuyên, hoặc giữ ngưỡng thấp và chờ đợi cơ hội lớn không thường xuyên.
Chiến lược này là một khuôn khổ, và có ba hướng đáng để nghiên cứu sâu hơn:
Phương án 1: Giới thiệu dữ liệu giá BTC từ bên ngoài.Chiến lược này phù hợp hơn với thị trường đi ngang; trong thị trường có xu hướng rõ ràng, lệnh cắt lỗ sẽ được kích hoạt thường xuyên. Nó có thể được tích hợp với giá BTC thời gian thực từ các sàn giao dịch, cho phép tạm dừng mở vị thế khi một xu hướng rõ ràng xuất hiện, do đó giảm thiểu các khoản lỗ không cần thiết.
Phương án 2: Mô hình hóa toán học.Về cơ bản, “Lên” và “Xuống” là hai lựa chọn nhị phân. Có nhiều mô hình định giá hoàn thiện trong lĩnh vực quyền chọn, về mặt lý thuyết có thể mô phỏng xác suất của các cửa sổ chênh lệch giá và điểm vào lệnh tối ưu một cách chính xác hơn, thay vì dựa vào các ngưỡng cố định để đưa ra các quyết định tùy ý.
Phương án 3: Điều chỉnh tham số động.Hiện tại, tất cả các tham số đều cố định, nhưng biến động thị trường lại thay đổi. Việc sử dụng cùng một bộ tham số trong cả giai đoạn biến động cao và thấp rõ ràng là không phù hợp. Việc tự động điều chỉnh các tham số dựa trên điều kiện thị trường thực tế sẽ giúp tăng cường đáng kể khả năng thích ứng của chiến lược.
Nguyên tắc cốt lõi của chiến lược này—tìm kiếm những thời điểm giá cả mất cân bằng trên thị trường nhị phân—không chỉ giới hạn ở các hợp đồng BTC của Polymarket. Bất kỳ thị trường nào có cấu trúc nhị phân và sự chênh lệch giá ngắn hạn đều có thể được sử dụng để khám phá các cơ hội bằng cách tiếp cận tương tự. Chúng tôi chỉ đơn giản là đã chuyển đổi ý tưởng này thành một khuôn khổ hoạt động; phần thực sự thú vị vẫn còn ở phía trước.
Mã nguồn chiến lược: Robot giao dịch chênh lệch giá hai chiều Polymarket BTC 15 phút (Phiên bản phòng ngừa rủi ro hai chiều)