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