ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search
محتوا:
در مقالهی پیشین از سری مقالات مرتبط با بهینه یابی به شرح و بررسی «تابع هدف، چشم بصیرت طراحی استراتژی در بهینه یابی» پرداختیم در این مقاله به شرح و بررسی «تابع هدف، چشم بصیرت طراحی استراتژی در بهینه یابی» میپردازیم.
در صورت برقراری شرایط معاملات الگوریتمی در بازار هدف برای سنجش بازده استراتژیهای معاملاتی میتوانید از سفارش کد پایتون، سفارش کد mql و … برای کد کردن و بهینه یابی استراتژیهای خود استفاده کنید. و در عین حال سوای امکان سفارش اکسپرت میتوانید از سفارش اندیکاتور برای دریافت یک نمایش گرافیکی از محاسبات استراتژی خود بهره ببرید.
– – –
پس از بررسی مباحث اولیه درمورد پروسه ی بهینهیابی در جایگاهی قرار داریم که میتوانیم پژوهش خود را پیرامون الگوریتم های کاوشگر آغاز کنیم. همانطور که در گذشته اشاره کردیم فضای بهینهیابی میتواند فضایی چند بعدی و پیچیده باشد پاسخ مطلوب ما به طور قطع در این فضاء مستتر است اما سوال این است که چگونه آن را به دست خواهیم آورد؟ به طور دقیق تر، با چه روشی به دنبال آن خواهیم گشت؟
بر اساس آموزش بهینه یابی و آموزش بکتست میدانیم که پس از انجام بک تست های متوالی آنچه به دست می آوریم مجموعهای بزرگ از داده ها خواهد بود و برای دست یابی به آنچه نیاز داریم باید الگوریتم های بهینه ای به منظور جستجوی این فضا در اختیار داشته باشیم این الگوریتم های یا به شکل ساده تر روش های جستجو را الگوریتم های کاوشگر مینامیم. این الگوریتم ها در طی زمان با بهره گیری از علوم مختلف به جهان بهینهیابی وارد شده اند و هریک با نقاط قوت و ضعف خود مجموعه ای مهم از ابزار متخصص بهینهیابی را تشکیل میدهند. من عقیده دارم فهم هر یک از این الگوریتم ها ضروریست چرا که در صورت درک میتوانیم آن ها را در شرایط مناسب و با توجه به منابع مورد استفاده قرار دهیم. برخی از این الگوریتم های کاوشگر منابع زمانی را مصرف میکنند برخی دیگر به علت پیچیدگی و نیاز به قدرت محاسباتی بالا منابع مالی را مصرف خواهند کرد و برخی هردو به طور قطع توان آن ها در یافتن پاسخ مطلوب ما نیز متفاوت خواهد بود. در ادامهی این مقاله بررسی خود را پیرامون این الگوریتم های کاوشگر آغاز خواهیم کرد و به بررسی یک الگوریتم با نام Grid Search خواهیم پرداخت.
پروسهی بهینهیابی توسط گرید سرچ (Grid Search)
بسیاری از پروژه ها توابع گرید سرچ (Grid Search) را برای دستیابی به ترکیب بهینهای از پارامتر ها مورد استفاده قرار میدهند. لازم به ذکر است که زمان مورد نیاز برای تکمیل پروسه بهینهیابی تابعی از تعداد پارامتر های مورد نظر برای بهینهیابی میباشد. با توجه به ذات بهینهیابی محتمل است که منابع محاسباتی و قدرت پردازش کافی برای بررسی تمامی ترکیب های ممکن وجود نداشته باشد و این موضوع کاملا طبیعی است پس به منظور دستیابی به مناسب ترین نتایج ممکن (نه بهترین آن ها) روش های هوشمندی را برای هدایت جستجو در جهت درست مورد استفاده قرار میدهیم. پس از تکمیل پروسهی بهینهیابی معیار موفقیت ما برآورده کردن معیارهای حداقلی از جمله سود کل (Net Profit) بالاتر از صفر و دورهی افول (Drawdown) پایین تر از 20 درصد خواهد بود پر واضح است که چنین معیار هایی بستگی به میزان ریسک پذیری، انتظارات شما و تحقیقات علمی دارند که این موضوع را در بخش مدیریت سرمایهی سایت به طور کامل مورد بحث قرار گرفته. در ادامه به شکل خلاصه با یکی از الگوریتم های بهینهیابی با نام گرید سرچ و خصوصیات آن آشنا خواهیم شد.
گرید سرچ (Grid Search)
بر طبق آموزش بهینه یابی یکی از پایهای ترین متد های بهینهیابی گرید سرچ نام دارد.
این متد از خانوادهی Brute Force Method ها محسوب میشود. یعنی از خانوادهی روش هایی که بدون هوشمندی خاصی برای افزایش کارآیی، از قدرت محاسباتی محض برای رسیدن به جواب بهره میبرند. در روش گرید سرچ تمامی بکتست ها اجرا شده و سپس رتبهبندی میشوند.
در ادامه به بررسی مثال یک بکتست با دوره های زمانی متغیر برای سیگنال ورود میپردازیم. بازه های زمانی 15 دقیقه ای برای یک دورهی 90 دقیقه با مبدا گشایش بازار . اولین ورود ساعت 9:30 ، 9:45 ، 10:00 و به همین صورت الی آخر تا به 90 دقیقه (15*6) برای متغیر دوم یعنی سیگنال خروج نیز با همین الگو از ساعت 11 تا ساعت 12:30 پس از ظهر پیش میرویم.
بدین صورت برای هریک از متغیر های سیگنال ورود و سیگنال خروج 7 مقدار خواهیم داشت که به صورت کلی 49 ترکیب (2^7) برای ما ایجاد خواهند کرد هر یک از مقادیر ما برای سیگنال ورود با اولین مقدار سیگنال خروج سنجیده شده و این چرخه تا زمان تکمیل هر 49 حالت ادامه پیدا خواهد کرد.
تکرار اول
تکرار دوم
پس از تکمیل تمام 49 حالت ممکن پروسه ی ما به اتمام میرسد این متد را تحت عنوان Grid Search میشناسیم. در کادر پایین یک نمونهی گرید سرچ که با استفاده از زبان برنامهنویسی پایتون اجرایی شده را مشاهده میکنید :
بر طبق آموزش بهینه یابی به منظور اجرای پروسهی بهینهیابی میتوانید طی یک تحلیل تصادفی (randomized) تنها زیرنمونه ای از داده ها را جستجو و بررسی کرده و یا با استفاده از گرید سرچ تمامی ترکیب های ممکن پارامتر ها را بررسی کنید. کاربرد یک منبع معتبر آموزش بهینه یابی میتواند بسیار به پروسهی بهینه یابی در پروژه کمک کند.، همجنین میتوان از سفارش کد بهینه یابی و نرم افزار بهینه یابی نیز بهره برد.
بدون شک مزیت واضح این روش نسبت به روش های دیگر آن است که تمامی ترکیب های ممکن مورد بررسی قرار میگیرند به همین دلیل در موارد خاص به قدرت محاسباتی و پردازش بالایی نیاز خواهید داشت. نقطه ضعف بزرگ این روش سرعت آن است. به دلیل سرعت رشد بالای زمان سرچ نسبت به تعداد پارامتر ها استفاده از این روش در داده های عظیم عملا غیر ممکن یا بسیار پرهزینه است. تصور کنید که به جای دو متغیر با چهار متغیر در بازه های زیر مواجه هستیم :
برای به دست آوردن تعداد تمام ترکیب های ممکن باید تعداد گام هارا در یکدیگر ضرب کنیم (24300= 30*9*9*10) پس ما 24300 حالت برای تست خواهیم داشت با فرض آن که هر یک تست تنها 1 ثانیه وقت ببرد تمام پروسهی بهینهیابی تقریبا 7 ساعت به طول خواهد انجامید. توجه داشته باشید که ما در این مثال از گام های بزرگ (تعداد حالات کمتر) استفاده کرده ایم در صورتی که تست را بر روی تعداد گام های کوچک تر (تعداد حالات بیشتر) اجرا کنیم زمان مورد نیاز برای تکمیل پروسهی بهینهیابی به شکل قابل توجهی افزایش خواهد یافت. و باید بدانید هنگامی که فضای بهینهیابی از دو بعد فراتر میرود تحلیل نتایج تقریبا غیرممکن خواهد شد . برای تست هایی که بر روی فضا هایی با ابعاد بیشتر صورت میپذیرند باید از الگوریتم های بهینهیابی پیچیدهتری بهره ببریم که در مقالات بعدی به آن ها خواهیم پرداخت.
– – –
در صورت برقراری شرایط معاملات الگوریتمی در بازار هدف، سوای این بحث که میتوان استراتژیهای معاملاتی خود را به وسیلهی سفارش کد پایتون یا سفارش کد mql و سفارش اکسپرت کد کرد و در پروسهی بک تست اعتبار سنجی نمود. همچنین میتوان از طریق سفارش اندیکاتور به آنها یک جنبهی نمایشی نمایانتری برای تسهیل تحلیل در سابقهی نماد داد.
– – –
در مقالهی بعدی به بررسی «الگوریتم Hill Climbing در روند بهینه یابی» میپردازیم.