رفتن به محتوای اصلی
سرفصل مسیر Quant Developer

مسیر Quant Developer · بخش ۶: Hedging و بازار مشتقات · درس ۲۳

Basis و Cross-Venue Arbitrage

Basis چیست و چطور روی هج اثر می‌گذارد، شهود Cash-and-Carry، و حساب کامل یک اختلاف قیمت بین دو صرافی که نشان می‌دهد چرا بیشتر آربیتراژهای ظاهری واقعی نیستند.

سطح: متوسط تا پیشرفته۱۴ دقیقه مطالعه

۱. Basis: فاصله قرارداد آتی از Spot

در درس ۲۱ فرض کردیم ابزار هج دقیقاً هم‌قیمت Spot است و در درس ۲۲ دیدیم Funding سعی می‌کند Perp را نزدیک Index نگه دارد. «نزدیک» اما «برابر» نیست. به اختلاف قیمت قرارداد آتی (یا Perp) و Spot، Basis می‌گوییم:

Basis = F − S

که F قیمت قرارداد و S قیمت Spot است. اگر قرارداد گران‌تر از Spot باشد (Basis مثبت)، به این وضعیت Contango می‌گویند و اگر ارزان‌تر باشد، Backwardation. در بازار رمزارز Basis بیشتر وقت‌ها مثبت است، چون تقاضا برای Long اهرمی معمولاً بیشتر از Short است؛ ولی این قاعده نیست و در سقوط‌ها برعکس می‌شود.

Basis چطور هج را خراب می‌کند

هج درس ۲۲ را به یاد بیاور: 0.5 BTC Spot خریده‌ایم و 0.5 BTC Perp فروخته‌ایم. سود و زیان مجموع:

Hedged PnL = 0.5 × ΔS − 0.5 × ΔF = − 0.5 × ΔBasis

یعنی وقتی هج کامل است، ریسک قیمت به ریسک Basis تبدیل می‌شود. مثال: هنگام باز کردن هج، Spot برابر 100,000 و Perp برابر 100,050 است (Basis پنجاه دلار). چند ساعت بعد در یک سقوط، Spot به 95,000 و Perp به 94,900 می‌رسد (Basis صد دلار منفی):

پایهتغییر قیمتسود و زیان
Spot (Long 0.5)از 100,000 به 95,0002,500 دلار زیان
Perp (Short 0.5)از 100,050 به 94,9002,575 دلار سود
جمعBasis از ۵۰ مثبت به ۱۰۰ منفی۷۵ دلار سود

اینجا تغییر Basis به نفع ما بود، ولی همین حرکت در جهت مخالف، زیان است. Basis معمولاً دقیقاً در لحظه‌های پرتنش بیشترین حرکت را دارد. برای هج کوتاه‌مدت بازارساز این نوسان کوچک است؛ برای هج چندروزه، باید جزو ریسک دیده شود.

۲. Cash-and-Carry: شهود یک معامله Basis

حالا Basis را از زاویه دیگری ببینیم: اگر قرارداد آتی گران‌تر از Spot است، آیا می‌شود از خود این اختلاف سود برد؟

فرض کن یک قرارداد آتی با سررسید ۹۰ روز در 101,500 معامله می‌شود و Spot در 100,000 است (اعداد فرضی). معامله Cash-and-Carry این است: Spot را بخر، همان مقدار قرارداد آتی را بفروش، و تا سررسید نگه دار. روز سررسید قرارداد با قیمت Spot تسویه می‌شود؛ پس هر قیمتی که BTC داشته باشد، سود دو پایه با هم برابر Basis اولیه است:

0.5 × (101,500 − 100,000) = 750 USDT

Basis ۱.۵ درصد در ۹۰ روز، به‌صورت سالانه (ساده):

Annualized Basis = (F / S − 1) × 365 / Days = 1.5% × 365 / 90 ≈ 6.08%

این عدد سرخط است. حالا هزینه‌ها و سرمایه را اضافه کنیم:

  • کارمزد: چهار معامله (خرید Spot، فروش قرارداد، فروش Spot در سررسید، تسویه قرارداد)، هر کدام با کارمزد فرضی ۰.۰۵٪ روی حدود ۵۰,۰۰۰ دلار: حدود ۱۰۰ دلار.
  • سرمایه: پایه Spot کل ۵۰,۰۰۰ دلار را می‌خواهد. پایه قرارداد هم وجه تضمین می‌خواهد، و طبق درس ۲۲ نباید با اهرم بالا Short بمانی؛ با اهرم ۳، حدود ۱۶,۹۱۷ دلار.
Return = (750 − 100) / (50,000 + 16,917) ≈ 0.97% in 90 days ≈ 3.9% per year

