آموزش Polymarket Bot · فصل 16 از 32
آربیتراژ آماری در Polymarket: جفتهای cross-market (رویدادهای همبسته)، اسپردهای Polymarket در برابر Kalshi، mean reversion، و اینکه چگونه وقتی بازارها در نهایت resolve میشوند، موقعیتهای stat-arb را اندازهگذاری کنیم.
این فصل چه چیزهایی را پوشش میدهد
آربیتراژ آماری در Polymarket از mispricingهای گذرا بین بازارهای همبسته بهره میبرد - همان رویداد در Polymarket در برابر Kalshi، یا بازارهای مرتبط درون خود Polymarket. این edgeها کوچکاند (معمولاً 1 تا 3 سنت) و از نظر عملیاتی شکنندهاند. این فصل صادقانه توضیح میدهد چه چیزی کار میکند، چه چیزی نه، و ریسک اجرای چند-لِگ که بیشتر تلاشها را از بین میبرد.
آربیتراژ آماری cross-market از ناسازگاریهای موقتی قیمتگذاری بین Polymarket و Kalshi، Polymarket و Manifold، یا بین بازارهای همبسته درون Polymarket استفاده میکند. این edgeها کوچکاند (معمولاً 1 تا 3 سنت) و به اجرای سریع در هر دو لِگ نیاز دارند. این فصل یک playbook صادقانه است، شامل پیچیدگیهای عملیاتیای که بیشتر تلاشها را از بین میبرد.
- stat-arb در prediction markets یعنی چه
- نمونههای spread بین Polymarket و Kalshi
- Pairs درون Polymarket (رویدادهای همبسته)
- Mean reversion در برابر trend continuation
- Sizing برای بازارهای resolveشونده (نه دائمی)
- ریسک: divergence پس از resolution
- کد: pairs monitor و threshold-trigger
stat-arb در prediction markets یعنی چه
آربیتراژ آماری در prediction markets یعنی معامله روی spread بین دو بازاری که باید بهصورت سازگار قیمتگذاری شوند. در Polymarket سه شکل رایج وجود دارد.
- Cross-venue: همان رویداد در Polymarket و Kalshi (یا Manifold، PredictIt). قیمتها باید به هم نزدیک شوند؛ در عمل 2 تا 5 سنت drift میکنند.
- Same-event-pair: parent در برابر مجموع legها در بازارهای چند-خروجی NegRisk. invariant مجموع به 1 به شما اجازه میدهد وقتی جمع legها کمتر از 1.0 است arbitrate کنید.
- Correlated-event-pair: دو بازار درباره outcomes مرتبط (مثلاً «Trump president on Jan 1» در برابر «Trump president on Mar 1»). باید با اختلافی حدود 2 تا 3 سنت نسبت به هم قیمتگذاری شوند.
این edgeها کوچکاند. پیچیدگی عملیاتی واقعی است. بیشتر تلاشها در مرحله اجرا شکست میخورند، نه در تئوری.
نمونههای spread بین Polymarket و Kalshi
بر اساس مشاهدات در 2025-26، Polymarket و Kalshi همان رویدادهای مهم آمریکا را لیست میکنند، اما بهطور پایدار با اختلاف 1 تا 4 سنت قیمت میخورند. این شکاف به دلایل ساختاری وجود دارد که باید در هر arb مدل شوند.
عوامل ساختاری:
- Fee asymmetry: Kalshi روی trades برنده 4 تا 7٪ کارمزد میگیرد (بسته به بازار متغیر است)؛ Polymarket هیچ taker fee ندارد. محاسبات arb باید اثر bite Kalshi را خالصسازی کنند.
- Settlement risk premium: وقتی resolution یک بازار مبهم است، ممکن است UMA یک venue با داوران venue دیگر متفاوت resolve شود. بازار این ریسک را قیمتگذاری میکند.
- Trader population: Polymarket بیشتر جوان و crypto-native است؛ Kalshi بیشتر حرفهای / hedge. آنها بهصورت سیستماتیک با هم درباره همان رویدادها اختلافنظر دارند.
این arb وقتی کار میکند که gap از premium ساختاری بهعلاوه feeها بیشتر باشد. یک gap پنجسنتی در بازاری که structural premium آن 1c و feeهای ترکیبی 1c است، یک edge واقعی 3c محسوب میشود.
Pairs درون Polymarket (رویدادهای همبسته)
درون Polymarket، pairs مربوط به رویدادهای همبسته معمولاً راحتتر از cross-venue قابل arb هستند. ساختار fee یکسان است، wallet یکی است، و اجرای atomic امکانپذیر است.
نمونههایی که بهطور مداوم ناسازگار قیمت میخورند:
- Trump president on date A در برابر Trump president on date B (وقتی B کمتر از 90 روز بعد از A باشد).
- Will Bitcoin hit $100k by July 31 در برابر $100k by August 31.
- لگهای Yes در برابر No روی همان binary market (مجموع باید = 1.0 باشد؛ گاهی در order bookهای کمعمق تا 1.04 هم drift میکند).
arb مربوط به Yes+No=1 تمیزترین حالت است: هر دو leg را از همان market بخوانید، اگر مجموع زیر 0.97 آمد روی هر دو FOK بزنید (با درنظرگرفتن spread tax). سرمایه موردنیاز در هر leg تقریباً برابر است؛ اجرای atomic زمانی رخ میدهد که هر دو fill در همان response برگردند.
Mean reversion در برابر trend continuation
دو regime برای stat-arb وجود دارد. Mean reversion: pair از هم فاصله گرفته چون یک دلیل نویزی وجود داشته؛ شما روی convergence شرط میبندید. Trend continuation: pair بهخاطر ورود اطلاعات جدید شروع به diverge کردن کرده؛ شما روی divergence بیشتر شرط میبندید.
تشخیص این دو سختترین بخش است. Heuristic: اگر divergence با volume قابلمشاهده رخ داده باشد (یک whale یک leg را از book عبور داده)، آن خبر است - فقط اگر model دارید آن را fade کنید. اگر بهآرامی و با volume پایین drift کرده باشد، نویز است - با اطمینان روی reversion trade کنید.
برای سازندگان تازه: فقط mean reversion معامله کنید، آن هم روی pairهایی که divergence آنها کمتر از 1 standard deviation از drift تاریخی است. Trend continuation به مدلی نیاز دارد که خبر را تشخیص دهد؛ بدون آن، دارید خلاف flow آگاهانه معامله میکنید.
Sizing برای بازارهای resolveشونده (نه perpetual)
Prediction markets resolve میشوند. جفتهای crypto اینطور نیستند. این موضوع math را عوض میکند.
یک موقعیت pair-arb در Polymarket برنامه پرداخت ثابت دارد: وقتی هر دو بازار resolve شدند، اختلاف بین spread پیشبینیشده و spread واقعی قفل میشود. هیچ rollingای وجود ندارد، هیچ holding بینهایتی هم نیست.
پیامد sizing: حداکثر مقداری که میتوانید نگه دارید با time-to-resolution محدود میشود، چون سرمایه تا آن زمان قفل است. یک pair که در 6 ماه resolve میشود میتواند به شما 3c به ازای هر share سود بدهد، اما اگر هر دو بازار fully sized باشند، در این فاصله نمیتوانید سرمایه بیشتری به کار بگیرید.
چارچوب درست این است: stat-arb در Polymarket مجموعهای از trades با زمان محدود است، نه یک strategy پیوسته. PnL به ازای هر واحد سرمایه قفلشده در روز را مقایسه کنید، نه gross PnL را.
ریسک: divergence پس از resolution
بدترین outcome در stat-arb این است که پیشبینیِ convergence شما اشتباه از آب دربیاید چون premise اصلی غلط بوده است. مثالها:
- شما «Trump president on Apr 1» را short کردهاید با این انتظار که به «Trump president on Mar 1» converge کند - اما market مربوط به date 1 روی YES resolve میشود و market مربوط به date 2 روی NO، بهدلیل یک impeachment در ماه مارس. thesis شما که «spread باید تخت بماند» اشتباه بوده است.
- شما روی همان NBA Finals winner بین Polymarket و Kalshi arb کردهاید. Polymarket به تیمی resolve میشود که سری رسمی را برده؛ Kalshi بر اساس تعریف کمی متفاوتی resolve میشود که tie-breakerهای overtime را متفاوت لحاظ میکند. هر دو طبق terms خودشان YES resolve میشوند، اما در جهتهای مخالف.
شرایط resolution هر market را با دقت بخوانید. Cross-venue arb فقط یک mismatch در resolution فاصله دارد تا هر دو leg کاملاً از دست بروند.
کد: pairs monitor و threshold-trigger
مرجع: دو token همبسته را monitor کنید و وقتی spread از threshold عبور کرد arb را اجرا کنید.
def pairs_monitor(token_a, token_b, threshold_cents=3, size=10):
"""Buy A and Sell B when (1 - ask_A) + bid_B > 1 + threshold."""
while True:
book_a = fetch_book(token_a)
book_b = fetch_book(token_b)
if not (book_a.best_ask and book_b.best_bid):
time.sleep(2); continue
# implied: cost of buying A at ask + value of selling B at bid
edge = (1 - book_a.best_ask) + book_b.best_bid - 1
if edge > threshold_cents / 100:
print(f"ARB edge={edge:.3f}; firing")
r_a = fok_buy(token_a, price=book_a.best_ask, size=size)
if r_a.status != "matched": continue
r_b = fok_sell(token_b, price=book_b.best_bid, size=size)
if r_b.status != "matched":
# leg A filled, B failed -- unhedged, exit A
fok_sell(token_a, price=book_a.best_bid, size=size)
time.sleep(3)
cleanup-on-partial-fill حیاتی است. بدون آن، اجرای ناقص bot را بهصورت directional در معرض ریسک قرار میدهد، که دقیقاً خلاف هدف stat-arb است.





