پیشرفتهquant

Walk-Forward Analysis

15 دقیقه
Walk-Forward Analysis

آزمون پارامترهای پایدار.

Walk-Forward Analysis: آزمون پایداری پارامترهای استراتژی

هدف یادگیری

پس از مطالعه‌ی این درس، قادر خواهید بود Walk-Forward Analysis (WFA) را به‌عنوان یک چارچوب کمّی برای ارزیابی استحکام پارامترهای استراتژی پیاده‌سازی کنید، نسبت کارایی WFA را محاسبه نمایید، و بین نتایج in-sample و out-of-sample به‌درستی تمایز قائل شوید تا از overfitting جلوگیری کنید.

---

چرا بهینه‌سازی ساده کافی نیست

هر معامله‌گر کمّی در مرحله‌ای از کار خود با وسوسه‌ی بهینه‌سازی پارامترها روبرو می‌شود. شما یک استراتژی میانگین متحرک دارید، SMA(10) و SMA(50) را امتحان می‌کنید، و می‌بینید که SMA(14) و SMA(63) در بک‌تست بهترین نتیجه را می‌دهند. اما آیا این پارامترها واقعاً «بهتر» هستند، یا صرفاً به داده‌های تاریخی شما «فیت» شده‌اند؟

این پدیده را curve fitting یا data snooping bias می‌نامند. وقتی شما صدها ترکیب پارامتر را روی یک مجموعه‌داده‌ی ثابت آزمایش می‌کنید، به‌طور آماری تضمین است که یک ترکیب «برنده» پیدا می‌کنید — حتی اگر هیچ لبه‌ی واقعی در بازار وجود نداشته باشد.

مشکل اصلی اینجاست: پارامتری که در گذشته بهینه بوده، لزوماً در آینده بهینه نخواهد بود. بازارها تکامل می‌یابند، رژیم‌ها عوض می‌شوند، و ساختار نقدینگی دگرگون می‌شود.

Walk-Forward Analysis راه‌حلی است که این واقعیت را در قلب آزمایش می‌گذارد.

---

معماری Walk-Forward Analysis

WFA یک فرآیند rolling window است که در آن بهینه‌سازی و ارزیابی به‌صورت جداگانه و متوالی انجام می‌شود.

ساختار پنجره‌ها

هر چرخه‌ی WFA از دو بخش تشکیل شده است:

- In-Sample (IS) Window: دوره‌ای که در آن بهینه‌سازی پارامتر انجام می‌شود.
- Out-of-Sample (OOS) Window: دوره‌ای که پارامترهای بهینه‌شده روی آن آزموده می‌شوند — و این داده‌ها در مرحله‌ی بهینه‌سازی دیده نشده‌اند.

فرمول تعداد چرخه‌های ممکن:

N_cycles = floor((T_total - T_IS) / T_OOS)

که در آن:
- T_total = کل طول داده (مثلاً ۵ سال = ۱۲۶۰ روز معاملاتی)
- T_IS = طول پنجره‌ی in-sample (مثلاً ۵۰۴ روز = ۲ سال)
- T_OOS = طول پنجره‌ی out-of-sample (مثلاً ۱۲۶ روز = ۶ ماه)

مثال محاسبه‌شده:

داده: ۵ سال (۱۲۶۰ روز) | IS: ۲ سال (۵۰۴ روز) | OOS: ۶ ماه (۱۲۶ روز)

N_cycles = floor((1260 - 504) / 126) = floor(756 / 126) = 6 چرخه

یعنی ۶ بار بهینه‌سازی مستقل انجام می‌شود و ۶ دوره‌ی OOS داریم که می‌توانیم به‌هم متصل کنیم و یک منحنی equity کامل خارج از نمونه بسازیم.

دو نوع Walk-Forward

Rolling WFA: هر دو پنجره‌ی IS و OOS با هر چرخه جلو می‌روند. پارامترها دائماً به‌روزرسانی می‌شوند. مناسب برای بازارهایی که رژیم تغییر می‌کنند.

