چگونه برازش ناخواسته یا اصطلاحا overfitting را در بکتست یک استراتژی معاملاتی تشخیص دهیم؟
محتوا:
در مقالهی پیشین از سری مقالات مرتبط با بهینه یابی به شرح و بررسی «برازش، مرگ پنهان یک استراتژی معاملاتی» پرداختیم در این مقاله به شرح و بررسی «برازش، مرگ پنهان یک استراتژی معاملاتی» میپردازیم.
در صورت برقراری شرایط معاملات الگوریتمی در بازار هدف برای سنجش بازده استراتژیهای معاملاتی میتوانید از سفارش کد پایتون، سفارش کد mql و … برای کد کردن و بهینه یابی استراتژیهای خود استفاده کنید. و در عین حال سوای امکان سفارش اکسپرت میتوانید از سفارش اندیکاتور برای دریافت یک نمایش گرافیکی از محاسبات استراتژی خود بهره ببرید.
– – –
استفاده از یک منبع معتبر آموزش بهینه یابی میتواند بسیار به پروسهی بهینه یابی کمک کند. همچنین میتوان از سفارش کد بهینه یابی و نرم افزار بهینه یابی نیز بهره برد. همانطور که در مقالهی قبلی بیان کردیم برازش ناخواسته در طی چرخهی طراحی و توسعهی یک استراتژی برای معاملات الگوریتمی یکی از بزرگترین مخاطراتی است که با آن مواجه هستیم چرا که ممکن است این پدیده موجب ضرر های قابل توجهی در معاملات واقعی شود. در این مقاله سعی بر آن بوده تا شما را با برخی روش های تشخیص برازش در عملکرد استراتژی آشنا سازیم. در کنار قوانین اصلی هر استراتژی پارامتر هایی وجود دارند از جمله بازه ی محاسباتی اندیکاتور ها، حد ضرر و یا حد سود و پارامتر های دیگر که باید در مورد آن ها تصمیم بگیرید. به طور معمول پارامتر های منتخب تاثیر قابل ملاحظه ای بر روی نتایج بک تست شما خواهند داشت و با اضافه کردن هر پارامتر جدید خطر برازش به طرز قابل توجهی افزایش پیدا خواهد کرد.
از اتکای بیش از حد بر روی پارامتر های بپرهیزید
برای پرهیز از گرفتار شدن در دام برازش یکی از اولین موضوعاتی که باید بررسی کنید کیفیت پارامتر های مورد استفاده میباشد. به این منظور با تغییر پارامتر های استراتژی خود تاثیر آن را بر روی معیار مطلوبیت در طی دوره بک تست بسنجید.
برای مثال در صورتی که استراتژی شما عملکرد خوبی با استفاده از پریود 14 برای اندیکاتور RSI از خود نشان داده باید نتایجی نسبتا مشابه را با دوره ی محاسباتی 21 و 7 نیز داشته باشد. در غیر این صورت عملکرد استراتژی شما با احتمال بالایی دچار overfitting یا برازش است. به نمودار زیر رابطه ی میان تغییر یکی از پارامتر ها و سود کل را آشکار می کند توجه کنید. هرچند سود کل معیار مورد اعتمادی برای پیدا کردن پارامتر های منتخب نیست اما این مثال به درک شما از این روش تشخیص برازش عملکرد کمک خواهد کرد.
همانطور که مشاهده میکنید در نمودار سمت چپ سود استراتژی (محور عمودی) دارای وابستگی زیادی به مقدار پارامتر انتخاب شده(محور افقی) میباشد این وابستگی اعتبار عملکرد را کاهش میدهد بهتر آن است که تا پیدا کردن نموداری مانند نمودار سمت راست بر روی قوانین اصلی استراتژی خود کار کرده و کیفیت آنهارا افزایش دهید. بی شک برای این روش تنها واژهی وابستگی کافی نیست بلکه باید محاسباتی کمی برای درک چگونگی تاثیر پارامتر بر معیار مطلوب صورت پذیرد که این موضوع در حیطهی مهارتهای کارشناس بهینهیابی خواهد بود. در صورتی که استراتژی شما دارای بیش از یک پارامتر است تست را بر روی پارامتر ها انجام داده و محدودهی پایدار پیدا کنید.
در نمودار بالا من تستی برای تشخیص وابستگی سود کل با دو پارامتر استراتژی انجام داده ام. سود ها به شکل رنگ کد شدهاند، در طیف رنگ های نمودار رنگ سبز نشان دهنده ی سود و رنگ قرمز نشان دهنده ی ضرر است.
توصیهی من به شما این است که اگر سودکل را به عنوان معیار مطلوبیت خود برگزیده اید جفت پارامتری که موجب بالاترین سود شده را به عنوان نتیجهی نهایی انتخاب نکنید(چنین انتخابی را با رنگ سبز پررنگ در نمودار بالا مشاهده میکنید.) چرا که ممکن است چنین نتیجه ای تنها مبتنی بر شانس باشد و با احتمال قابل توجهی استراتژی در معاملات واقعی عملکرد مشابه نخواهد داشت. راه حل بهتر آن است که جفت پارامتری را انتخاب کنید که در میانه ی منطقه ای سبز رنگ قرار دارد. ممکن است که این بهترین راه حل نباشد اما شانس عملکرد مشابه در معاملات واقعی بسیار بالا تر از شیوه ی اشتباهی است که بیان کردیم.
بهینهیابی پیشروی پارامتر ها
شما میتوانید تست پایداری که بدان پرداختیم را بر روی قسمتهای مختلفی از داده های گذشتهی خود اجرا کنید. برای این موضوع مانند گذشته سعی در پیدا کردن مناطق پایدار در نتایج داشته باشید
برای مثال هر یک سال در داده های گذشته را تست کنید در صورتی که این مناطق پایدار از سالی به سال دیگر دچار تفاوت های چشمگیری هستند به احتمال زیاد عملکرد استراتژی شما دچار برازش است. اما در صورتی که منطقه ی نسبتا مشابه یا به عبارت دیگر محدوده ی مشخصی از پارامتر ها که دارای ویژگی پایداری در هر یک سال نیز هست در تمام سال ها تکرار میشود میتوان نتایج مشابهی را در معاملات واقعی نیز انتظار داشت.
اضافه کردن نویز به داده
تست پایداری یکی از راههای تشخیص برازش در عملکرد استراتژی بود راه دیگری که برای تشخیص این موضوع مورد استفاده قرار میگیرد اضافه کردن نویز به داده های قیمتی است. با تغییر و دست بردن جزئی در داده های اصلی بازار مطمئننا خیلی سریع به نقاط ضعف استراتژی خود پی خواهید برد شیوه ی انجام این کار را در مقالات بعدی بررسی خواهیم کرد. همچنین در کنار اضافه کردن نویز به داده های بازار میتوانید پروسهی روند زدایی را بر روی آن انجام داده یا مقداری نوسان به داده های بازار اضافه کنید. در صورتی که استراتژی تنها بر روی داده های قیمتی خام عملکرد خوبی از خود نشان میدهد به قطع میتوان گفت عملکرد استراتژی شما دچار برازش و نقص هایی است.
آیا در تصویر بالا تفاوت میان داده های قیمتی خام و داده های دارای نویز را متوجه شدید؟ به شخصه میتوانم بگویم تشخیص تفاوت این دو کار دشواری است بنابراین استراتژی باید عملکردی نسبتا مشابه بر روی هر دو داده داشته باشد اما به نمودار زیر توجه کنید.
به نظر میرسد عملکرد استراتژی بر روی داده های دارای نویز افت قابل توجهی داشته است این یکی دیگر از نشانه های است که به ما در مورد وجود برازش هشدار میدهد و این استراتژی با احتمال زیاد در معاملات واقعی عملکردی مشابه نخواهد داشت.توصیه میکنم در صورت شکست در هر یک از این تست ها به بوم طراحی بازگشته و تلاش خود را برروی بهبود منطق استراتژی خود متمرکز سازید. کاربرد یک منبع مناسب آموزش بهینه یابی میتواند به طور قابل توجهای به پروسهی بهینه یابی کمک کند. همچنین میتوان از سفارش کد بهینه یابی و نرم افزار بهینه یابی نیز بهره برد.
تست پایداری بر روی بازار های مشابه
اگر به این مرحله رسیدهاید شما در گذراندن تستهای پایداری و نویز موفق بوده اید اما متاسفانه حتی در این مرحله اطمینان کاملی از عملکرد مشابه استراتژی در آینده و بر روی داده های خارج از نمونه وجود ندارد. برای اطمینان از کارکرد درست استراتژی آن را بر روی سهام متفاوت و یا دارایی های قابل معامله ی دیگر بسنجید یک استراتژی مطلوب در 70 تا 80 درصد تست ها سود ده خواهد بود. انتظار یک منحنی بی نقص سود در هر یک از این سهام یا دارایی ها را نداشته باشید اما حداقل سود کم و یا سربه سر برای بیشتر آن ها مورد انتظار است. یک استراتژی با کیفیت پیوسته بدون نیاز به تنظیم پارامتر ها نتایجی پایدار در بازار ها و سهام مختلف خواهد داشت. مگر آنکه با یک استراتژی گوشه مواجه باشیم که در مقالات قبل به آن اشاره کردیم.
ایجاد تاخیر در سفارش های ورود و خروج
یکی دیگر از راه های تشخیص برازش ایجاد تاخیر در سفارش های ورود و خروج به میزان یک یا دو کندل است در صورتی که این کار نتایح مطلوب استراتژی را از بین ببرد شما نشانه ای محکم مبنی بر وجود برازش خواهید داشت. رد شدن استراتژی در چنین تستی حاکی از آن است که وابستگی شما به زمانبندی دقیق بیش از اندازه است. یک سیگنال ورود با کیفیت باید در مقابل زمان تا اندازه ی مشخصی حاشیه و انعطاف از خود نشان دهد. بنابراین زمانی بندی دقیق نباید نتایج عملکرد استراتژی تحت تاثیر قرار دهد.
جابجایی سفارش های شرطی
در صورتی که استراتژی شما از سفارش های شرطی استفاده میکند میتوانید مقداری نویز به سطوح مورد استفاده برای سفارش ها اضافه کنید. پس به جای شروطی مانند ” خرید برروی بالاترین قیمت کندل بعدی” میتوانید درصد کمی از نویز بر مبنای نوسان را به این سفارش ها تزریق کنید. برای مثال نتایج یک استراتژی خرید یا فروش بر روی بالاترین قیمت نوسان قبل باید نتایجی مشابه یا نزدیک با حالتی داشته باشد که به این سطوح کمی نویز اضافه شده. این تست از اعتبار بسیار بالایی برای استراتژی های تشخیص الگو برخوردار است.
درجه ی اوج نمودار بازده ها
بر اساس آموزش بهینه یابی به طور معمول برای ارائهی برجستگی، از درجه اوج مضاعف استفاده میشود که مشاهدهی یک توزیع غیر نرمال را آسان تر میکند KE = K –3 به طوری که K معادل درجه اوج معمول و KE معادل درجه اوج مضاعف میباشد.
درصورتی که درجه اوجی با مقدار بالاتر از 7 یا 8 برای نمودار توزیع بازده استراتژی مشاهده کردید باید بلافاصله به برازش عملکرد استراتژِی خود مشکوک شوید. چرا که به زبان ساده این موضوع نشان دهنده ی وجود تعداد زیادی معامله با سود پایانی یکسان است که چنین اتفاقی به طور معمول در معاملات واقعی نادر است.
– – –
در صورت برقراری شرایط معاملات الگوریتمی در بازار هدف، سوای این بحث که میتوان استراتژیهای معاملاتی خود را به وسیلهی سفارش کد پایتون یا سفارش کد mql و سفارش اکسپرت کد کرد و در پروسهی بک تست اعتبار سنجی نمود. همچنین میتوان از طریق سفارش اندیکاتور به آنها یک جنبهی نمایشی نمایانتری برای تسهیل تحلیل در سابقهی نماد داد.
– – –
در مقالهی بعدی به بررسی «بهینهیابی و بکتست، یک روح در دو بدن» میپردازیم.