...

مکانیزمها، معماری فنی و الگوریتمهای بازارسازی (Market Maker / Market Making Architecture)

بررسی جامع معماری فنی، موتورهای محاسبه اسپرد، مدلهای کوانت مانند آولاندا-استویکوف و چالشهای تأخیر فوقکم در سیستمهای بازارسازی فرکانس بالا (HFT).

شفیعی
محسن شفیعی
۲۴ آبان ۱۴۰۵
معماری فنی و الگوریتمهای بازارسازی در سیستمهای مالی با فرکانس بالا (HFT)

معماری بازارسازی: وقتی میکروثانیه‌ها تصمیم‌گیرنده‌اند

اگر یک بازارساز حرفه‌ای را در یک کافه بنشانید و از او بپرسید «کارت چیست؟»، احتمالاً لبخندی می‌زند و می‌گوید: «نقدینگی می‌سازم، اسپرد می‌گیرم، ریسک می‌کنم.» اما اگر همان سؤال را از یک معمار سیستم بپرسید، جوابش کاملاً فرق می‌کند: «یک موتور بهینه‌سازی بلادرنگ می‌نویسم که باید در کمتر از چند میکروثانیه، داده‌ی خام اردر بوک را هضم کند، قیمت رزرو را محاسبه کند، ریسک انبار را بسنجد، جریان سمی را تشخیص بدهد، و دو سفارش محدود بفرستد—و همه‌ی اینها را قبل از اینکه رقبا حتی یک بسته‌ی شبکه را پردازش کنند.» این مقاله برای آن دسته از مهندسان و معمارانی نوشته شده که نه به دنبال تعریف «بازارساز چیست»، بلکه به دنبال پاسخ به سؤال «چگونه یک بازارساز با معماری درست طراحی کنیم» هستند. پس بی‌مقدمه، شیرجه می‌زنیم به دل لایه‌های داده، موتورهای قیمت‌گذاری، مدل‌های کوانت، چالش‌های تأخیر فوق‌کم، و آینده‌ای که یادگیری ماشین و دیفای در انتظارش نشسته‌اند.

Market Maker Architecture
نمای کلی معماری یک سیستم بازارسازی با فرکانس بالا

بخش اول: ورود به دنیای بازارسازی از دیدگاه معماری سیستم و ریزساختار بازار

بیایید کاملاً صادق باشیم—در قلب هر بازار مالی مدرن، یک دفتر سفارشات یا همان اردر بوک (Order Book) نشسته است و بازارسازها (Market Makers) دقیقاً همان بازیگرانی هستند که میان خریداران و فروشندگان پل می‌زنند. اما از دیدگاه یک معمار سیستم، قضیه خیلی فراتر از فرمول ساده‌ی «خرید در قیمت پایین و فروش در قیمت بالا» است. بازارسازی مدرن در واقع یک مسئله‌ی بهینه‌سازی بلادرنگ (Real-Time Optimization) زیر سایه‌ی سه قید سختگیرانه است: تأخیر زمانی (Latency)، ریسک موجودی (Inventory Risk) و جریان سفارشات سمی (Toxic Order Flow).

این سه چالش یک مثلث برمودای واقعی را می‌سازند؛ هر کدام از آن‌ها به تنهایی قابل‌مدیریت هستند، اما ترکیبشان سیستمی را خلق می‌کند که اگر معماری‌اش میلی‌متری و دقیق نباشد، در کسری از ثانیه زیر بار بازار فرو می‌ریزد.