از ۶ درصد سرخط به حدود ۴ درصد رسیدیم؛ و این بازده رایگان نیست. پاداش این است که سرمایه را سه ماه قفل کرده‌ای، ریسک دو صرافی را پذیرفته‌ای، و اگر BTC تند بالا برود، باید وجه تضمین پایه Short را به‌موقع شارژ کنی در حالی که سود پایه Spot جای دیگری نشسته است (همان مشکل بخش ۵ درس ۲۲). عدد نهایی را باید با بازده بدون ریسک‌تری که همین سرمایه جای دیگر می‌گیرد مقایسه کرد.

با Perp ماجرا فرق دارد: سررسیدی نیست که همگرایی را تضمین کند. درآمد از Funding می‌آید که مثبت ماندنش تضمینی ندارد، و موقع بستن موقعیت، Basis می‌تواند از روز ورود بدتر باشد.

۳. اختلاف قیمت بین صرافی‌ها

یک دارایی در چند صرافی معامله می‌شود و قیمت‌ها هیچ‌وقت دقیقاً برابر نیستند. نقدشوندگی پراکنده است، کاربران هر صرافی متفاوت‌اند، و اطلاعات با تأخیر بین صرافی‌ها جابه‌جا می‌شود. صرافی A همان دفتر سفارش درس ۱ را دارد (Best Ask برابر 100,010). دفتر سفارش فرضی صرافی B در همان لحظه:

قیمت (USDT) حجم (BTC)
100,210 1
100,190 0.5
100,180 0.4
اسپرد 20 USDT
100,160 0.2
100,150 0.6
100,130 1
دفتر سفارش نمایشی BTC/USDT: سفارش‌های فروش (Ask) بالا، سفارش‌های خرید (Bid) پایین. بهترین قیمت‌ها پررنگ شده‌اند.

Best Bid صرافی B از Best Ask صرافی A، ۱۵۰ دلار (۰.۱۵٪) بالاتر است. ایده Cross-Venue Arbitrage این است: در A بخر، در B بفروش، اختلاف را بردار. روی صفحه بی‌ریسک به نظر می‌رسد. بیا کامل حسابش کنیم.

۴. حساب کامل یک «آربیتراژ»

حجم 0.5 BTC را در نظر بگیر. خرید در A دو سطح را مصرف می‌کند (0.3 در 100,010 و 0.2 در 100,020) و فروش در B هم دو سطح (0.2 در 100,160 و 0.3 در 100,150). کارمزد Taker هر طرف ۰.۰۵٪ و هزینه متعادل‌سازی موجودی بین دو صرافی (کارمزد انتقال و برداشت، تقسیم بر تعداد معاملات) ۲۰ دلار فرض شده است:

موردمقدار
میانگین قیمت خرید در A100,014
میانگین قیمت فروش در B100,154
سود ناخالص (اختلاف ۱۴۰ دلار برای 0.5 BTC)۷۰ دلار سود
کارمزد Taker در A۲۵.۰۰ دلار هزینه
کارمزد Taker در B۲۵.۰۴ دلار هزینه
هزینه متعادل‌سازی (فرضی)۲۰ دلار هزینه
نتیجه خالص۰.۰۴ دلار زیان

اختلاف ۱۵۰ دلاری بالای دفتر بعد از اسلیپیج ۱۴۰ دلار شد، و کارمزد دو طرف به‌تنهایی ۱۰۰ دلار به ازای هر BTC (۰.۱٪) را می‌خورد. قاعده سرانگشتی: اختلاف قیمت باید از مجموع کارمزد دو طرف بیشتر باشد تا اصلاً بحث شروع شود.

اندازه معامله هم مهم است. هزینه متعادل‌سازی تقریباً ثابت است و اسلیپیج با حجم بالا می‌رود:

def vwap(levels, qty):
    """Average price for taking qty from a list of (price, size), best level first."""
    left, cost = qty, 0.0
    for price, size in levels:
        take = min(left, size)
        cost += take * price
        left -= take
        if left <= 1e-12:
            return cost / qty
    raise ValueError("not enough depth")

asks_a = [(100_010, 0.3), (100_020, 0.5), (100_030, 0.9)]   # venue A: we buy here
bids_b = [(100_160, 0.2), (100_150, 0.6), (100_130, 1.0)]   # venue B: we sell here
fee = 0.0005               # taker fee per side, hypothetical
transfer = 20.0            # rebalancing cost per trade in USDT, hypothetical

for qty in [0.1, 0.2, 0.3, 0.5, 0.8, 1.0]:
    buy, sell = vwap(asks_a, qty), vwap(bids_b, qty)
    gross = (sell - buy) * qty
    fees = fee * qty * (buy + sell)
    net = gross - fees - transfer
    print(f"qty {qty:.1f}: buy {buy:,.0f} sell {sell:,.0f}  "
          f"gross {gross:6.2f}  fees {fees:6.2f}  net {net:+7.2f}")
