آموزش ربات پلی‌مارکت · فصل 13 از 32

بازارسازی در پلی‌مارکت: چطور پیشنهاد خرید (bid) و پیشنهاد فروش (ask) را مظنه بدهید، اسپرد را جذب کنید، بازپرداخت‌های سازنده (20-25% از کارمزدهای گیرنده) به دست بیاورید، ریاضیات ریسک موجودی را بفهمید، و اینکه MM چه زمانی روی بازارهای پیش‌بینی جواب می‌دهد.

این فصل چه چیزهایی را پوشش می‌دهد

بازارسازی در پلی‌مارکت یعنی اینکه هر دو سمت دفتر سفارشات بازار را به‌طور مداوم مظنه بدهید و از هر رفت‌وبرگشت، اسپرد را به دست بیاورید. این استراتژی در مالی سنتی کاملاً شناخته‌شده است؛ تفاوت‌های مخصوص پلی‌مارکت شامل برنامهٔ بازپرداخت سازنده و پروفایل انتخاب نامساعد در بازارهای پیش‌بینی است که از پلتفرم‌های CFD بالاتر است. این فصل، ریاضیات واقعی و بی‌تعارف ماجراست.

  • بازارسازی به زبان ساده
  • مزیت اسپرد + بازپرداخت
  • ریسک موجودی و کج‌کردن مظنه
  • MM چه زمانی روی پلی‌مارکت جواب می‌دهد (و چه زمانی نه)
  • اسکلت کد: هر دو سمت را با +/- N سنت مظنه بدهید
  • تنظیم مظنه‌ها بر اساس جریان خبری
  • خاموش کردن ربات وقتی انتخاب نامساعد جهش می‌کند

بازارسازی به زبان ساده

یک بازارساز به‌طور پیوسته هر دو قیمت خرید (bid) و فروش (ask) را مظنه می‌دهد، به‌گونه‌ای که این قیمت‌ها نسبت به قیمت میانی با یک اسپرد ثابت فاصله داشته باشند. وقتی کسی پیشنهاد خرید را می‌زند، سازنده ارزان می‌خرد؛ وقتی کسی پیشنهاد فروش را می‌زند، سازنده گران می‌فروشد؛ و اختلاف پیشنهاد خرید و فروش، درآمد سازنده در هر رفت‌وبرگشت است.

این استراتژی بر پایهٔ جریان سفارشات است، نه جهت‌گیری قیمتی. سازنده هیچ نظری درباره اینکه YES برنده می‌شود یا نه نمی‌دهد؛ فرضش این است که جریان ادامه پیدا می‌کند و اسپرد همچنان پرداخت می‌شود.

ریسک اصلی، انتخاب نامساعد (adverse selection) است: کسانی که پیشنهاد خرید شما را می‌زنند ممکن است اطلاعاتی داشته باشند که شما ندارید. در طول زمان، سود MM بستگی دارد به اینکه اسپرد آن‌قدر باز باشد که لغزش قیمت (slippage) ناشی از معامله‌گران مطلع را جبران کند.

مزیت اسپرد + بازپرداخت

دو جریان درآمدی برای یک سازندهٔ پلی‌مارکت.

جذب اسپرد: پیشنهاد خرید را روی 0.45 و پیشنهاد فروش را روی 0.47 اطراف قیمت میانی برابر 0.46 مظنه بدهید. هر پرشدن روی پیشنهاد خرید که بعداً بتوانید روی پیشنهاد فروش از آن خارج شوید، 2 سنت سود دارد. مزیت خالص به عدم‌تعادل پرشدن‌ها و حرکت قیمت بستگی دارد.

بازپرداخت سازنده: برنامهٔ پاداش نقدینگی پلی‌مارکت یک بازپرداخت به‌ازای هر سهم روی پرشدن‌های سازنده در بازارهای واجد شرایط پرداخت می‌کند. اعداد تغییر می‌کنند؛ برای مقدار فعلی، صفحهٔ رسمی پاداش را بررسی کنید. این بازپرداخت به‌صورت دوره‌ای در pUSD پرداخت می‌شود و جدا از خود معامله است.