مکانیزم کار در ظاهر ساده است: بازارسازها مدام حداقل دو سفارش محدود (Limit Order)—یک سفارش خرید در قیمت پیشنهادی (Bid) و یک سفارش فروش در قیمت درخواستی (Ask)—تزریق می‌کنند و از شکاف بین این دو (Bid-Ask Spread) سود می‌برند. اما در دنیای واقعی، ریسک‌ها امان نمی‌دهند:

  • ریسک موجودی: اگر سمت خرید شما بیشتر از فروش پر (Fill) شود، حجم زیادی از دارایی روی دست‌تان می‌ماند و در معرض نوسانات شدید قیمت قرار می‌گیرید.
  • انتخاب معکوس (Adverse Selection): معامله‌گران آگاه (Informed Traders) دقیقاً زمانی به سفارش‌های شما ضربه می‌زنند که قیمت در شرف حرکتِ شارپِ خلافِ موقعیت شماست؛ همان پدیده تلخ «نفرین برنده» (Winner's Curse).
  • تأخیر زمانی (Latency): اگر حتی چند میکروثانیه دیرتر از رقبا به رویدادهای بازار واکنش نشان دهید، سفارش‌های شما در صف انتهایی موتور تطبیق (Matching Engine) قرار می‌گیرند و شانس پر شدن را کاملاً از دست می‌دهند.

بنابراین، هسته اصلی معماری یک سیستم بازارسازی باید سه کار را به صورت هم‌زمان انجام دهد: پردازش داده با کمترین تأخیر ممکن، به‌روزرسانی پویای قیمت‌ها بر اساس ریسک موجودی، و پیش‌پردازش جریان سفارشات ورودی برای شناسایی جریان‌های سمی. بیایید لایه‌های این زیرساخت را کالبدشکافی کنیم.

بخش دوم: زیرساخت داده و مکانیسم اردر بوک

2-1. سطوح داده: L1، L2 و L3

اولین و کلیدی‌ترین تصمیم معماری، انتخاب سطح داده (Data Level) دریافتی از صرافی یا بورس است:

  • داده سطح یک (L1): فقط بهترین قیمت خرید و فروش (Best Bid/Ask) و حجم آن‌ها را به شما می‌دهد. برای یک بازارساز جدی، معامله با L1 مثل رانندگی با چشم‌های بسته است.
  • داده سطح دو (L2): کل دفتر سفارشات (Order Book) را تا چندین سطح قیمتی (معمولاً تا عمق 20 یا 50) به نمایش می‌گذارد.
  • داده سطح سه (L3): تک‌تک سفارشات فعال را همراه با شناسه منحصربه‌فردشان (Order ID) نشان می‌دهد؛ یعنی شما دقیقاً می‌بینید کدام سفارش تازه وارد شده، کدام لغو شده و عمق واقعی نقدینگی در هر اوردر چقدر است.

برای یک سیستم بازارسازی با فرکانس بالا (HFT)، داده‌ی L3 تنها گزینه معقول است. در یک بازار پویا، اگر لغو شدن (Cancellation) سفارش‌ها را در لحظه رصد نکنید، نمی‌توانید پیش‌بینی کنید که قیمت تعادلی بعدی کجا خواهد بود. مدل‌های پیشرفته برای فهم این ساختار، حتی از فرایندهای هاکس (Hawkes Processes) برای مدل‌سازی وابستگی زمانی ورود سفارشات در سطوح مختلف استفاده می‌کنند.

2-2. موتور محاسبه اسپرد (Spread Engine)

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

Spread = α · σ · √T + β · |Inventory| + γ · Competition_Factor

در این معادله، σ نشان‌دهنده نوسان‌پذیری، T افق زمانی موردانتظار برای بستن موقعیت، Inventory میزان موجودی فعلی (نرمال‌شده نسبت به سقف مجاز)، و Competition_Factor فاصله قیمتی شما از سایر رقبای بازارساز است.

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

2-3. مدیریت نرخ داده و انفجارهای لحظه‌ای (Micro-Bursts)

یک چالش کور در طراحی دیتابیسِ سیستم‌های معاملاتی، مدیریت ریزانفجارها (Micro-Bursts) است. در شرایط عادی بازار همه چیز آرام است، اما به محض انتشار یک خبر یا نوسان ناگهانی، حجم پیام‌های ورودی شبکه در کمتر از یک میلی‌ثانیه هزاران برابر می‌شود.

این انفجارها ظرفیت پردازش کارت‌های شبکه معمولی (NIC) را قفل کرده و باعث از دست رفتن بسته‌ها (Packet Loss) می‌شوند. برای یک الگوریتم بازارساز، یک بسته از دست رفته یعنی کور شدن سیستم؛ چرا که الگوریتم بر اساس دیتای قدیمی معامله می‌کند در حالی که موتور صرافی از آن قیمت عبور کرده است.

راهکار معماری: استفاده از ساختارهای توزیع‌شده همراه با بافرهای حلقوی (Ring Buffers) و پردازش‌های بدون قفل (Lock-Free Processing) در حافظه تا نرخ‌های پیک (Peak) بدون کوچک‌ترین افت پرفورمنس مدیریت شوند.

بخش سوم: مدل‌های کوانت و الگوریتم‌های بازارسازی

3-1. مدل اولاندا-استویکوف (Avellaneda-Stoikov): ستون فقرات کج‌سازی قیمت

مدل ریاضی Avellaneda-Stoikov (محصول 2008) با استفاده از تئوری کنترل تصادفی (Stochastic Control Theory)، ترازوی بهینه‌سازی قیمت را فرموله می‌کند. هسته اصلی این مدل، محاسبه همان قیمت رزرو (Reservation Price) است.

پیاده‌سازی فنی و گام‌به‌گام این مدل در موتور کوانت به این صورت است:

1. پارامترهای ورودی: نوسان‌پذیری دارایی (σ)، افق زمانی (T)، ضریب ریسک‌گریزی سیستم (γ)، و پارامتر شدت نقدینگی بازار (k).

2. محاسبه قیمت رزرو (rt):

rt = St − qt · γ · σ2 · (T − t)

(در این معادله، St قیمت میانی، qt تعداد موجودی انبار بر حسب واحد دارایی، و T − t زمان باقی‌مانده تا پایان افق معاملاتی است).

3. محاسبه اسپرد بهینه (δt):

δt = γ · σ2 · (T − t) + (2 / γ) · ln(1 + γ / k)

4. قیمت‌گذاری نهایی اردرها (Bid و Ask):

Pbid = rt − (δt / 2)
Pask = rt + (δt / 2)

نتیجه این معماری چیست؟ به محض اینکه موجودی دارایی شما (q_t) مثبت و سنگین می‌شود، قیمت رزرو پایین می‌آید. در نتیجه، سیستم به طور خودکار قیمت خرید (Bid) را پایین‌تر می‌آورد تا دیگر کسی به شما نفروشد، و قیمت فروش (Ask) را هم پایین می‌آورد تا خریداران را جذب کند و انبار خالی شود. به این تکنیک حیاتی، کج‌سازی قیمت (Quote Skewing) می‌گویند.

3-2. مدیریت ریسک موجودی (Inventory Risk)

فراتر از فرمول‌های ریاضی، لایه مدیریت ریسک سیستم (Risk Management Layer) باید کنترل‌های سختی را اعمال کند:

  • تعریف سقف انبار (Inventory Limit): عبور از این حد یعنی ترمز اضطراری و توقف کامل لیمیت اوردرها در آن دارایی.
  • محاسبه نرخ انباشت (Accumulation Rate): اگر انبار با سرعت غیرعادی در حال پر شدن است، سیستم باید اسپرد را به‌صورت تصاعدی باز کند.
  • مدل‌سازی هزینه فرصت (Opportunity Cost): سرمایه‌ای که در انبار قفل می‌شود، بازدهی سیستم را پایین می‌آورد و باید در توابع مطلوبیت (مثل تابع CARA) جریمه شود.

3-3. مقابله با انتخاب معکوس (Adverse Selection)

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

1. تشخیص جریان سمی (Toxic Flow Detection): رصد حجم و فرکانس اردرهای تیک‌تک بازار؛ اگر اردرهای مارکتِ سنگین پشت‌سرهم به یک سمت اردر بوک ضربه می‌زنند، سیستم باید بلافاصله اسپرد را پهن کند یا حجم سفارش‌گذاری خود (Order Size) را به حداقل برساند.
2. مدل‌سازی قیمت‌خوانی (Price Reading): سیستم باید به‌گونه‌ای رفتار کند که پوزیشن و جهت انبار خودش را با تغییر قیمت‌ها به معامله‌گران آگاهِ بازار لو ندهد.

بخش چهارم: چالش‌های فرکانس بالا (HFT) و مهندسی سیستم

4-1. زیرساخت با تأخیر فوق‌کم (Ultra-Low Latency)

در بازارسازی فرکانس بالا (HFT)، کل زمان رفت‌وبرگشت پیام (Tick-to-Trade) باید زیر چند میکروثانیه باشد. مهندسی این سطح از سرعت، معماری خاص خود را می‌طلبد:

1. ورودی داده (Data Ingest): پردازش بسته‌های شبکه در لایه‌ی سیستم‌عامل (OS Kernel) کند است. معماران مالتی‌میلیاردی از شتاب‌دهنده‌های سخت‌افزاری FPGA و تکنیک دور زدن هسته (Kernel Bypass) استفاده می‌کنند تا بسته‌های خام دیتای بورس را در سطح سخت‌افزار و با تاخیر نانوثانیه‌ای پردازش و نرمال‌سازی کنند.
2. محاسبه قیمت در حافظه (Cache-Optimized): کدها معمولاً در زبان C++ یا Rust با مدیریت دستی حافظه و ساختارهای داده کامپکت نوشته می‌شوند تا الگوریتم کاملاً در کش پردازنده (L1/L2 Cache) بماند و هیت به رم (RAM) اتفاق نیفتد.
3. پروتکل‌های باینری اتصال: اگرچه پروتکل متن‌محور FIX استاندارد جهانی فین‌تک است، اما برای سرعت‌های نجومی، بورس‌ها پروتکل‌های اختصاصی باینری مثل ITCH (برای دریافت دیتا) و OUCH (برای ارسال اوردر) را ارائه می‌دهند که سربار پردازشی (Overhead) آن‌ها نزدیک به صفر است.

4-2. لایه کنترل ریسک قبل از معامله (Pre-Trade Risk Checks)

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

  • Inventory Limit Check: آیا این اوردر، انبار را از حد مجاز عبور می‌دهد؟
  • Daily Loss Limit: آیا سقف ضرر مجاز امروز پر شده است؟
  • Order Rate Check: آیا فرکانس ارسال اردر از حد ثانیه‌ای فراتر رفته؟ (برای جلوگیری از لوپ‌های بی‌نهایتِ کدهای باگ‌دار).
  • Price Collar Check: آیا قیمت اردر با قیمت واقعی بازار همخوانی دارد؟ (جلوگیری از Fat-Finger Error).

4-3. سوئیچ قطع اضطراری (Kill Switch)

هر سیستم بازارسازی به یک «مهره‌شکن» یا Kill Switch مرکزی نیاز دارد. مکانیزمی که در شرایط اضطراری (مثلاً کرش کردن کدهای کوانت)، تمام سفارشات فعال را در کسری از میلی‌ثانیه لغو (Cancel All) کرده و اتصال را قطع کند. این سوئیچ باید مستقل از پروسس اصلی سیستم و در لایه شبکه یا گیت‌ویِ اتصال پیاده‌سازی شود تا اگر کل اپلیکیشن قفل کرد، باز هم کار کند.

بخش پنجم: جمع‌بندی فنی و آینده بازارسازی

5-1. بازارسازهای اردر بوک در مقابل AMM (مدل‌های خودکار دیفای)

تفاوت ساختاری بازارسازهای سنتی و ساختارهای نوین غیرمتمرکز را می‌توان در فاکتورهای کلیدی زیر خلاصه کرد:

  • مکانیزم قیمت‌گذاری: در بازارساز اردر بوک قیمت کاملاً پویا و بر اساس سفارشات محدودِ فعال تعیین می‌شود، اما در مدل‌های AMM قیمت‌گذاری صلب و بر اساس فرمول‌های ریاضیِ استخر (مثل x × y = k) انجام می‌گیرد.
  • منبع تأمین نقدینگی: در اردر بوک سرمایه مستقیماً متعلق به خود بازارساز یا خطوط اعتباری اوست، در حالی که در AMM نقدینگی توسط کاربران عادی در استخرها (Liquidity Pools) تأمین می‌شود.
  • تأخیر زمانی (Latency): در اردر بوک سرعت در حد میکروثانیه و نانوثانیه معنی دارد و زیرساخت شبکه حیاتی است، اما در AMM سرعت محدود به زمان تأیید بلاک‌های شبکه بلاک‌چین است.
  • مدیریت ریسک موجودی: در مدل اردر بوک ریسک از طریق کج‌سازی فعال قیمت‌ها (Skewing) کنترل می‌شود، در حالی که در AMM تأمین‌کنندگان نقدینگی در معرض ریسک ضرر ناپایدار (Impermanent Loss) قرار می‌گیرند.

5-2. ورود یادگیری تقویتی (Reinforcement Learning) به بازارسازی

امروزه نسل جدید سیستم‌های کوانت به جای تکیه صرف بر پارامترهای ثابت مدل‌های کلاسیک، از عامل‌های یادگیری تقویتی عمیق (Deep RL) استفاده می‌کنند که می‌توانند با مشاهده وضعیت لحظه‌ای اردر بوک، به صورت پویا سیاست قیمت‌گذاری و کنترل ریسک خود را با رژیم‌های مختلف نوسان بازار تطبیق دهند.

5-3. نگاه به جلو

معماری یک سیستم بازارسازی موفق، نقطه تلاقی مهندسی نرم‌افزار سطح پایین (Low-Level)، ریاضیات مالی و زیرساخت‌های شبکه با تأخیر فوق‌کم است. چه در بازارهای سنتی و چه در پلتفرم‌های مدرن مبتنی بر دفتر سفارشات، برنده نهایی سیستمی است که بتواند سریع‌تر ببیند، دقیق‌تر ریسک را بسنجد و هوشمندانه‌تر قیمت‌گذاری کند.

نظری وجود ندارد! شما اولین نفر باشید!
جهت ثبت نظر باید در سایت عضو شوید و یا وارد سایت شده باشید .