پیشرفتهstrategy

Statistical Arbitrage

15 دقیقه
Statistical Arbitrage

Z-Score، نیمه‌عمر بازگشت.

آربیتراژ آماری: Z-Score و نیمه‌عمر بازگشت به میانگین

هدف یادگیری

پس از مطالعه این درس، قادر خواهید بود:
- Z-Score را در زمینه آربیتراژ آماری محاسبه و تفسیر کنید
- مفهوم نیمه‌عمر بازگشت به میانگین را با فرآیند اورنشتاین-اولنبک مدل‌سازی کنید
- آزمون هم‌انباشتگی Engle-Granger را برای شناسایی جفت‌های معاملاتی به‌کار ببرید
- سیگنال‌های ورود و خروج را بر اساس آستانه‌های آماری تعریف کنید

---

۱. آربیتراژ آماری چیست؟

آربیتراژ آماری (StatArb) یک استراتژی کمّی است که بر پایه این فرض بنا شده: دو یا چند دارایی با رابطه تاریخی پایدار، در کوتاه‌مدت از مسیر تعادل خارج می‌شوند، اما در بلندمدت به آن باز می‌گردند. هدف معامله‌گر، بهره‌برداری از این انحراف موقت است.

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

سه پیش‌نیاز اصلی:

  • هم‌انباشتگی (Cointegration): دو سری زمانی غیرایستا، اما ترکیب خطی آن‌ها ایستا باشد

  • بازگشت به میانگین (Mean Reversion): اسپرد به سمت میانگین تاریخی کشیده می‌شود

  • افق زمانی منطقی: نیمه‌عمر بازگشت باید با هزینه‌های معاملاتی و مارجین سازگار باشد

---

۲. Z-Score: سنجه فاصله از تعادل

Z-Score نشان می‌دهد اسپرد فعلی چند انحراف معیار از میانگین خود فاصله دارد:

$$Z = \frac{S_t - \mu}{\sigma}$$

که در آن:
- $S_t$ = اسپرد در لحظه $t$ (معمولاً $\log(P_A) - \beta \cdot \log(P_B)$)
- $\mu$ = میانگین متحرک اسپرد (پنجره ۶۰ تا ۱۲۰ روزه)
- $\sigma$ = انحراف معیار متحرک اسپرد

مثال عددی: BTC و ETH

فرض کنید در یک پنجره ۹۰ روزه:
- $\mu_{spread} = 0.42$ (لاگ اسپرد)
- $\sigma_{spread} = 0.08$
- اسپرد امروز: $S_t = 0.58$

$$Z = \frac{0.58 - 0.42}{0.08} = \frac{0.16}{0.08} = +2.0$$

Z-Score برابر ۲.۰ یعنی دارایی A نسبت به B بیش از حد گران شده. سیگنال: فروش A، خرید B.

آستانه‌های استاندارد

| Z-Score | تفسیر | اقدام |
|---------|--------|-------|
| > +2.0 | اسپرد بیش از حد باز شده | Short A / Long B |
| < -2.0 | اسپرد بیش از حد بسته شده | Long A / Short B |
| |Z| < 0.5 | بازگشت به تعادل | بستن پوزیشن |
| |Z| > 3.0 | انحراف شدید / ریسک شکست | توقف یا کاهش حجم |

نکته کمّی مهم: پنجره بهینه

پنجره محاسبه $\mu$ و $\sigma$ باید با نیمه‌عمر سازگار باشد. اگر نیمه‌عمر بازگشت ۱۵ روز است، پنجره ۲۰۰ روزه سیگنال‌های کند و پنجره ۱۰ روزه سیگنال‌های نویزی تولید می‌کند. قانون سرانگشتی: پنجره = ۳ تا ۵ برابر نیمه‌عمر.

---

۳. هم‌انباشتگی: پایه نظری استراتژی

قبل از معامله، باید ثابت کنید که دو دارایی واقعاً هم‌انباشته‌اند. آزمون Engle-Granger دو مرحله دارد:

مرحله اول: رگرسیون OLS:
$$\log(P_A) = \alpha + \beta \cdot \log(P_B) + \epsilon_t$$