برای بیشتر بازارها، جذب اسپرد جریان درآمدی بزرگ‌تر است. بازپرداخت زمانی معنی‌دار می‌شود که بتوانید در بازارها با اسپرد باز مظنه بدهید (سال انتخابات، پلی‌آف‌های بزرگ ورزشی)؛ جایی که پلی‌مارکت برای جذب نقدینگی، بازپرداخت را افزایش می‌دهد.

ریسک موجودی و کج‌کردن مظنه

یک MM که به‌طور مکرر روی پیشنهاد خرید زده می‌شود، موقعیت لانگ جمع می‌کند. ریسک این است که قیمت میانی در حالی پایین بیاید که موجودی شما لانگ است؛ در این صورت سازنده حتی بعد از درآمد اسپرد هم روی موقعیت ضرر می‌کند.

راه‌های دفاع: کج‌کردن مظنه (وقتی موجودی لانگ است پیشنهاد خرید را پایین‌تر ببرید و وقتی شورت هستید پیشنهاد فروش را بالاتر ببرید تا پرشدن یک‌طرفه کمتر شود)؛ سقف موجودی (روی سمتی که از قبل بیش از حد لانگ هستید، مظنه‌دهی را متوقف کنید)؛ توازن‌سازی فعال (گاهی از اسپرد عبور کنید تا وقتی موجودی به سقف رسیده، موقعیت را کاهش دهید).

ریاضیاتش این است: اگر 60% از پرشدن‌های پیشنهاد خرید قبل از اینکه قیمت 2 سنت علیه شما حرکت کند، اصلاً خارج نشوند، همان پرشدن‌ها به‌تنهایی استراتژی را زیان‌ده می‌کنند. وقتی عدم‌تعادل پرشدن‌ها بیشتر از 65/35 شد، مظنه را تهاجمی کج کنید.

MM چه زمانی روی پلی‌مارکت جواب می‌دهد (و چه زمانی نه)

MM زمانی روی پلی‌مارکت جواب می‌دهد که سه شرط برقرار باشد.

  • دفتر سفارشات پرنقدینگی: آن‌قدر رقابت مظنه وجود داشته باشد که اسپرد شما رقابتی باشد اما صفر نباشد. بازارهای انتخابات 2024، بازی‌های بزرگ NFL/NBA، و BTC up/down 5m همگی مناسب‌اند.
  • جریان دوطرفه: هم خریدار و هم فروشنده فعال باشند. بازارهای یک‌طرفه (تقریباً حل‌شده در 0.95+) چیزی برای جذب کردن به سازنده نمی‌دهند.
  • حرکت‌های قیمتی محدود: جذب اسپرد با جهش‌های 5 سنتی خورده نشود. بازارهای باثبات با قیمت میانی در بازهٔ 0.40-0.60 بهترین گزینه‌اند.

MM در این حالت‌ها شکست می‌خورد: بازارهای خبرمحور که قیمت میانی سریع‌تر از توان مظنهٔ مجدد شما حرکت می‌کند؛ دفترهای سفارشات کم‌نقدینگی که شما تنها مظنهٔ موجود هستید و معاملهٔ بعدی 5 سطح جلو می‌رود؛ بازارهایی که زمان حل‌وفصل آن‌ها نزدیک است و یک سمت در حال همگرا شدن به 0 یا 1 است.

اسکلت کد: هر دو سمت را با +/- N سنت مظنه بدهید

شبه‌کد برای ساده‌ترین سازندهٔ قابل‌اجرا.

SPREAD_CENTS = 2
INVENTORY_CAP_SHARES = 50

