مقاله

بک‌تست استراتژی معاملاتی؛ کنترل بیش‌برازش و هزینه‌های اجرا

بک‌تست استراتژی معاملاتی؛ کنترل بیش‌برازش و هزینه‌های اجرا

بک‌تست استراتژی معاملاتی شبیه‌سازی اجرای یک قاعده خریدوفروش روی داده‌های گذشته است؛ هدف آن تخمین رابطه ریسک و بازده و پیدا کردن ضعف‌های فرایند تصمیم‌گیری است، نه اثبات سودآوری آینده. در برنامه آموزشی سال ۲۰۲۶ مؤسسه CFA نیز تأکید شده که بک‌تست باید فرایند واقعی سرمایه‌گذاری، بازتنظیم سبد و سنجش هم‌زمان عملکرد و ریسک را تا حد ممکن بازسازی کند. این مقاله چارچوبی برای بازار سهام ایران ارائه می‌دهد و هیچ نتیجه‌ای را تضمین نمی‌کند.

بک‌تست استراتژی معاملاتی دقیقاً چه چیزی را می‌سنجد؟

پیش از وارد کردن داده به نرم‌افزار، فرضیه را در یک جمله بنویسید: «وقتی شرط X رخ می‌دهد، با افق زمانی Y وارد می‌شوم و تحت شرط Z خارج می‌شوم.» سپس دامنه دارایی‌ها، سرمایه اولیه، اندازه موقعیت، زمان‌بندی سفارش و معیار موفقیت را از قبل مشخص کنید. تعریف مبهمی مانند «خرید سهم‌های قوی» بعداً به پارامترهای بی‌شماری تبدیل می‌شود و مسیر بیش‌برازش را باز می‌کند.

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

تقسیم زمانی داده

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

بیش‌برازش در معاملات چگونه پنهان می‌شود؟

بیش‌برازش زمانی رخ می‌دهد که قواعد به جزئیات نویزی تاریخ گذشته می‌چسبند و در داده ندیده عملکردشان افت می‌کند. راهنمای اعتبارسنجی مدل مؤسسه CFA این خطر را در کنار «ریسک نقطه شروع» و سوگیری بقا توضیح می‌دهد: انتخاب بازه‌ای که از ابتدا تا انتها برای استراتژی مطلوب بوده، می‌تواند نتیجه را به تاریخ آغاز وابسته کند.

نشانه‌های هشدار عبارت‌اند از: پارامترهای زیاد نسبت به تعداد معاملات، افت شدید نسبت شارپ در آزمون خارج از نمونه، تمرکز سود روی چند معامله یا چند نماد، و حساسیت غیرعادی به تغییر کوچک در آستانه‌ها. اگر با تغییر میانگین متحرک از ۲۰ به ۲۱ روز نتیجه فرو می‌ریزد، احتمالاً با یک «قله تصادفی» روبه‌رو هستید. برای هر ایده، تعداد آزمایش‌ها و نسخه‌های ردشده را ثبت کنید؛ گزارش فقط بهترین نسخه، اثر جست‌وجوی انتخابی را پنهان می‌کند.

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

آزمون خارج از نمونه و walk-forward

در روش walk-forward، یک پنجره گذشته برای آموزش یا تنظیم استفاده می‌شود و بلافاصله پنجره بعدی بدون دست‌کاری برای آزمون کنار گذاشته می‌شود. سپس پنجره به جلو می‌لغزد و فرایند تکرار می‌شود. این روش به‌جای یک برش ثابت، چندین آزمون زمانی می‌سازد و به توصیه CFA درباره rolling-window نزدیک است؛ متن برنامه ۲۰۲۶ CFA، walk-forward را تقریبی از سرمایه‌گذاری واقعی می‌داند.

  1. برای مثال، ۲۴ ماه داده را برای آموزش و سه ماه بعد را برای آزمون انتخاب کنید.
  2. پارامترها را فقط با همان ۲۴ ماه برآورد و در سه ماه بعد سفارش‌ها را طبق قواعد ثابت شبیه‌سازی کنید.
  3. پنجره را سه ماه جلو ببرید؛ بخشی از داده قدیمی را خارج کنید یا، در پنجره فزاینده، آن را نگه دارید.
  4. بازده و ریسک همه پنجره‌های آزمون را به‌صورت زنجیره‌ای و بدون انتخاب گزینشی تجمیع کنید.

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