Anchored WFA: نقطه‌ی شروع IS ثابت می‌ماند و فقط انتها جلو می‌رود. IS با هر چرخه بزرگ‌تر می‌شود. مناسب وقتی داده‌های بیشتر همواره اطلاعات مفیدتری می‌دهند.

Rolling: [IS1][OOS1]
[IS2][OOS2]
[IS3][OOS3]

Anchored: [====IS1====][OOS1]
[=======IS2=======][OOS2]
[==========IS3==========][OOS3]

---

نسبت کارایی Walk-Forward (WFE)

معیار اصلی برای قضاوت درباره‌ی پایداری پارامترها Walk-Forward Efficiency است:

WFE = Performance_OOS / Performance_IS

معمولاً Performance با Annualized Return، Sharpe Ratio، یا Net Profit Per Trade سنجیده می‌شود.

تفسیر WFE

| WFE | تفسیر |
|------|--------|
| > 0.70 | استراتژی پایدار — پارامترها به داده قفل نشده‌اند |
| 0.50 – 0.70 | قابل قبول — نیاز به بررسی بیشتر |
| 0.30 – 0.50 | ضعیف — احتمال overfitting بالا |
| < 0.30 | Overfit — استراتژی در OOS فروپاشیده |

مثال عددی:

فرض کنید استراتژی شما در IS میانگین ماهانه‌ی ۳.۸٪ بازده دارد و در OOS همان چرخه ۲.۹٪ بازده می‌دهد:

WFE = 2.9 / 3.8 = 0.76

این عدد نشان می‌دهد استراتژی ۷۶٪ از کارایی IS خود را در OOS حفظ کرده — یک نتیجه‌ی قوی.

حالا WFE را روی همه‌ی چرخه‌ها محاسبه کنید و میانگین بگیرید:

WFE_avg = (1/N) × Σ WFE_i

و اگر انحراف معیار WFE در چرخه‌های مختلف بالا باشد، یعنی پارامترها به رژیم بازار حساس هستند.

---

تحلیل Robustness Map: عمق کمّی

یک تکنیک پیشرفته‌تر در WFA، ساخت Robustness Map (یا Parameter Stability Surface) است. به‌جای انتخاب یک نقطه‌ی بهینه، شما یک «ناحیه‌ی بهینه» پیدا می‌کنید.

روش محاسبه

برای یک پارامتر مثل دوره‌ی RSI با بازه‌ی آزمایش [8, 10, 12, 14, 16, 18, 20]:

  • برای هر چرخه‌ی WFA، تمام مقادیر پارامتر را در IS بهینه کنید.
  • در OOS، نه‌تنها بهترین پارامتر IS، بلکه تمام پارامترها را اعمال کنید.
  • یک ماتریس N_cycles × N_params از بازده‌های OOS بسازید.

اگر نقطه‌ای در این ماتریس بالا می‌درخشد اما اطرافش ضعیف هستند، آن نقطه یک اتفاق است، نه یک لبه. پارامتر پایدار در مرکز یک plateau قرار دارد، نه یک قله‌ی تیز.

معیار Stability Score:

S(p) = Performance(p) / σ[Performance(p-δ), Performance(p), Performance(p+δ)]

هر چه S بزرگ‌تر باشد، عملکرد آن پارامتر نسبت به همسایگانش پایدارتر است.

---

نسبت IS به OOS: چقدر داده برای بهینه‌سازی لازم است؟

انتخاب نسبت T_IS / T_OOS یکی از تصمیم‌های حیاتی در طراحی WFA است.

قانون کلی

نسبت بهینه‌ی IS به OOS معمولاً بین ۳:۱ تا ۵:۱ توصیه می‌شود:

- نسبت پایین (2:1): IS خیلی کوتاه است، بهینه‌سازی پرنویز می‌شود.
- نسبت بالا (8:1): OOS خیلی کوتاه است، ارزیابی آماری معنادار نیست.

محاسبه‌ی حداقل طول OOS