def make_loop(token_id):
    while True:
        book = fetch_book(token_id)
        mid = (book.best_bid + book.best_ask) / 2
        inv = chain_balance(token_id)

        # Skew: pull the side we are too long on
        bid_px = mid - SPREAD_CENTS/200 - (0.005 if inv > INVENTORY_CAP_SHARES * 0.6 else 0)
        ask_px = mid + SPREAD_CENTS/200 + (0.005 if inv < -INVENTORY_CAP_SHARES * 0.6 else 0)

        cancel_my_existing_quotes(token_id)
        if inv < INVENTORY_CAP_SHARES:
            place_gtc(token_id, side="BUY", price=bid_px, size=5)
        if inv > -INVENTORY_CAP_SHARES:
            place_gtc(token_id, side="SELL", price=ask_px, size=min(5, inv))
        time.sleep(2)

در نسخهٔ تولید، سازنده‌ها این موارد را هم اضافه می‌کنند: ردیابی جداگانه برای هر سمت، ترتیب لغو-پیش‌از-ثبت (cancel-before-place)، جیتر (jitter) در بازهٔ مظنهٔ مجدد برای اینکه قابل‌پیش‌بینی نباشند، و کلید توقف اضطراری برای انتخاب نامساعد (بخش بعد).

تنظیم مظنه‌ها بر اساس جریان خبری

وقتی یک رویداد خبری رخ می‌دهد، ارزش منصفانه قبل از مظنه‌های شما جابه‌جا می‌شود. یک MM که در زمان جریان خبری مظنه‌ها را جمع نکند، شکار می‌شود.

نشانه‌ها: نرخ لغو برای پرشدن‌های ورودی که ظرف 30 ثانیه بیش از حدود 3 برابر خط پایه می‌شود، یا بررسی متقابل گسترده‌تر با جریان رویداد (Twitter/Discord پلی‌مارکت، فید تیتر خبری Bloomberg). وقتی این وضعیت تشخیص داده شد، سازنده همه مظنه‌ها را برای 60-120 ثانیه برمی‌دارد، اجازه می‌دهد قیمت میانی جدید تثبیت شود، سپس دوباره اطراف مرکز جدید مظنه می‌دهد.

ساده‌ترین پیاده‌سازی، جریان قیمت آخرین معاملهٔ توکن را زیر نظر می‌گیرد. جهشی بیش از 2 انحراف معیار از میانگین پنجرهٔ متحرک یک توقف فعال می‌کند. ربات وقتی دوباره وارد می‌شود که قیمت برای 30 ثانیه یا بیشتر پایدار مانده باشد.

خاموش کردن ربات وقتی انتخاب نامساعد جهش می‌کند

خروج سخت. اگر PnL پرشدنِ ربات در 50 پرشدن اخیر به‌طور شدید منفی شود، یک چیزی اشتباه است: یا بازار الآن خبرمحور شده و نباید سازنده باشید، یا اسپرد شما برای سطح فعلی انتخاب نامساعد خیلی تنگ است.

شرایط توقف اضطراری که باید پیاده‌سازی شوند:

  • 5 پرشدن پیشنهاد خرید پیاپی بدون هیچ پرشدن پیشنهاد فروش، و قیمت میانی از اولین پرشدن تاکنون بیش از 1c پایین آمده باشد.
  • PnL محقق‌شده روی 25 پرشدن رفت‌وبرگشت اخیر کمتر از -25% مقدار مورد انتظار باشد.
  • قطع شدن WebSocket یا دفتر سفارشات کهنه (stale) تشخیص داده شود.
  • موجودی در هر سمت بیش از 5 دقیقه روی سقف باقی بماند.

وقتی فعال شد، همه‌چیز را لغو کنید، موجودی را با سفارش بازار صفر کنید، و برای 15+ دقیقه متوقف شوید. بازارسازی که کلید توقف اضطراری ندارد، در دوره‌های پرنوسان تا وقتی معامله‌گر به‌صورت دستی متوجه شود، پول از دست می‌دهد - و این همیشه بیشتر از چیزی طول می‌کشد که فکر می‌کنید.

سؤالات متداول