مرحله دوم: آزمون ریشه واحد بر روی پسماند $\epsilon_t$:
- اگر $\epsilon_t$ ایستا باشد (ADF p-value < 0.05)، هم‌انباشتگی تأیید می‌شود
- ضریب $\beta$ (hedge ratio) تعداد واحدهای B برای هر واحد A را مشخص می‌کند

مثال: جفت SOL/AVAX

فرض کنید رگرسیون روی داده‌های ۱۸۰ روزه نتیجه می‌دهد:
$$\log(SOL) = 1.23 + 1.47 \cdot \log(AVAX) + \epsilon_t$$

آزمون ADF بر $\epsilon_t$: ADF statistic = -3.82، p-value = 0.003

نتیجه: هم‌انباشتگی تأیید است. Hedge ratio = 1.47 یعنی برای هر ۱ واحد SOL، باید ۱.۴۷ واحد AVAX در طرف مقابل داشته باشید.

> هشدار: هم‌انباشتگی پایدار نیست. هر ۳۰ تا ۶۰ روز باید hedge ratio را دوباره برازش دهید.

---

۴. نیمه‌عمر بازگشت به میانگین

نیمه‌عمر (Half-Life) نشان می‌دهد که به‌طور متوسط چه مدت طول می‌کشد تا نصف انحراف از میانگین جبران شود. این مفهوم از فرآیند اورنشتاین-اولنبک (Ornstein-Uhlenbeck) می‌آید:

$$dS_t = \theta(\mu - S_t)dt + \sigma dW_t$$

که در آن:
- $\theta$ = سرعت بازگشت به میانگین
- $\mu$ = سطح تعادل بلندمدت
- $\sigma$ = نوسان تصادفی
- $dW_t$ = حرکت براونی استاندارد

محاسبه نیمه‌عمر

برای تخمین $\theta$، یک رگرسیون AR(1) بر اسپرد اجرا می‌کنیم:
$$\Delta S_t = \alpha + \beta \cdot S_{t-1} + \epsilon_t$$

سپس:
$$\theta = -\beta$$
$$\text{Half-Life} = \frac{\ln(2)}{\theta} = \frac{0.693}{-\beta}$$

مثال عددی

رگرسیون AR(1) بر اسپرد BTC/ETH (داده روزانه، ۱۲۰ روز):
$$\Delta S_t = 0.002 - 0.046 \cdot S_{t-1}$$

محاسبه:
$$\theta = 0.046$$
$$\text{Half-Life} = \frac{0.693}{0.046} \approx 15 \text{ روز}$$

تفسیر: اگر امروز اسپرد ۲ انحراف معیار از میانگین منحرف شده، انتظار داریم پس از ۱۵ روز، این انحراف به ۱ انحراف معیار کاهش یابد.

تفسیر کاربردی نیمه‌عمر

| نیمه‌عمر | ارزیابی | نکته |
|----------|---------|------|
| < ۵ روز | ایده‌آل برای استراتژی‌های فرکانس بالا | نویز ممکن است سیگنال را مختل کند |
| ۵-۳۰ روز | مناسب برای معاملات روزانه/هفتگی | پنجره بهینه برای اکثر معامله‌گران |
| ۳۰-۹۰ روز | مناسب برای پوزیشن‌های بلندمدت‌تر | نیاز به مارجین بیشتر |
| > ۹۰ روز | غیرعملی در اکثر حساب‌ها | ریسک بالای تغییر رژیم |

---

۵. ساختار کامل یک معامله StatArb

گام ۱: انتخاب جفت

python
import numpy as np
from statsmodels.tsa.stattools import adfuller, coint

آزمون هم‌انباشتگی

score, pvalue, _ = coint(log_price_A, log_price_B) if pvalue < 0.05: print(f"هم‌انباشتگی تأیید | p-value: {pvalue:.4f}")

گام ۲: تخمین hedge ratio و اسپرد

python
from sklearn.linear_model import LinearRegression

model = LinearRegression()
model.fit(log_price_B.reshape(-1,1), log_price_A)
beta = model.coef_[0] # hedge ratio
spread = log_price_A - beta * log_price_B

گام ۳: محاسبه Z-Score

python
window = 60 # پنجره ۶۰ روزه
mu = spread.rolling(window).mean()
sigma = spread.rolling(window).std()
z_score = (spread - mu) / sigma

