تشخیص Overfitting
چرا استراتژی شما در live کار نمیکند.
تشخیص Overfitting: چرا استراتژی شما در Live کار نمیکند
هدف یادگیری: در پایان این درس، قادر خواهید بود با معیارهای کمی و روشهای آماری، Overfitting را در استراتژیهای معاملاتی خود تشخیص دهید، شاخصهای Deflated Sharpe Ratio و Walk-Forward Efficiency را محاسبه کنید، و پروتکل اعتبارسنجی علمی را پیش از Live گرفتن هر استراتژی اعمال کنید.
---
۱. آناتومی یک استراتژی شکستخورده در Live
تصور کنید روی دادههای تاریخی پنجساله بیتکوین یک استراتژی میسازید. بکتست نتایج خیرهکنندهای نشان میدهد: Sharpe Ratio برابر ۲.۸، Max Drawdown زیر ۱۵٪، رشد سرمایه ۴۲۰٪. دو هفته پس از Live گرفتن، استراتژی ۱۸٪ ضرر میدهد و Drawdown روزانه از بدترین ماه بکتست فراتر میرود.
این سناریو در میان تریدرهای کوانتیتیتیو آنقدر رایج است که نام خاصی دارد: Backtest Overfitting یا Curve Fitting.
مشکل اینجاست: مدل شما به جای یادگیری الگوهای واقعی بازار، نویز تاریخی را حفظ کرده است. مثل دانشآموزی که سوالات امتحان سالهای گذشته را از حفظ میداند ولی مفهوم پشت آنها را نفهمیده؛ در امتحان با سوالهای جدید شکست میخورد.
سه عامل اصلی این اتفاق را رقم میزنند:
- تعداد پارامترهای زیاد نسبت به حجم دادههای موجود
- بهینهسازی مکرر روی همان مجموعه داده
- Data Snooping یا تورش ناخودآگاه ناشی از دیدن مکرر نتایج بکتست
---
۲. معیارهای کمی شناسایی Overfitting
نسبت پارامتر به داده
اولین معیار ساده اما قدرتمند است. اگر استراتژی شما k پارامتر قابل بهینهسازی دارد و روی N کندل بکتست شده، باید:
N / k ≥ 252 (دادههای روزانه)
N / k ≥ 1000 (دادههای ساعتی یا زیر آن)
مثال عملی: استراتژیای با ۱۲ پارامتر (سه میانگین متحرک، دو آستانه RSI، دو پارامتر ATR، پنج فیلتر حجمی) که روی سه سال داده روزانه — حدود ۷۵۶ کندل — بکتست شده:
756 / 12 = 63
این عدد بسیار پایینتر از حداقل ۲۵۲ است. این استراتژی به شدت Overfit شده است.
Probability of Backtest Overfitting
بیلی و لوپز دو پرادو در مقاله معروف خود (۲۰۱۴) روشی به نام Combinatorially Symmetric Cross-Validation معرفی کردند که احتمال Overfitting را به یک عدد تبدیل میکند:
PBO = P(SR_OOS < median_SR_IS)
اگر PBO بالاتر از ۰.۵ باشد، احتمال بیشتری وجود دارد که استراتژی بهینهشدهی شما در خارج از نمونه ضعیفتر از یک استراتژی متوسط عمل کند. هرچه PBO به ۱ نزدیکتر باشد، Overfitting شدیدتر است.
---
۳. Deflated Sharpe Ratio: شاخص طلایی
Sharpe Ratio معمولی یک نقص ساختاری جدی دارد: اگر ۵۰ استراتژی مختلف را تست کنید، به صورت کاملاً تصادفی چند تا از آنها Sharpe بالایی خواهند داشت، حتی اگر هیچ edge واقعیای نداشته باشند. این Multiple Comparisons Problem است.
Deflated Sharpe Ratio (DSR) این تورش را تصحیح میکند:
DSR(SR) = Φ[ (SR − E[SR_max]) / √Var[SR_max] ]
که در آن:
- SR* = بهترین Sharpe Ratio بهدستآمده از میان N استراتژی
- E[SR_max] = انتظار ریاضی حداکثر Sharpe از N استراتژی تصادفی
- Φ = تابع توزیع تجمعی نرمال استاندارد
مقدار E[SR_max] با فرمول تقریبی زیر محاسبه میشود:
E[SR_max] ≈ (1 − γ)·Φ⁻¹(1 − 1/N) + γ·Φ⁻¹(1 − 1/(N·e))
که γ ≈ 0.5772 ثابت اویلر-ماشرونی و N تعداد استراتژیهای آزمودهشده است.
قانون عملی: DSR باید از ۰.۹۵ بالاتر باشد تا استراتژی از نظر آماری معنادار تلقی شود. اگر ۵۰ استراتژی تست کردهاید و یکی Sharpe برابر ۱.۸ دارد — بدون تصحیح DSR — نمیتوان نتیجه گرفت که این edge واقعی است.
---
۴. Walk-Forward Analysis: آزمون واقعی استراتژی
Walk-Forward Analysis (WFA) تنها روشی است که شرایط Live را به درستی شبیهسازی میکند. منطق آن ساده است: هر بار فقط دادههای گذشته را برای بهینهسازی استفاده کن و روی دادههای آینده که هرگز ندیدهای آزمایش کن.
ساختار WFA
|──── IS Window (بهینهسازی) ────||── OOS ──|
|──── IS ────||── OOS ──|
|──── IS ────||── OOS ──|
- IS (In-Sample): داده بهینهسازی، معمولاً ۷۰ تا ۸۰ درصد هر پنجره
- OOS (Out-of-Sample): داده آزمایش، معمولاً ۲۰ تا ۳۰ درصد
- Step Size: مقدار جابهجایی پنجره در هر تکرار
حداقل ۸ تا ۱۲ دوره OOS برای نتیجه آماری معنادار لازم است.
Walk-Forward Efficiency
نسبت کلیدی برای قضاوت نتیجه WFA:
WFE = بازدهی سالانه OOS / بازدهی سالانه IS
| WFE | تفسیر |
|-----|-------|
| بالاتر از ۰.۸ | عالی — استراتژی Robust است |
| ۰.۵ تا ۰.۸ | قابل قبول — نیاز به بررسی بیشتر |
| ۰.۲ تا ۰.۵ | هشدار — احتمال Overfitting بالا |
| زیر ۰.۲ | رد — Overfit شده است |
مثال عددی: فرض کنید IS در مجموع سالانه ۱۲۰٪ بازدهی داشته، ولی OOS تجمعی فقط ۳۱٪:
WFE = 31 / 120 = 0.258
این عدد در محدوده هشدار جدی قرار دارد. این استراتژی به احتمال زیاد در Live شکست میخورد.
---
۵. تلههای پنهان: Data Snooping، Lookahead Bias و Survivorship Bias
Data Snooping
هر بار که نتایج بکتست را میبینید و پارامترها را تغییر میدهید، ذهن شما به تدریج «یاد میگیرد» که کدام تنظیمات روی این دادههای خاص بهتر کار میکنند. حتی بدون بهینهسازی صریح، این تورش وارد فرآیند تصمیمگیری میشود.
راهحل: دادههای Test را از همان ابتدا کاملاً مجزا نگه دارید و فقط یک بار در پایان از آنها استفاده کنید. اگر پس از دیدن نتیجه Test چیزی را تغییر دادید، آن داده دیگر Test نیست — آلوده شده است.
Lookahead Bias
استفاده ناخواسته از اطلاعات آینده در بکتست. شایعترین موارد در کریپتو:
- استفاده از قیمت Close کندل جاری برای ورود در همان کندل (در واقعیت Close هنوز رخ نداده)
- محاسبه ATR یا Volatility با کندلهایی که در لحظه تصمیم وجود نداشتند
- استفاده از اطلاعات Funding Rate که با تأخیر چند دقیقهای منتشر میشود
آزمون ساده: هر متغیر محاسباتی را بررسی کنید — آیا در لحظه T صفر، تمام ورودیهای آن در زمان T منهای یک یا پیش از آن وجود داشتند؟
Survivorship Bias در کریپتو
بازار کریپتو مملو از پروژههایی است که دیگر وجود ندارند. اگر استراتژی شما روی توکنهایی بکتست شده که هنوز زندهاند، نتایجتان به طرز قابل توجهی خوشبینانه هستند. یک استراتژی altcoin که در ۲۰۲۱ بر روی ۵۰ توکن بکتست شده، احتمالاً ۱۵ تا ۲۵ توکن را نادیده گرفته که به صفر رسیدند یا از صرافیها دلیست شدند.
---
۶. پروتکل عملی اعتبارسنجی استراتژی
پیش از Live گرفتن هر استراتژی، این چکلیست را گام به گام طی کنید:
مرحله ۱ — طراحی
- تعداد پارامترهای بهینهپذیر را به حداقل برسانید (زیر ۶ پارامتر توصیه میشود) - فرضیه اقتصادی واضح داشته باشید: چرا این edge باید وجود داشته باشد؟ - دادههای Test را از ابتدا جدا کنید و دسترسی به آنها را قفل کنیدمرحله ۲ — توسعه
- بهینهسازی فقط روی داده IS انجام دهید - PBO را محاسبه کنید — هدف: زیر ۰.۴ - DSR را محاسبه کنید — هدف: بالاتر از ۰.۹۵مرحله ۳ — اعتبارسنجی
- WFA با حداقل ۸ تا ۱۲ دوره OOS انجام دهید - WFE را محاسبه کنید — هدف: بالاتر از ۰.۵ - Monte Carlo با ۱۰۰۰ بار شبیهسازی برای توزیع Drawdown انجام دهیدمرحله ۴ — آزمون نهایی
- یک بار روی دادههای Test اجرا کنید - اگر نتایج ناامیدکننده بود، استراتژی را کنار بگذارید — نه اینکه دوباره تغییر دهید - Paper Trading حداقل ۳۰ تا ۵۰ معامله در شرایط واقعیمرحله ۵ — Live با حجم کم
- با ۱۰٪ حجم هدف شروع کنید - تا ۵۰ معامله Live نتایج را مستند کنید - مقایسه آماری IS در برابر OOS در برابر Live انجام دهید---
نتیجهگیری
Overfitting سادهترین تلهای است که یک تریدر کوانتیتیتیو ممکن است در آن بیفتد، اما با ابزارهای آماری صحیح کاملاً قابل شناسایی و پیشگیری است. یادتان باشد: هیچ بکتستی واقعیت آینده نیست. بکتست فقط یک فرضیه است که باید با روشهای علمی آزمایش شود.
یک استراتژی سادهتر با WFE بالا و پارامترهای کمتر، همیشه از یک استراتژی پیچیده Overfitشده عملکرد بهتری در Live خواهد داشت. اصل Occam's Razor در ترید هم صدق میکند: توضیح سادهتر معمولاً درستتر است.
---
خلاصه نقطهای
- Overfitting زمانی رخ میدهد که مدل نویز تاریخی را به جای الگوی واقعی یاد میگیرد
- نسبت N/k باید برای داده روزانه حداقل ۲۵۲ و برای داده ساعتی حداقل ۱۰۰۰ باشد
- Deflated Sharpe Ratio تورش Multiple Comparisons را تصحیح میکند و باید بالاتر از ۰.۹۵ باشد
- Walk-Forward Efficiency بالای ۰.۵ نشانه Robustness واقعی استراتژی است
- Data Snooping حتی بدون بهینهسازی صریح و فقط با دیدن نتایج هم رخ میدهد
- Lookahead Bias یکی از مخربترین خطاهای پنهان در بکتستهای کریپتو است
- دادههای Test باید فقط یک بار در انتهای فرآیند استفاده شوند
- Paper Trading قبل از Live الزامی است، نه اختیاری