سوگیری نگاه به آینده و شبیه‌سازی اجرای واقعی

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

برای جلوگیری، زمان «تصمیم»، «ارسال سفارش» و «اجرای فرضی» را جدا کنید. اگر سیگنال در پایان روز ساخته می‌شود، اجرای محافظه‌کارانه را به بازشدن روز بعد موکول کنید، مگر آنکه داده درون‌روزی و قواعد صف سفارش در دسترس باشد. تأخیر انتشار اطلاعات بنیادی، توقف نماد، محدودیت دامنه نوسان، حجم مبنا و احتمال پرنشدن سفارش را در موتور آزمون مدل کنید. در داده‌های روزانه، فرض اجرای کامل در بهترین قیمت همان روز معمولاً خوش‌بینانه است.

هزینه معامله در بک‌تست؛ از کارمزد تا لغزش قیمت

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

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

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

معیارهای عملکرد و ریسک را چگونه گزارش کنیم؟

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

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

سناریوی عملی: استراتژی شکست میانگین متحرک

فرض کنید قانون اولیه این است: وقتی میانگین متحرک ۲۰ روزه از میانگین ۶۰ روزه بالاتر رفت، در بازشدن روز بعد وارد شوید و با معکوس‌شدن تقاطع خارج شوید. پیش از آزمون، جهان نمادها، سرمایه برابر، حداکثر وزن هر نماد و هزینه پایه را ثبت کنید. داده ۱۳۹۸ تا پایان ۱۴۰۲ را آموزش، ۱۴۰۳ را اعتبارسنجی و ۱۴۰۴ را آزمون نهایی بگذارید؛ تاریخ‌ها صرفاً نمونه‌اند و باید با تقویم و داده در دسترس شما تطبیق یابند.

در walk-forward سه‌ماهه، فقط طول پنجره آموزش (مثلاً ۱۸ یا ۲۴ ماه) را از میان گزینه‌های از پیش تعیین‌شده انتخاب کنید. در هر پنجره، سفارش روز بعد و لغزش سناریوی پایه را اعمال کنید. اگر بازده آزمون نهایی پس از هزینه منفی شد اما آموزش بسیار قوی بود، نتیجه «رد فرضیه در این مشخصات» است، نه مجوز افزایش اهرم یا حذف پنجره‌های نامطلوب. تحلیل حساسیت با تغییر معقول هزینه، تأخیر یک روزه و حد وزن، دامنه اطمینان تصمیم را روشن می‌کند.

چک‌لیست اجرایی پیش از اتکا به نتیجه

  • فرضیه، منطق اقتصادی، قوانین ورود و خروج و معیار موفقیت مکتوب و تاریخ‌گذاری شده است.
  • منبع داده، روش تعدیل، زمان انتشار اطلاعات و فهرست نمادهای موجود در هر تاریخ ثبت شده است.
  • آموزش، اعتبارسنجی و آزمون نهایی کاملاً زمانی و بدون نشت داده جدا شده‌اند.
  • حداقل چند پنجره walk-forward و چند رژیم بازار بررسی شده و همه نتایج گزارش شده‌اند.
  • کارمزد، مالیات مربوط، فاصله خریدوفروش، لغزش، تأخیر و سفارش پرنشده در سناریوهای مختلف لحاظ شده است.
  • بازده خالص، حداکثر افت، طول دوره زیان، گردش و مقایسه با معیار مرجع ارائه شده است.
  • تعداد آزمایش‌ها، نسخه‌های ردشده و تغییرات پس از مشاهده نتایج افشا شده است.
  • پیش از سرمایه واقعی، دوره‌ای آزمایشی با اندازه کوچک و رویه توقف اضطراری تعریف شده است.

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

منابع و مطالعه بیشتر