گام ۴: محاسبه نیمه‌عمر

python
spread_lag = spread.shift(1).dropna()
delta_spread = spread.diff().dropna()
beta_ar = np.polyfit(spread_lag, delta_spread, 1)[0]
half_life = -np.log(2) / beta_ar
print(f"نیمه‌عمر: {half_life:.1f} روز")

گام ۵: سیگنال‌های معاملاتی

| شرط | اقدام | توضیح |
|-----|--------|-------|
| Z > +2.0 | Short A + Long B | اسپرد بزرگ‌تر از حد انتظار |
| Z < -2.0 | Long A + Short B | اسپرد کوچک‌تر از حد انتظار |
| |Z| < 0.5 | بستن پوزیشن | بازگشت به تعادل |
| |Z| > 3.5 | Stop Loss | احتمال شکست هم‌انباشتگی |

---

۶. مدیریت ریسک در StatArb

ریسک شکست هم‌انباشتگی

مهم‌ترین ریسک این استراتژی است. نشانه‌ها:
- نیمه‌عمر در حال طولانی‌تر شدن است
- Z-Score به مدت طولانی در سطوح بالا باقی می‌ماند
- p-value آزمون ADF در حال افزایش است

راه‌حل: Regime Monitoring - هر ۳۰ روز آزمون هم‌انباشتگی را تکرار کنید.

اندازه‌گیری پوزیشن با dollar neutrality

برای خنثی‌سازی ریسک بازار:
$$\text{Size}_B = \beta \times \frac{\text{Size}_A \times P_A}{P_B}$$

مثال: اگر $10,000 در A (قیمت $500) و beta = 1.47:
$$\text{Size}_B = 1.47 \times \frac{10000}{P_B}$$

Sharpe Ratio تخمینی

بدون ارائه اعداد موفقیت دروغین، توجه کنید که:
- هزینه‌های معاملاتی (کارمزد + slippage) باید از سود انتظاری کم شود
- در کریپتو، funding rate برای پوزیشن‌های فیوچرز هزینه اضافی است
- نیمه‌عمر کوتاه‌تر → چرخش بیشتر → هزینه بیشتر

---

نتیجه‌گیری

آربیتراژ آماری یکی از پیچیده‌ترین و در عین حال منسجم‌ترین رویکردهای معاملاتی کمّی است. موفقیت در این استراتژی نه به شانس، بلکه به دقت در آزمون‌های آماری، نظارت مستمر بر پارامترها، و مدیریت ریسک اصولی وابسته است.

Z-Score ابزار اصلی سنجش فاصله از تعادل است و نیمه‌عمر، واقع‌بینی معامله‌گر را درباره افق زمانی فرصت تضمین می‌کند. ترکیب این دو با آزمون هم‌انباشتگی معتبر، پایه یک سیستم StatArb حرفه‌ای است.

---

خلاصه نقطه‌ای

- Z-Score = (اسپرد - میانگین) / انحراف معیار: انحراف ۲+ سیگنال ورود، ۰.۵- سیگنال خروج
- هم‌انباشتگی: شرط لازم است؛ با p-value < 0.05 در آزمون Engle-Granger تأیید کنید
- Hedge Ratio (β): از رگرسیون OLS به‌دست می‌آید و باید هر ۳۰-۶۰ روز به‌روزرسانی شود
- نیمه‌عمر = ln(2)/θ: از رگرسیون AR(1) بر اسپرد محاسبه می‌شود
- پنجره بهینه: ۳ تا ۵ برابر نیمه‌عمر برای محاسبه Z-Score
- نیمه‌عمر ۵-۳۰ روز برای اکثر استراتژی‌های کریپتو عملی است
- Stop Loss در |Z| > 3.5: احتمال شکست هم‌انباشتگی را جدی بگیرید
- Dollar Neutrality: برای حذف ریسک بازار، اندازه پوزیشن‌ها را با beta تنظیم کنید
- Regime Monitoring: هر ۳۰ روز آزمون هم‌انباشتگی را تکرار و پارامترها را به‌روزرسانی کنید

Statistical Arbitrage | آکادمی تریدیار | تریدیار