Mean Reversion پیشرفته
Cointegration، Stat Arb.
Mean Reversion پیشرفته: Cointegration و Statistical Arbitrage
هدف یادگیری
پس از مطالعه این درس، قادر خواهید بود:
- مفهوم Cointegration را از همبستگی ساده تمیز دهید
- آزمونهای آماری ADF و Engle-Granger را برای شناسایی جفتهای cointegrated به کار ببرید
- Spread و Z-score را به صورت کمّی محاسبه کنید
- یک استراتژی Stat Arb ابتدایی از صفر طراحی کنید
- ریسکهای خاص این استراتژیها را مدیریت کنید
---
۱. چرا همبستگی کافی نیست؟
بسیاری از تریدرها فکر میکنند اگر دو دارایی همبستگی بالایی داشته باشند، میتوان از انحراف بین آنها سود گرفت. این تصور اشتباه است.
فرض کنید قیمت BTC و ETH در اکثر روزها با هم حرکت میکنند. همبستگی آنها (Pearson Correlation) برابر ۰.۸۵ است. اما همبستگی بالا به این معنی نیست که spread بین دو دارایی به یک میانگین ثابت برمیگردد. دو سری زمانی ممکن است با هم بالا بروند، اما فاصلهشان به طور مستمر در حال افزایش باشد.
Cointegration یک رابطه عمیقتر را توصیف میکند: دو سری زمانی $X_t$ و $Y_t$ که هر کدام به تنهایی غیرساکن (non-stationary) هستند، اگر یک ترکیب خطی از آنها ساکن (stationary) باشد، cointegrated هستند:
$$\varepsilon_t = Y_t - \beta X_t$$
اگر $\varepsilon_t$ ساکن باشد (یعنی دارای میانگین و واریانس ثابت در زمان)، این یعنی فاصله بین دو دارایی در بلندمدت به یک سطح ثابت بازمیگردد — و این دقیقاً همان چیزی است که برای معامله نیاز داریم.
---
۲. آزمونهای Cointegration
آزمون ADF (Augmented Dickey-Fuller)
برای بررسی اینکه آیا spread ساکن است، از آزمون ADF استفاده میکنیم. فرض صفر این آزمون وجود ریشه واحد (unit root) است — یعنی سری غیرساکن است.
اگر p-value آزمون ADF روی spread از ۰.۰۵ کمتر باشد، فرض صفر رد میشود و spread ساکن تلقی میشود.
مثال عملی: فرض کنید spread بین ETH/USDT و BNB/USDT را محاسبه میکنیم:
Spread = ETH_price - β × BNB_price
پس از اجرای رگرسیون OLS روی ۹۰ روز داده، فرض کنید:
- β (hedge ratio) = 4.2
- ADF p-value روی spread = 0.021
این نتیجه نشان میدهد spread در سطح اطمینان ۹۵٪ ساکن است و میتوان از این جفت برای Stat Arb استفاده کرد.
آزمون Engle-Granger (دو مرحلهای)
- مرحله اول: رگرسیون OLS از $Y$ روی $X$ برای یافتن $\hat{\beta}$
- مرحله دوم: اجرای ADF روی residuals رگرسیون
$$Y_t = \alpha + \beta X_t + \varepsilon_t$$
اگر $\varepsilon_t$ ساکن باشد، رابطه cointegration تأیید میشود.
آزمون Johansen
برای بررسی cointegration بین بیش از دو دارایی (مثلاً سه توکن DeFi)، از آزمون Johansen استفاده میشود که تعداد بردارهای cointegrating را تعیین میکند. این آزمون در Python با کتابخانه statsmodels به راحتی اجرا میشود:
python
from statsmodels.tsa.vector_ar.vecm import coint_johansen
result = coint_johansen(df[['ETH', 'BNB', 'SOL']], det_order=0, k_ar_diff=1)
print(result.lr1) # Trace statistics
print(result.cvt) # Critical values
---
۳. محاسبه Spread و Z-score
پس از تأیید cointegration، باید spread را به یک سیگنال قابل معامله تبدیل کنیم. روش استاندارد استفاده از Z-score است:
$$Z_t = \frac{\text{Spread}_t - \mu_{\text{Spread}}}{\sigma_{\text{Spread}}}$$
که در آن:
- $\mu_{\text{Spread}}$ = میانگین متحرک spread (معمولاً با پنجره ۳۰ تا ۹۰ روزه)
- $\sigma_{\text{Spread}}$ = انحراف معیار spread در همان پنجره
قوانین ورود و خروج
| سیگنال | شرط | اقدام |
|--------|------|-------|
| ورود Long Spread | $Z_t < -2$ | Buy Y، Sell X |
| ورود Short Spread | $Z_t > +2$ | Sell Y، Buy X |
| خروج | $|Z_t| < 0.5$ | بستن هر دو پوزیشن |
| Stop Loss | $|Z_t| > 3.5$ | خروج اضطراری |
مثال عددی:
- میانگین spread (ETH - 4.2 × BNB) در ۶۰ روز گذشته = ۴۸۰$
- انحراف معیار spread = ۶۵$
- Spread امروز = ۳۵۰$
$$Z = \frac{350 - 480}{65} = \frac{-130}{65} = -2.0$$
سیگنال ورود Long Spread فعال میشود: خرید ETH و فروش ۴.۲ واحد BNB.
---
۴. Statistical Arbitrage: از تئوری تا اجرا
Stat Arb (آربیتراژ آماری) یک استراتژی مارکتنیوترال است. هدف این است که پوزیشنهای Long و Short به گونهای باشند که ریسک کلی بازار (Beta) خنثی شود.
Hedge Ratio و Dollar Neutrality
تنها $\beta$ از رگرسیون OLS کافی نیست — باید Dollar Neutral هم باشید:
فرض کنید میخواهید ۱۰۰۰۰ دلار در ETH Long بگیرید:
- ارزش پوزیشن ETH: ۱۰,۰۰۰$
- Hedge Ratio (β): 4.2 واحد BNB به ازای هر واحد ETH
- اما برای Dollar Neutral بودن باید ارزش دلاری BNB Short برابر ۱۰,۰۰۰$ باشد
اگر قیمت BNB = ۵۸۰$ باشد:
$$\text{مقدار BNB برای Short} = \frac{10{,}000}{580} \approx 17.24 \text{ BNB}$$
تعداد BNB از β و Dollar Neutrality با هم تعیین میشود — همیشه اولویت با Dollar Neutral بودن است.
Rolling Window و Lookback Period
یکی از مهمترین پارامترها پنجره محاسبه β است. در کریپتو:
- پنجره کوتاه (۱۴-۳۰ روز): واکنش سریعتر، noise بیشتر
- پنجره بلند (۶۰-۱۲۰ روز): پایداری بیشتر، تأخیر در تشخیص تغییر رژیم
روش Kalman Filter برای تخمین β به صورت real-time یکی از روشهای حرفهایتر است که β را به عنوان یک متغیر پویا مدلسازی میکند:
$$\beta_t = \beta_{t-1} + \text{Kalman Gain} \times (Y_t - \hat{Y}_t)$$
این روش در استراتژیهای HFT و quant funds پرکاربرد است.
---
۵. ریسکهای خاص Stat Arb در کریپتو
Cointegration Breakdown
خطرناکترین ریسک این است که رابطه cointegration در میانه معامله «شکسته» شود. این اتفاق به دلایل متعددی رخ میدهد:
- یک رویداد بنیادی مختص یک دارایی (هک، ایردراپ، دلیستینگ)
- تغییر ساختاری بازار (مثلاً حذف یک توکن از یک پروتکل DeFi)
- Regime Change ناشی از تغییر نقدینگی در یک صرافی
قانون: اگر Z-score از آستانه stop loss رد شد (مثلاً |Z| > 3.5)، بدون تردید از پوزیشن خارج شوید. امیدوار بودن به بازگشت در Stat Arb یعنی پذیرش ریسک نامحدود.
Transaction Cost و Slippage
Stat Arb استراتژیای است که سودهای کوچک را تجمیع میکند. بنابراین هزینهها اهمیت حیاتی دارند:
$$\text{سود خالص} = \text{سود Gross} - 2 \times (\text{Taker Fee} + \text{Slippage})$$
اگر Taker Fee هر صرافی ۰.۰۵٪ و slippage متوسط ۰.۰۳٪ باشد:
- هزینه رفت و برگشت یک معامله: $2 \times (0.0005 + 0.0003) = 0.16\%$
- یک spread سود ۰.۵٪ بعد از هزینه به ۰.۳۴٪ تبدیل میشود
برای همین، Stat Arb در کریپتو معمولاً روی صرافیهایی با Maker Fee صفر یا منفی (rebate) اجرا میشود.
Funding Rate در Perpetuals
وقتی پوزیشن Short را از طریق Perpetual Futures میگیرید، funding rate یک هزینه (یا درآمد) اضافی است. اگر market sentiment شدیداً bullish باشد، funding rate به ۰.۱٪ در ۸ ساعت هم میرسد — یعنی ۰.۳٪ در روز. اگر معامله چند روز باز بماند، این هزینه سود را کاملاً میبلعد.
---
۶. ارزیابی عملکرد استراتژی
برای بکتست یک استراتژی Stat Arb، معیارهای استاندارد عبارتند از:
Sharpe Ratio
$$\text{Sharpe} = \frac{E[R_p] - R_f}{\sigma_p}$$
Sharpe بالای ۱.۵ برای یک استراتژی Stat Arb معقول است. بالای ۲ استثنایی محسوب میشود.
Maximum Drawdown (MDD)
چقدر از اوج تا کف سرمایه کاهش داشته؟ استراتژیهای Stat Arb به دلیل ماهیت مارکتنیوترال معمولاً MDD کمتری نسبت به استراتژیهای جهتدار دارند.
Half-Life of Mean Reversion
سرعت بازگشت spread به میانگین را میتوان با مدل AR(1) اندازه گرفت:
$$\text{Spread}_t = \phi \cdot \text{Spread}_{t-1} + \varepsilon_t$$
$$\text{Half-Life} = \frac{-\ln(2)}{\ln(\phi)}$$
مثلاً اگر $\phi = 0.85$، Half-Life برابر است با:
$$\text{Half-Life} = \frac{-0.693}{\ln(0.85)} = \frac{-0.693}{-0.163} \approx 4.25 \text{ روز}$$
این یعنی spread به طور میانگین در ۴.۲۵ روز به نصف انحرافش از میانگین بازمیگردد. Half-Life بین ۳ تا ۲۰ روز برای استراتژیهای swing trading ایدهآل است.
---
نتیجهگیری
Cointegration و Stat Arb از پیچیدهترین و در عین حال قویترین ابزارهای تحلیل کمّی در بازارهای مالی هستند. این استراتژیها نه به پیشبینی جهت بازار وابستهاند و نه به احساسات — بلکه از ساختار آماری بازار بهره میبرند. با این حال، اجرای موفق آنها نیازمند زیرساخت فنی قوی، مدیریت دقیق هزینهها، و نظارت مستمر بر پایداری روابط آماری است.
---
خلاصه نقطهای
- همبستگی ≠ Cointegration: دو دارایی میتوانند همبسته باشند اما spread آنها غیرساکن باشد — cointegration به ساکن بودن spread نیاز دارد
- آزمون ADF برای بررسی ساکن بودن spread استفاده میشود؛ p-value زیر ۰.۰۵ رابطه را تأیید میکند
- Hedge Ratio (β) از رگرسیون OLS محاسبه میشود و باید Dollar Neutrality حفظ شود
- Z-score ابزار استانداردسازی spread است؛ ورود در Z < -2 یا Z > +2 و خروج در |Z| < 0.5
- Half-Life سرعت mean reversion را اندازه میگیرد و باید با افق زمانی استراتژی همخوانی داشته باشد
- Stop Loss اجباری در |Z| > 3.5 الزامی است تا از cointegration breakdown در امان بمانید
- هزینههای معامله (fee + slippage + funding rate) باید قبل از هر استراتژی دقیقاً محاسبه شوند
- Kalman Filter جایگزین حرفهای برای rolling OLS است که β را به صورت پویا تخمین میزند