آیا یک ربات خرد واقعاً می‌تواند با بازارسازی در پلی‌مارکت پول دربیاورد؟
گاهی اوقات، در بعضی بازارهای منتخب. بازپرداخت سازنده (20-25% از کارمزدهای گیرنده) به‌علاوه اسپرد یک تا سه سنتی در هر رفت‌وبرگشت می‌تواند به بازده واقعی تبدیل شود. اما در پلی‌مارکت، جریان خبری می‌تواند در چند ثانیه یک بازار را 20+ سنت جابه‌جا کند - یک بازارساز بدون فید خبری سریع، انتخاب نامساعد می‌خورد. بهترین جا برای این کار، بازارهای پرنقدینگی ورزشی قبل از بازی و در دوره‌های کم‌خبر است.
روی پلی‌مارکت چقدر باز باید مظنه بدهم؟
حداقل آن‌قدر باز که بدترین انتخاب نامساعد مورد انتظار را پوشش دهد. برای بازارهای ورزشی/سیاسی پرنقدینگی: 1 تا 3 سنت در هر سمت نسبت به قیمت میانی. برای بازارهای کم‌عمق: 5+ سنت. اگر نتوانید هم‌زمان آن‌قدر فشرده مظنه بدهید که با دیگر سازنده‌ها رقابت کنید و آن‌قدر باز که از پس حرکت‌های قیمت برآیید، آن بازار برای بازارسازی برای شما مناسب نیست.
چه محدودیت‌های موجودی‌ای باید بگذارم؟
تا وقتی که طی چند ماه سودآوری خود را ثابت نکرده‌اید، موجودی هر بازار را به 50 تا 200 دلار محدود کنید. مظنه‌ها را کج کنید تا موجودی به سمت خنثی برود - اگر Yes جمع کرده‌اید، پیشنهاد خرید روی Yes خود را پایین بیاورید و پیشنهاد فروش روی No را پایین بیاورید تا خرید No تشویق شود. هرگز نگذارید یک بازار بیش از 20% سرمایهٔ شما را درگیر کند.
آیا برای بازارسازی روی پلی‌مارکت به یک VPS سریع نیاز دارم؟
بله. بازارسازی حساس‌ترین استراتژی از نظر تأخیر در پلی‌مارکت است. یک VPS پرنوسان باعث می‌شود مظنه‌های کهنه ارائه دهید و شکار شوید. ما برای ربات‌های MM خود از TradingVPS استفاده می‌کنیم، دقیقاً چون جیتر (jitter) آن به‌طور مداوم پایین است. سرویس‌های ابری معمولی مثل DO/Vultr برای معاملهٔ آزمایشی MM مناسب‌اند، اما برای اجرای واقعی نه.
MM پلی‌مارکت چه تفاوتی با MM کریپتو دارد؟
دو تفاوت بزرگ: (1) پلی‌مارکت رویدادهای با نتیجهٔ قطعی دارد (اخبار، فینال‌های ورزشی) که می‌توانند قیمت را در لحظه 30 تا 100 سنت تکان دهند - خیلی شدیدتر از کریپتو. (2) بازارهای پلی‌مارکت در نهایت حل‌وفصل می‌شوند، بنابراین برخلاف جفت‌های کریپتو، موقعیت‌های MM انقضای قطعی دارند. هر دو باعث می‌شوند نگهداری موقعیت کوتاه‌تر و محدودیت‌های ریسک سخت‌گیرانه‌تر باشند.
آیا می‌توانم بازارهای کریپتوی 5-دقیقه‌ای را روی پلی‌مارکت بازارسازی کنم؟
ممکن است، اما بسیار سخت است. بازارهای 5-دقیقه‌ای حدود 288 انقضا در روز برای هر جفت دارند، تحت سلطهٔ ربات‌های سریع‌تر هستند، و اسپردهای تنگ‌تری دارند. بیشتر ربات‌های MM خرد در آن‌جا به خاطر انتخاب نامساعد پول از دست می‌دهند. استراتژی مربوط به کریپتوی 5-دقیقه‌ای را به‌درستی در فصل 23 این مجموعه پوشش می‌دهیم.