وقتی یک استراتژی روی بک‌تست خیلی خوب جواب می‌دهد، هنوز نمی‌شود گفت با یک سیستم معاملاتی قوی طرفیم. اگر با عوض شدن بازه زمانی، داده یا چند تنظیم کوچک، نتیجه به‌هم بریزد، احتمال دارد استراتژی بیش از حد برای گذشته تنظیم شده باشد. این همان چیزی است که به آن Overfitting در ترید می‌گوییم.

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

در ادامه بررسی می‌کنیم اورفیتینگ چطور شکل می‌گیرد و چطور می‌توان قابل اعتماد بودن یک بک‌تست را تشخیص داد.

معیارهای تشخیص بک‌تست قابل اعتماد


اگر یک استراتژی فقط با یک تنظیم خاص روی داده‌های گذشته خوب جواب بدهد، هنوز نمی‌شود به نتیجه‌اش اعتماد کرد.

مهم‌تر این است که استراتژی با تغییر داده یا چند تنظیم ، همچنان نتیجه قابل قبولی داشته باشد.

معیار بررسی نتیجه قابل اعتماد احتمال اورفیتینگ
داده‌ای که در طراحی استفاده نشده عملکرد تا حد زیادی حفظ می‌شود عملکرد افت زیادی می‌کند
تغییر جزئی پارامترها نتیجه تغییر زیادی نمی‌کند نتیجه به شدت تغییر می‌کند
محدوده پارامترها چند تنظیم نزدیک نتیجه قابل قبولی دارند فقط یک تنظیم خاص نتیجه خیلی خوبی دارد
قوانین استراتژی هر قانون دلیل مشخصی دارد قوانین فقط برای بهتر شدن بک‌تست اضافه شده‌اند
تعداد تست‌ها تعداد تست‌ها مشخص و ثبت شده است حالت‌های زیادی تست شده و فقط بهترین نتیجه انتخاب شده است
شرایط مختلف بازار عملکرد فقط به یک دوره خاص وابسته نیست نتیجه به یک دوره یا شرایط خاص بازار وابسته است

پژوهش‌های مربوط به Backtest Overfitting هم همین موضوع را نشان می‌دهند: اگر یک تنظیم فقط روی داده‌های گذشته بهترین نتیجه را بدهد اما روی داده جدید همان عملکرد را حفظ نکند، نمی‌شود به نتیجه بک‌تست آن اعتماد کرد.

پس یک بک‌تست خوب زمانی ارزش دارد که نتیجه آن فقط به همان داده‌های گذشته وابسته نباشد.

 

نحوه شکل‌گیری Overfitting در بک‌تست


Overfitting در بک‌تست فقط زمانی اتفاق نمی‌افتد که استراتژی خیلی پیچیده باشد. حتی یک سیستم ساده هم اگر بارها تغییر داده شود تا روی داده‌های گذشته نتیجه بهتری بگیرد، می‌تواند دچار Overfitting شود.

مثلا فرض کنید:
سه پارامتر دارید و برای هرکدام ۲۰ مقدار مختلف تست می‌کنید. همین سه پارامتر ۸۰۰۰ ترکیب مختلف می‌سازند.

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

پژوهش‌های Backtest Overfitting نشان داده‌اند با افزایش تعداد تنظیمات و مدل‌هایی که امتحان می‌شوند، ریسک انتخاب یک نتیجه ظاهرا عالی اما فاقد قدرت تعمیم بالا می‌رود.

تعداد تست‌هایی که قبل از رسیدن به نتیجه نهایی انجام شده هم مهم است، چون هرچه ترکیب‌های بیشتری امتحان شوند، احتمال انتخاب نتیجه‌ای که فقط روی داده‌های گذشته خوب دیده می‌شود بیشتر می‌شود.

تعداد تست‌ها و Selection Bias

فرض کنید دو نفر دقیقا یک استراتژی ارائه می‌کنند. نفر اول قبل از تست، قوانینش را مشخص کرده و همان نسخه را ارزیابی کرده است. نفر دوم صدها ترکیب مختلف از Entry، Stop Loss، Take Profit، تایم‌فریم و فیلترها را امتحان کرده و بهترین نتیجه را نگه داشته است.

حتی اگر نتیجه نهایی هر دو شبیه باشد، شرایط تست آن‌ها با هم فرق دارد. در حالت دوم، نتیجه از بین تعداد زیادی Trial انتخاب شده و همین موضوع می‌تواند باعث Selection Bias شود.

Bailey و López de Prado هم در بحث Deflated Sharpe Ratio روی همین نکته تاکید می‌کنند که تعداد Trialها باید در ارزیابی نتیجه در نظر گرفته شود.

بهتر است تغییرات استراتژی هم ثبت شوند؛ چون تغییر Stop Loss، حذف RSI یا اضافه کردن یک فیلتر جدید، هرکدام یک Trial تازه محسوب می‌شوند


تاثیر بیش‌برازش بر عملکرد استراتژی

تاثیر بیش‌برازش بر عملکرد استراتژی