برای اینکه نتایج OOS از نظر آماری معنادار باشند، به حداقل تعداد معامله نیاز دارید. اگر استراتژی شما میانگین ۳ معامله در ماه دارد و OOS شش ماه است:

N_trades_OOS = 3 × 6 = 18 معامله

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

فرمول حداقل OOS:

T_OOS_min = N_min_trades / Trade_Frequency

مثال: استراتژی swing با ۱۰ معامله در ماه و نیاز به ۳۰ معامله:

T_OOS_min = 30 / 10 = 3 ماه

---

پیاده‌سازی عملی: گام به گام

گام ۱: تعریف فضای پارامتری

اجتناب کنید از آزمایش تعداد زیادی پارامتر به‌صورت همزمان. هر پارامتر اضافه فضا را به‌صورت ضربی گسترش می‌دهد (curse of dimensionality). برای استراتژی با سه پارامتر هر کدام با ۱۰ مقدار:

N_combinations = 10³ = 1000

از این ۱۰۰۰ ترکیب، انتظار آماری این است که بعضی‌ها تصادفاً خوب به‌نظر برسند حتی در داده‌های تصادفی.

گام ۲: تعریف معیار بهینه‌سازی

انتخاب معیار بهینه‌سازی اهمیت زیادی دارد. توصیه می‌شود از معیارهایی استفاده کنید که هم بازده و هم ریسک را در نظر می‌گیرند:

- Sharpe Ratio: (R_avg - R_f) / σ_R
- Calmar Ratio: Annual Return / Max Drawdown
- MAR Ratio: مشابه Calmar اما با rolling max drawdown

اجتناب از بهینه‌سازی روی Net Profit خام — چون استراتژی‌های پرریسک و غیرمنطقی را تشویق می‌کند.

گام ۳: جمع‌آوری و تحلیل نتایج

پس از اجرای WFA، چند سوال کلیدی بپرسید:

  • آیا OOS Equity Curve صعودی است? نه‌تنها در IS، بلکه در OOS متصل‌شده.
  • آیا WFE در اکثر چرخه‌ها بالای ۰.۵ است?
  • آیا پارامترهای انتخابی در چرخه‌های مختلف ثبات نسبی دارند? تغییرات شدید پارامتر بین چرخه‌ها نشانه‌ی بی‌ثباتی است.
  • چند درصد از چرخه‌های OOS سودده بوده‌اند?

---

نتیجه‌گیری

Walk-Forward Analysis تنها یک تکنیک بک‌تست نیست — یک فلسفه‌ی آزمایش است که فرض می‌کند آینده با گذشته متفاوت خواهد بود. با جدا نگه‌داشتن فرآیند بهینه‌سازی از فرآیند ارزیابی، شما می‌توانید بین لبه‌ی واقعی و شانس آماری تمایز قائل شوید.

استراتژی که از WFA سالم بیرون می‌آید — با WFE بالا، پارامترهای نسبتاً ثابت، و OOS Equity Curve مثبت — شواهد قوی‌تری از استحکام دارد تا بهترین نتیجه‌ی بک‌تست ساده.

---

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

- WFA = بهینه‌سازی روی IS + ارزیابی روی OOS، به‌صورت rolling و تکراری.
- Walk-Forward Efficiency (WFE) = عملکرد OOS تقسیم بر IS؛ هدف: بالای ۰.۷۰.
- نسبت IS:OOS باید بین ۳:۱ تا ۵:۱ باشد و OOS باید حداقل ۳۰ معامله داشته باشد.
- Robustness Map به شما نشان می‌دهد که آیا پارامتر بهینه روی یک plateau قرار دارد یا یک قله‌ی تیز — تنها اولی قابل اعتماد است.
- تعداد پارامترها را محدود کنید تا از curse of dimensionality جلوگیری شود.
- معیار بهینه‌سازی باید ریسک‌تنظیم‌شده باشد (Sharpe، Calmar) نه Net Profit خام.
- یک استراتژی که در بک‌تست ساده درخشان است اما WFA ضعیفی دارد، احتمالاً overfit شده است.

Walk-Forward Analysis | آکادمی تریدیار | تریدیار