qty 0.1: buy 100,010 sell 100,160  gross  15.00  fees  10.01  net  -15.01
qty 0.2: buy 100,010 sell 100,160  gross  30.00  fees  20.02  net  -10.02
qty 0.3: buy 100,010 sell 100,157  gross  44.00  fees  30.02  net   -6.02
qty 0.5: buy 100,014 sell 100,154  gross  70.00  fees  50.04  net   -0.04
qty 0.8: buy 100,016 sell 100,152  gross 109.00  fees  80.07  net   +8.93
qty 1.0: buy 100,019 sell 100,148  gross 129.00  fees 100.08  net   +8.92

بهترین حالت حدود ۹ دلار سود روی حدود ۸۰,۰۰۰ دلار معامله است: حدود ۱ واحد پایه (basis point). و این تازه قبل از ریسک‌هایی است که در هیچ جدولی نمی‌آیند.

۵. چرا آربیتراژ ظاهری اغلب آربیتراژ نیست

تأخیر و ریسک یک‌پایه ماندن

دو سفارش هم‌زمان به دو صرافی می‌روند، ولی هم‌زمان نمی‌رسند (تأخیر را در درس ۱۹ دیدیم). اختلاف ۱۵۰ دلاری را بقیه هم دیده‌اند. اگر خرید در A پر شود ولی Bid صرافی B قبل از رسیدن سفارش تو برداشته شود، یک‌پایه مانده‌ای (Legging Risk). در حالت 0.8 BTC، اگر تصمیم بگیری فوراً در همان صرافی A برگردی و به Bidهای درس ۱ بفروشی (0.4 در 99,990 و 0.4 در 99,980)، اسلیپیج و کارمزد دو طرف حدود ۱۰۵ دلار زیان می‌سازد. احتمال شکست پایه دوم که در آن امید ریاضی صفر می‌شود:

p* = 8.93 / (8.93 + 105) ≈ 7.8%

اگر پایه دوم بیشتر از حدود یک بار در ۱۳ تلاش جا بماند، این «آربیتراژ» به‌طور متوسط زیان‌ده است. و بدترین بخش این است که شکست پایه دوم تصادفی نیست: دقیقاً وقتی رخ می‌دهد که رقیب سریع‌تری همان فرصت را دیده است.

زمان انتقال

اگر BTC از قبل در صرافی B نباشد، باید بعد از خرید آن را منتقل کنی. انتقال روی بلاک‌چین و تأییدهای صرافی مقصد ممکن است ده‌ها دقیقه طول بکشد. با نوسان روزانه فرضی ۳٪، در ۳۰ دقیقه:

0.5 × 100,000 × 3% × √(30 / 1440) ≈ 216 USDT

یک انحراف معیار ریسک قیمت ۲۱۶ دلار است، در حالی که بهترین سود مورد انتظار جدول بالا حدود ۹ دلار بود. به همین دلیل کسانی که این کار را جدی انجام می‌دهند، از قبل در هر دو صرافی موجودی دارند (USDT در A و BTC در B) و بعداً، آرام و با هزینه، دوباره متعادلش می‌کنند. یعنی سرمایه در چند صرافی قفل می‌شود؛ موضوع تخصیص سرمایه در درس ۲۴.

محدودیت برداشت و ریسک صرافی

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

۶. تمرین این درس

گزینه مناسب هر سؤال را انتخاب کن و در پایان نتیجه را ببین. همه نرخ‌ها فرضی‌اند.

سؤال ۱: Spot برابر 100,000 و قرارداد آتی با سررسید ۱۸۰ روز برابر 102,000 است. Basis سالانه (ساده) تقریباً چقدر است؟
سؤال ۲: 0.5 BTC Spot خریده‌ای و 0.5 BTC Perp فروخته‌ای. Basis از ۵۰ دلار مثبت به ۱۰۰ دلار منفی می‌رسد. سود و زیان هج چقدر است؟
سؤال ۳: اختلاف قیمت BTC بین دو صرافی ۰.۰۸٪ است و کارمزد Taker هر طرف ۰.۰۵٪. خرید در یکی و فروش در دیگری با سفارش Market سودده است؟
سؤال ۴: قیمت BTC در یک صرافی چند هفته است حدود ۱٪ بالاتر از بقیه است. محتمل‌ترین توضیح چیست؟

درس بعدی

در درس ۲۴، بخش ششم را با سؤالی می‌بندیم که همه این درس‌ها به آن رسیدند: چقدر موجودی مجاز است و سرمایه را چطور بین جفت‌ارزها و صرافی‌ها تقسیم کنیم؟ از نوسان و تحمل زیان به Inventory Limit می‌رسیم، محدودیت نرم و سخت را جدا می‌کنیم، ریسک تمرکز را می‌سنجیم و بافر وجه تضمین Perp را با یک مثال Python حساب می‌کنیم.

این مطلب صرفاً آموزشی است و توصیه خرید، فروش یا سرمایه‌گذاری نیست.