بیش‌برازش فقط نتیجه بک‌تست را غیرواقعی نمی‌کند؛ روی نحوه عملکرد استراتژی در داده‌های جدید هم اثر می‌گذارد. مهم‌ترین تاثیرها این‌ها هستند:

  • افت عملکرد روی داده جدید: استراتژی روی داده‌های گذشته خوب نتیجه می‌دهد، اما وقتی با داده‌ای که قبلا ندیده روبه‌رو می‌شود، عملکردش ضعیف‌تر می‌شود.
  • وابستگی به تنظیمات خاص: با تغییر کوچک در پارامترهایی مثل Stop Loss، Take Profit یا دوره اندیکاتورها، نتیجه می‌تواند به شکل محسوسی تغییر کند.
  • وابستگی به یک بازه یا شرایط خاص بازار: ممکن است استراتژی فقط در همان دوره‌ای که روی آن تنظیم شده خوب عمل کند و در شرایط دیگر بازار نتیجه مشابهی نداشته باشد.
  • اعتماد کمتر به نتیجه گذشته: هرچه استراتژی بیشتر برای داده‌های قبلی تنظیم شده باشد، نتیجه تاریخی اطلاعات کمتری درباره عملکرد آینده به ما می‌دهد.

به همین دلیل، نتیجه خوب گذشته زمانی ارزش بیشتری دارد که استراتژی روی داده‌های جدید و با تغییرات جزئی هم عملکرد قابل قبولی داشته باشد.

کاهش Overfitting قبل از اجرای واقعی

برای کم کردن Overfitting، مهم‌ترین کار این است که استراتژی را مدام تغییر ندهیم. هر تغییری باید دلیل مشخص داشته باشد و بعد روی داده‌ای بررسی شود که در ساخت استراتژی استفاده نشده است.

تعیین قوانین قبل از بهینه‌سازی

قبل از تغییر پارامترها باید مشخص باشد هر بخش از استراتژی چه نقشی دارد. اگر RSI، فیلتر زمانی یا یک شرط جدید فقط به این دلیل اضافه شده که نتیجه گذشته بهتر دیده شود، احتمال Overfitting بیشتر می‌شود.

قانون یا پارامتر جدید باید یک دلیل مشخص در منطق استراتژی داشته باشد، نه اینکه فقط خروجی بک‌تست را بهتر کند.

محدود کردن دامنه پارامترها

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

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

جدا نگه داشتن داده Out-of-Sample

بخشی از داده باید از ابتدا کنار گذاشته شود و در ساخت یا تنظیم استراتژی استفاده نشود. بعد از نهایی شدن قوانین، نتیجه روی این داده بررسی می‌شود.

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

بررسی ثبات پارامترها

فقط بهترین عدد را نباید بررسی کرد. مهم‌تر این است که تنظیمات نزدیک به آن هم نتیجه قابل قبولی داشته باشند.

مثلا اگر یک استراتژی با EMA 47 نتیجه بسیار خوبی دارد اما با EMA 46 یا 48 عملکردش به‌هم می‌ریزد، این حساسیت باید جدی گرفته شود.

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

اعتبارسنجی استراتژی بعد از کنترل Overfitting

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

بررسی عملکرد در شرایط مختلف بازار

نتیجه کلی یک بک‌تست همیشه تصویر کاملی از عملکرد استراتژی نمی‌دهد. بهتر است مشخص شود سود استراتژی در چه شرایطی ساخته شده؛ بازار صعودی، نزولی، خنثی یا دوره‌های نوسان بالا.

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

Walk-Forward

Walk-Forward یکی از روش‌های کاربردی برای بررسی عملکرد استراتژی روی داده‌های جدید است. در این روش، استراتژی روی یک بازه تنظیم می‌شود و بعد روی بازه بعدی که در تنظیمات استفاده نشده، مورد ارزیابی قرار می‌گیرد.

این کار در چند بازه زمانی تکرار می‌شود تا مشخص شود عملکرد استراتژی فقط مربوط به یک دوره خاص بوده یا در طول زمان هم قابل تکرار است.

Walk-Forward اورفیتینگ را به طور کامل حذف نمی‌کند، اما می‌تواند وابستگی بیش از حد استراتژی به داده‌های گذشته را بهتر نشان دهد.

تفاوت Overfitting با دلایل دیگر افت عملکرد

هر استراتژی که در اجرای واقعی ضعیف‌تر از بک‌تست عمل می‌کند، لزوما دچار Overfitting نشده است.

Overfitting دلایل دیگر افت عملکرد
استراتژی بیش از حد با داده‌های گذشته تنظیم شده است. هزینه‌هایی مثل کارمزد و Spread نتیجه را ضعیف می‌کنند.
روی داده جدید عملکرد قبلی را حفظ نمی‌کند. Slippage باعث اختلاف بین قیمت تست و اجرای واقعی می‌شود.
نتیجه به تنظیمات یا داده‌های خاص وابسته می‌شود. داده ناقص یا بی‌کیفیت می‌تواند نتیجه تست را خراب کند.
مشکل از نحوه طراحی و تنظیم استراتژی است. Look-ahead Bias نتیجه را به دلیل استفاده از اطلاعات آینده غیرواقعی می‌کند.
با تغییر داده یا پارامترها، عملکرد افت می‌کند. تغییر شرایط بازار می‌تواند باعث افت عملکرد شود، حتی اگر استراتژی Overfit نباشد.

 

  • کارمزد و Spread: اگر این هزینه‌ها در تست درست محاسبه نشده باشند، نتیجه واقعی ضعیف‌تر می‌شود.
  • Slippage: قیمت اجرای سفارش در بازار همیشه دقیقا همان عدد ثبت‌شده در بک‌تست نیست.
  • کیفیت داده: داده ناقص یا اشتباه می‌تواند نتیجه تست را غیرواقعی کند.
  • Look-ahead Bias: استفاده ناخواسته از اطلاعاتی که در زمان معامله هنوز در دسترس نبوده‌اند، نتیجه را بهتر از واقعیت نشان می‌دهد.
  • تغییر شرایط بازار: ممکن است ساختار بازار نسبت به دوره‌ای که استراتژی روی آن تست شده تغییر کرده باشد.

پس افت عملکرد روی داده جدید یکی از نشانه‌های مهم Overfitting است، اما برای تشخیص آن باید بقیه دلایل هم بررسی شوند.

بررسی Overfitting در سیستم‌های الگوریتمی

در استراتژی‌های دستی، بررسی‌هایی که تا اینجا گفتیم بخش زیادی از ریسک Overfitting را مشخص می‌کنند. اما وقتی با کد صدها یا هزاران ترکیب مختلف تست می‌شود، دیگر خود تعداد تست‌ها هم باید در ارزیابی نتیجه در نظر گرفته شود.

در این سطح، معیارهایی مثل Probability of Backtest Overfitting (PBO) و Deflated Sharpe Ratio کمک می‌کنند نتیجه با در نظر گرفتن تعداد Trialها بررسی شود.

به زبان ساده، Sharpe Ratio بالا بعد از چند تست محدود با همان Sharpe Ratio بعد از هزاران ترکیب مختلف ارزش یکسانی ندارد.

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

سخن آخر

Overfitting در ترید از جایی شروع می‌شود که هدف ما از بک‌تست، پیدا کردن حقیقت درباره استراتژی نباشد و بخواهیم نتیجه‌ای را بسازیم که دوست داریم ببینیم.

من به بهترین عدد یک Optimizer اعتماد نمی‌کنم. به سیستمی اعتماد بیشتری دارم که روی داده ندیده‌شده دوام داشته باشد، با تغییر جزئی پارامترها فرو نریزد و سابقه تمام Trialهایی که برای رسیدن به آن انجام شده مشخص باشد.

یک بک‌تست زیبا فقط می‌گوید سیستم روی گذشته خوب بوده است.

سوالات متداول درباره Overfitting در ترید

اگه بک‌تست رو دستی بگیرم دیگه Overfitting ندارم؟

خیر. Overfitting به نرم‌افزار یا Optimizer محدود نیست. اگر معامله‌گر بعد از مشاهده چارت، قوانین ورود و خروج را بارها تغییر دهد تا با گذشته هماهنگ شوند، همان فرآیند بیش‌برازش به شکل دستی اتفاق افتاده است.

اگه استراتژیم فقط روی بیت کوین جواب بده یعنی Overfit شده؟

خیر. اختصاصی بودن یک Edge به بیت کوین به خودی خود نشانه Overfitting نیست. اگر منطق استراتژی به ویژگی مشخصی از ساختار یا رفتار BTC وابسته باشد و نتیجه روی داده ندیده‌شده نیز حفظ شود، محدود بودن استراتژی به یک دارایی قابل توجیه است.

وین‌ریت خیلی بالا یعنی استراتژی Overfit شده؟

خیر. هیچ عدد ثابتی برای Win Rate وجود ندارد که بالاتر از آن Overfitting اثبات شود. وین‌ریت باید کنار نسبت سود به زیان، تعداد معاملات، هزینه اجرا، Drawdown و عملکرد Out-of-Sample ارزیابی شود.

هر چند وقت یک بار میشه تنظیمات استراتژی رو تغییر داد؟

برای تغییر پارامترها فاصله زمانی استاندارد و ثابتی وجود ندارد. تغییر باید بر اساس یک فرآیند از پیش تعریف‌شده انجام شود و نسخه جدید دوباره چرخه Validation را طی کند. تغییر تنظیمات بعد از چند معامله ضعیف، بدون اجرای دوباره اعتبارسنجی، نسخه جدیدی از سیستم می‌سازد که سابقه تست مستقل ندارد.

استراتژی پرایس اکشن هم میتونه Overfit بشه؟

بله. Overfitting فقط مربوط به اندیکاتورها و سیستم‌های الگوریتمی نیست. اگر قوانین پرایس اکشن پس از مشاهده گذشته آن‌قدر جزئی و استثناپذیر شوند که هر حرکت تاریخی با یک قانون توضیح داده شود، همان مشکل بیش‌برازش شکل گرفته است.

اشتراک‌گذاری: تلگرام واتس‌اپ X فیسبوک
Shadi Kamalpoor

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