الگوریتم تبرید شبیه سازی شده

الگوریتم تبرید شبیه سازی شده
الگوریتم تبرید شبیه سازی شده

در مقاله‌‌ی پیشین از سری مقالات مرتبط با بهینه یابی به شرح و  بررسی «الگوریتم Hill Climbing در روند بهینه یابی» پرداختیم در این مقاله به شرح و بررسی «تابع هدف، چشم بصیرت طراحی استراتژی در بهینه یابی» می‌پردازیم.

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

– – –

الگوریتم تبرید شبیه سازی شده (Simulated Annealing)

بر طبق منابع معتبر آموزش بهینه یابی الگوریتم تبرید شبیه‌سازی شده یکی از انواع کلی و موثر بهینه سازی است و معمولا برای پیدا کردن بهینه‌ی سراسری در حضور تعداد زیادی بهینه‌ی محلی موثر است.

01-الگوریتم تبرید شبیه سازی شده
01-الگوریتم تبرید شبیه سازی شده

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

به بیان ساده بر طبق آموزش بهینه یابی این الگوریتم یک الگوریتم از خانواده ی “Hill Climbing”  محسوب می‌شود با این تفاوت که به جای انتخاب بهترین حرکت ما شیوه‌ی انتخاب رندوم را اختیار می‌کنیم. در صورتی که حرکت انتخاب شده باعث بهبود معیار مورد نظر شود آن را می‌پذیریم در غیر این صورت الگوریتم به هر شکل حرکت بعدی را با احتمالی کوچک تر از 1 انجام می‌دهد. احتمال به صورت نمایی به تبعیت از میزان نا مطلوب بودن حرکت کاهش می‌یابد. این عدم مطللوبیت معادل دلتا E  می‌باشد.

02-الگوریتم تبرید شبیه سازی شده
02-الگوریتم تبرید شبیه سازی شده

– – –

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

– – –

در مقاله‌ی بعدی به بررسی «الگوریتم فرگشت» می‌پردازیم.

الگوریتم Hill Climbing در روند بهینه یابی

الگوریتم Hill Climbing در روند بهینه یابی
الگوریتم Hill Climbing در روند بهینه یابی

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

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

– – –

در این مقاله در راستای آموزش بهینه یابی به توضیح یک الگوریتم بهینه‌یابی با نام Hill Climbing خواهیم پرداخت. این الگوریتم یک روش جستجوی محلی است. این به چه معناست؟ بدین معنا که الگوریتم در جهت مقدار فزاینده (در حال افزایش) حرکت کرده تا نهایتا قله‌ و یا به عبارت دیگر بهترین جواب را (بدون شک منظور ما از بهترین جواب، بهترین جواب با توجه به مقیاس و توان الگوریتم مورد استفاده است.) برای مسئله پیدا کند. پروسه ی بهینه‌یابی هنگامی که در محدوده ی قله قرار داریم و هیچ یک از همسایه ها دارای ارزش بالاتری نسبت به محل قرارگیری ما نیست پایان می‌یابد.

 

01-الگوریتم Hill Climbing در روند بهینه یابی
01-الگوریتم Hill Climbing در روند بهینه یابی

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

در ادامه به بررسی سه نوع الگوریتم Hill Climbing خواهیم پرداخت :

  1. الگوریتم Hill Climbing ساده
  2. الگوریتم Hill Climbing بر اساس شیب صعودی
  3. الگوریتم Hill Climbing بر اساس انتخاب رندوم
02-الگوریتم Hill Climbing در روند بهینه یابی
02-الگوریتم Hill Climbing در روند بهینه یابی

1. الگوریتم Hill Climbing ساده

  • گام 1 : سنجش حالت آغازین ، آیا این حالت، حالت هدف است؟ در این صورت موفقیت حاصل شده و الگوریتم متوقف خواهد شد.
  • گام 2 : لوپ تا پیدا شدن پاسخ مورد نظر یا اتمام عملگر ها ادامه خواهد داشت.
  • گام 3 : اضافه کردن یک عملگر به حالت کنونی
  • گام 4 : چک کردن حالت جدید :
    1. در صورتی که حالت جدید، حالت هدف باشد عملیات متوقف می‌شود.
    2. در صورتی که از حالت فعلی بهتر باشد حالت جدید به حالت فعلی تغییر پیدا خواهد کرد.
      • در صورتی که حالت جدید از حالت فعلی بهتر نباشد به گام 2 باز خواهیم گشت.

برای فهم بهتر فرض کنید که ما دو ظرف با نام های حالت فعلی و حالت جدید در اختیار داریم که با توجه یه شرایط تبیین شده هر یک از عملگر ها به این این ظرف ها اطلاق خواهند شد.

 

2. الگوریتم Hill Climbing بر اساس شیب صعودی

الگوریتم Hill Climbing بر اساس شیب صعودی یکی از انواع الگوریتم Hill Climbing ساده است. این الگوریتم تمامی گره ها در همسایگی حالت فعلی را بررسی کرده و نزدیک ترین گره به حالت هدف را انتخاب می‌کند. این الگوریتم با بررسی چندین گره زمان بیشتری مصرفی می‌کند.

  • گام 1 : سنجش حالت آغازین، آیا این حالت، حالت هدف است؟ در این صورت موفقیت حاصل شده و الگوریتم متوقف خواهد شد. در غیر این صورت حالت آغازین تبدیل به حالت فعلی خواهد شد.
  • گام 2 : ادامه ی لوپ تا زمانی که پاسخ به دست آمده و یا حالت کنونی دیگر تغییر نکند.
  • گام 3 : خروج.

 

3. الگوریتم Hill Climbing براساس انتخاب رندوم

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

همانطور که پیش از این نیز اذعان داشتیم باید بدانید که گرفتار شدن الگوریتم Hill Climbing در یک بهینه‌ی محلی موضوع محتملی است.

با توجه به این که الگوریتم Hill Climbing هیچگاه در جهت مقداری کوچک تر حرکت نمی کند آن را الگوریتمی ناقص می‌دانیم و درصورتی که روندی رندوم را برای آن پیش بگیریم ممکن است که با یک الگوریتم کامل ولی ناکارآمد مواجه شویم.

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

– – –

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

– – –

در مقاله‌ی بعدی به بررسی «الگوریتم تبرید شبیه‌سازی شده» می‌پردازیم.

الگوریتم فرگشت

الگوریتم فرگشت
الگوریتم فرگشت

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

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

– – –

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

01-الگوریتم فرگشت
01-الگوریتم فرگشت

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

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

  1. آغاز
  2. انتخاب
  3. عملگر های ژنتیک
  4. پایان

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

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

02-الگوریتم فرگشت
02-الگوریتم فرگشت

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

 

آغاز

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

انتخاب

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

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

توابع هدف چندگانه

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

03-الگوریتم فرگشت
03-الگوریتم فرگشت

عملگرهای ژنتیک

این مرحله به دو زیر مجموعه تقیسم می‌شود. :

  1. ترکیب
  2. جهش

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

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

 پایان

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

– – –

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

– – –

در مقاله‌ی بعدی به بررسی مفهوم دیگری از مفاهیم مربوط به بهینه یابی می‌پردازیم.

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

ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search

ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search
ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search

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

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

– – –

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

01-ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search
01-ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search

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

پروسه‌‌ی بهینه‌یابی توسط گرید سرچ (Grid Search)

بسیاری از پروژه ها توابع گرید سرچ (Grid Search) را برای دستیابی به ترکیب بهینه‌ای از پارامتر ها مورد استفاده قرار می‌دهند. لازم به ذکر است که زمان مورد نیاز برای تکمیل پروسه بهینه‌یابی تابعی از تعداد پارامتر های مورد نظر برای بهینه‌یابی می‌باشد. با توجه به ذات بهینه‌یابی محتمل  است که منابع محاسباتی و قدرت پردازش کافی برای بررسی تمامی ترکیب های ممکن وجود نداشته باشد و این موضوع کاملا طبیعی است پس به منظور دستیابی به مناسب ترین نتایج ممکن (نه بهترین آن ها) روش های هوشمندی را برای هدایت جستجو در جهت درست مورد استفاده قرار می‌دهیم. پس از تکمیل پروسه‌ی بهینه‌یابی معیار موفقیت ما برآورده کردن معیارهای حداقلی از جمله سود کل (Net Profit) بالاتر از صفر و دوره‌ی افول (Drawdown) پایین تر از 20 درصد خواهد بود پر واضح است که چنین معیار هایی بستگی به میزان ریسک پذیری، انتظارات شما و تحقیقات علمی دارند که این موضوع را در بخش مدیریت سرمایه‌ی سایت به طور کامل مورد بحث قرار گرفته. در ادامه به شکل خلاصه با یکی از الگوریتم های بهینه‌یابی با نام گرید سرچ و خصوصیات آن آشنا خواهیم شد.

02-ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search
02-ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search

گرید سرچ (Grid Search)

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

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

در ادامه به بررسی مثال یک بک‌تست با دوره های زمانی متغیر برای سیگنال ورود می‌پردازیم. بازه های زمانی 15 دقیقه ای برای یک دوره‌ی 90 دقیقه با مبدا گشایش بازار . اولین ورود ساعت 9:30 ، 9:45 ، 10:00 و به همین صورت الی آخر تا به 90 دقیقه (15*6) برای متغیر دوم یعنی سیگنال خروج نیز با همین الگو از ساعت 11 تا ساعت 12:30 پس از ظهر پیش می‌رویم.

بدین صورت برای هریک از متغیر های سیگنال ورود و سیگنال خروج 7 مقدار خواهیم داشت که به صورت کلی 49 ترکیب (2^7) برای ما ایجاد خواهند کرد هر یک از مقادیر ما برای سیگنال ورود با اولین مقدار سیگنال خروج سنجیده شده و این چرخه تا زمان تکمیل هر 49 حالت ادامه پیدا خواهد کرد.

تکرار اول

03-ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search
03-ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search

تکرار دوم

04-ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search
04-ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search

پس از تکمیل تمام 49 حالت ممکن پروسه ی ما به اتمام می‌رسد این متد را تحت عنوان Grid Search می‌شناسیم. در کادر پایین یک نمونه‌ی گرید سرچ که با استفاده از زبان برنامه‌نویسی پایتون اجرایی شده را مشاهده می‌کنید :

05-ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search
05-ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search

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

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

06-ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search
06-ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search

برای به دست آوردن تعداد تمام ترکیب های ممکن باید تعداد گام هارا در یکدیگر ضرب کنیم (24300= 30*9*9*10) پس ما 24300 حالت برای تست خواهیم داشت با فرض آن که هر یک تست تنها 1 ثانیه وقت ببرد تمام پروسه‌ی بهینه‌یابی تقریبا 7 ساعت به طول خواهد انجامید. توجه داشته باشید که ما در این مثال از گام های بزرگ (تعداد حالات کمتر) استفاده کرده ایم در صورتی که تست را بر روی تعداد گام های کوچک تر (تعداد حالات بیشتر) اجرا کنیم زمان مورد نیاز برای تکمیل پروسه‌ی بهینه‌یابی به شکل قابل توجهی افزایش خواهد یافت. و باید بدانید هنگامی که فضای بهینه‌یابی از دو بعد فراتر می‌رود تحلیل نتایج تقریبا غیرممکن خواهد شد . برای تست هایی که بر روی فضا هایی با ابعاد بیشتر صورت می‌پذیرند باید از الگوریتم های بهینه‌یابی پیچیده‌تری بهره ببریم که در مقالات بعدی به آن ها خواهیم پرداخت.

– – –

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

– – –

در مقاله‌ی بعدی به بررسی «الگوریتم Hill Climbing در روند بهینه یابی» می‌پردازیم.

تابع هدف، چشم بصیرت طراحی استراتژی در بهینه یابی

 

تابع هدف، چشم بصیرت طراحی استراتژی در بهینه یابی
تابع هدف، چشم بصیرت طراحی استراتژی در بهینه یابی

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

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

– – –

بر طبق آموزش بهینه یابی در پروسه‌ی بهینه‌یابی نخستین کار ما جستجو و کاوش فضای پارامتر ها ست ( منظورم تنظیمات اندیکاتورها و..).پس از آن باید به سنجش آن ها بپردازیم. این بیان که میزان کارآمدی و کیفیت یک روند بهینه‌یابی را تابع هدف آن مشخص می‌کند جمله‌ی دقیقی است. به واقع تابع هدف عنصری است که صلاحیت یا عدم صلاحیت یک مجموعه پارامتر را به ما نشان می‌دهد. اما  اینکه چرا این عنوان را به مقاله‌ی امروز اختصاص داده ام؟ دلیل آن است که تابع هدف پنجره ای است که ما از طریق آن به مشاهده‌ی فضای بهینه‌یابی می‌پردازیم(خروجی بهینه یابی). درست مانند هورمون های ما هر پارامتر از استراتژی بر روی خلق و خُو و ابعاد شخصیتی استراتژی تاثیر گذار است باید گفت فضای گسترده‌ی بهینه‌یابی فضایی چند بعدی ست که وسعت دید ما در این فضا تنها به اندازه‌ی تابع هدف مورد انتخاب‌مان است. هرچه فضای بهینه‌یابی گسترده تر و متد جستجو پیچیده تر باشد اهمیت تابع هدف نیز بیشتر خواهد بود. اجازه بدهید تا به زبان ساده تر به مفهوم تابع هدف بپردازیم.

در مرحله‌ی اول یک استراتژیست باید به این سوال پاسخ دهد که یک استراتژی مطلوب در نظرش دارای چه ویژگی های شخصیتی ایست یک استراتژی با بیشترین سود کل؟ یک استراتژی با بیشترین سود در هر معامله؟ استراتژی ای که بالاترین دقت را در معاملات سود ده دارد و یا معامله ای با بالاترین نسبت شارپ؟

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

01-تابع هدف، چشم بصیرت طراحی استراتژی در بهینه یابی
01-تابع هدف، چشم بصیرت طراحی استراتژی در بهینه یابی

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

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

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

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

– – –

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

– – –

در مقاله‌ی بعدی به بررسی «ورود به جهان الگوریتم های کاوشگر و بررسی Grid Search» می‌پردازیم.

البته تمام موارد فوق در مبحث بهینه یابی را در محصول نرم افزاری الگوریتم حرفه ای تابع هدف بهینه یابی لحاظ شده است.

بهینه‌یابی‌ و بک‌تست، یک روح در دو بدن

بهینه‌یابی‌ و بک‌تست، یک روح در دو بدن
بهینه‌یابی‌ و بک‌تست، یک روح در دو بدن

در مقاله‌‌ی پیشین از سری مقالات مرتبط با بهینه یابی به شرح و  بررسی «چگونه برازش ناخواسته یا اصطلاحا overfitting را در بک‌تست یک استراتژی معاملاتی تشخیص دهیم؟» پرداختیم در این مقاله به شرح و بررسی «بهینه‌یابی‌ و بک‌تست، یک روح در دو بدن» می‌پردازیم.

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

– – –

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

01-بهینه‌یابی‌ و بک‌تست، یک روح در دو بدن
01-بهینه‌یابی‌ و بک‌تست، یک روح در دو بدن

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

 

02-بهینه‌یابی‌ و بک‌تست، یک روح در دو بدن
02-بهینه‌یابی‌ و بک‌تست، یک روح در دو بدن

بنابراین بازه‌ی زمانی‌ای که تنها یک معامله از استراتژی را شامل شده دارای خطای 100 درصدی، دو معامله دارای خطای 50 درصدی و همینطور الی آخر خواهد بود. بنابراین برای رسیدن به خطای 5 درصدی به 400 معامله نیاز خواهیم داشت این راهنمای خوبی برای انتخاب بازه‌ی مورد نیاز برای بک‌تست خواهد بود . باید دو نکته را در نظر بگیرید ذات این فرمول یک ذات بدبین است و من فکر می‌کنم این نوع از رفتار برای یک فرمول سنجش خطا رفتار مناسبی است بدین معنا که هرچه تعداد معاملات افزایش یابد توان هر معامله در کاهش خطای نمونه کاهش می‌یابد به بیان دیگر تبدیل خطایی صد درصدی به خطایی پنجاه درصدی بسیار ساده تر از تبدیل خطای پنج درصدی به خطای چهار درصدی خواهد بود، این موضوع کار را برای استراتژی های پیرو روندی سخت و افزایش اعتبار را برای استراتژی های سریع دشوار خواهد کرد.

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

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

در فیلد بعدی فرمولی که برای محاسبه ی خطای نمونه توضیح دادیم را به شکل راحتی محاسبه کرده ایم فقط کافیست تعداد معاملات را در فیلد وارد کنید در صورتی که DOF دارای مقداری بالاتر از 90 درصد و SAMPLE ERROR دارای مقداری کمتر از 5 درصد باشد می‌توان گفت بک‌تست شما با توجه به میزان پیچیدگی استراتژی و ریتم ذاتی آن از نظر زمانی معتبر و قابل قبول است.

03-بهینه‌یابی‌ و بک‌تست، یک روح در دو بدن
03-بهینه‌یابی‌ و بک‌تست، یک روح در دو بدن

– – –

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

– – –

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

چگونه برازش ناخواسته یا اصطلاحا overfitting را در بک‌تست یک استراتژی معاملاتی تشخیص دهیم؟

برازش ناخواسته یا اصطلاحا overfitting
چگونه برازش ناخواسته یا اصطلاحا overfitting را در بک‌تست یک استراتژی معاملاتی تشخیص دهیم؟

در مقاله‌‌ی پیشین از سری مقالات مرتبط با بهینه یابی به شرح و  بررسی «برازش، مرگ پنهان یک استراتژی معاملاتی» پرداختیم در این مقاله به شرح و بررسی «برازش، مرگ پنهان یک استراتژی معاملاتی» می‌پردازیم.

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

– – –

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

01-برازش ناخواسته یا اصطلاحا overfitting
01-برازش ناخواسته یا اصطلاحا overfitting

از اتکای بیش از حد بر روی پارامتر های بپرهیزید

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

برای مثال در صورتی که استراتژی شما عملکرد خوبی با استفاده از پریود 14 برای اندیکاتور RSI از خود نشان داده باید نتایجی نسبتا مشابه را با دوره ی محاسباتی 21 و 7 نیز داشته باشد. در غیر این صورت عملکرد استراتژی شما با احتمال بالایی دچار overfitting یا برازش است. به نمودار زیر رابطه ی میان تغییر یکی از پارامتر ها و سود کل را آشکار می‌ کند توجه کنید. هرچند سود کل معیار مورد اعتمادی برای پیدا کردن پارامتر های منتخب نیست اما این مثال به درک شما از این روش تشخیص برازش عملکرد کمک خواهد کرد.

02-برازش ناخواسته یا اصطلاحا overfitting
02-برازش ناخواسته یا اصطلاحا overfitting

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

03-برازش ناخواسته یا اصطلاحا overfitting
03-برازش ناخواسته یا اصطلاحا overfitting

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

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

 

بهینه‌یابی پیشروی پارامتر ها

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

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

 

اضافه کردن نویز به داده

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

04-برازش ناخواسته یا اصطلاحا overfitting
04-برازش ناخواسته یا اصطلاحا overfitting

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

05-برازش ناخواسته یا اصطلاحا overfitting
05-برازش ناخواسته یا اصطلاحا overfitting

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

 

تست پایداری بر روی بازار های مشابه

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

 

ایجاد تاخیر در سفارش های ورود و خروج

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

 

جابجایی سفارش های شرطی

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

 

درجه ی اوج نمودار بازده ها

بر اساس آموزش بهینه یابی به طور معمول برای ارائه‌ی برجستگی، از درجه اوج مضاعف استفاده می‌شود که مشاهده‌ی یک توزیع غیر نرمال را آسان تر می‌کند KE = K –3 به طوری که K معادل درجه اوج معمول و KE معادل درجه اوج مضاعف می‌باشد.

درصورتی که درجه اوجی با مقدار بالاتر از 7 یا 8 برای نمودار توزیع بازده استراتژی مشاهده کردید باید بلافاصله به برازش عملکرد استراتژِی خود مشکوک شوید. چرا که به زبان ساده این موضوع نشان دهنده ی وجود تعداد زیادی معامله با سود پایانی یکسان است که چنین اتفاقی به طور  معمول در معاملات واقعی نادر است.

– – –

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

– – –

در مقاله‌ی بعدی به بررسی «بهینه‌یابی‌ و بک‌تست، یک روح در دو بدن» می‌پردازیم.

برازش، مرگ پنهان یک استراتژی معاملاتی

برازش، مرگ پنهان یک استراتژی معاملاتی
برازش، مرگ پنهان یک استراتژی معاملاتی

در مقاله‌‌ی پیشین از سری مقالات مرتبط با بهینه یابی به شرح و  بررسی «بهینه‌یابی و ذات استراتژی معاملاتی» پرداختیم.، در این مقاله به شرح و بررسی «برازش، مرگ پنهان یک استراتژی معاملاتی» می‌پردازیم.

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

– – –

در این مقاله نخست به این سوال خواهیم پرداخت که برازش یا overfitting چیست در مقالات قبلی اشاره های جزئی به این اصطلاح داشتیم که در این مقاله بسیار دقیق تر و عمیق تر به آن خواهیم پرداخت.

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

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

01-برازش، مرگ پنهان یک استراتژی معاملاتی
01-برازش، مرگ پنهان یک استراتژی معاملاتی

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

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

(ER(Empirical Risk) / TR(True Risk

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

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

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

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

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

02-برازش، مرگ پنهان یک استراتژی معاملاتی
02-برازش، مرگ پنهان یک استراتژی معاملاتی

 

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

– – –

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

– – –

در مقاله‌ی بعدی به بررسی «چگونه برازش ناخواسته یا اصطلاحا overfitting را در بک‌تست یک استراتژی معاملاتی تشخیص دهیم؟» می‌پردازیم که به راه های تشخیص برازش خواهیم پرداخت و به زودی محصولاتی مرتبط با تحلیل و بهینه‌یابی استراتژی های معاملاتی در اختیار شما عزیزان قرار خواهد‌ گرفت.

بهینه‌یابی و ذات استراتژی معاملاتی

بهینه‌یابی و ذات استراتژی معاملاتی
بهینه‌یابی و ذات استراتژی معاملاتی

در مقاله‌‌ی پیشین از سری مقالات مرتبط با بهینه یابی به شرح و  بررسی «یک دور رقص با ساده انگاری» پرداختیم.، در این مقاله به شرح و بررسی «بهینه‌یابی و ذات استراتژی معاملاتی» می‌پردازیم.

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

– – –

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

01-بهینه‌یابی و ذات استراتژی معاملاتی
01-بهینه‌یابی و ذات استراتژی معاملاتی

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

در این پروسه باید به سوالات مهمی پاسخ داد. :
• از آنجا که در تعداد پارامتر ها محدودیت داریم (مقاله ی یک دور رقص با ساده انگاری) باید بهینه‌یابی را برای چند پارامتر و کدام پارامتر ها اجرا کنیم؟ دوره ی میانگین متحرک؟ دوره ی زمانی RSI ؟…
دوره ی بک تست برای هر یک از مجموعه های کاندید چه مدتی است؟ 1 سال؟ 1 ماه؟…
معیار انتخاب مجموعه پارامتر های مطلوب چیست؟ پارامتر هایی با بیشترین سود؟ پارامتر هایی با کم ترین دوره‌ی افول سرمایه؟…
چگونه متوجه می‌شویم که بهینه‌یابی دچار برازش نیست و در معاملات واقعی همبستگی نشان خواهد داد؟
و بسیاری از سوالات دیگر همه و همه سوالاتی هستند که پاسخ به آن ها ضروریست. هنگامی که پروسه ی بهینه یابی به شکل اصولی و با پاسخی دقیق به هریک از این سوالات اجرا شود تبدیل به ابزار سنجشی قدرتمند خواهد شد. اما چرا؟ استراتژی های معاملاتی برای من به سه دسته تقسیم می‌شوند :
1. استراتژی های مرغوب
2. استراتژی های گوشه
3. استراتژی های نامرغوب

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

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

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

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

02-بهینه‌یابی و ذات استراتژی معاملاتی
02-بهینه‌یابی و ذات استراتژی معاملاتی

– – –

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

– – –

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

یک دور رقص با ساده انگاری

یک دور رقص با ساده انگاری
یک دور رقص با ساده انگاری

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

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

– – –

امروز خیلی کوتاه با معادله‌ای حاصل کار یکی از تحسین برانگیزترین نوابغ جهان آشنا خواهیم شد

01-یک دور رقص با ساده انگاری
01-یک دور رقص با ساده انگاری

«… در ازای از بین رفتن مقدار مشخص ماده، مقدار مشخصی انرژی تولید می‌شود. …»

تصویری که مشاهده می‌کنید مربوط به یکی از مشهور ترین معادلات ریاضی و فیزیک یک معادله‌ی عظیم نگاشته شده است. یک فرمول کوتاه با شرح زیر :

02-یک دور رقص با ساده انگاری
02-یک دور رقص با ساده انگاری

این معادله نرخ تبدیل ماده (m) به انرژی (E) را تبیین می کند. مفهوم آن به زبان ساده  این است که در ازای از بین رفتن مقدار مشخص ماده، مقدار مشخصی انرژی تولید می‌شود. تمام ماهیت وجودی این معادله متشکل از دو متغیر  و یک عدد از پیش شناخته شده یعنی سرعت نور است.

هنگامی که در دبیرستان مشغول به تحصیل بودم یکی از اساتید فیزیک که در مقطع دکتری فلسفه‌ی علم تحصیل می‌کرد جمله ای گفت که مدت ها ذهن من را مشغول کرد. او گفت که «نیوتون یک ساده‌انگار بود و همین مسئله نشان دهنده‌ی نبوغ اوست.»

« ساده و کافی ترکیبی نبوغ آمیز است. …»

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

سال ها قبل فیلسوفی به نام ولیام اکام اصلی را مطرح کرد که با وجود منتقدینش هنوز سنگ بنای محکمی برای گسترش علم و تولید دانش محسوب می‌شود. این اصل مهم را که با نام تیغ اکام (occam’s razor) می‌شناسیم به در این جمله خلاصه می‌شود:
بین دو توجیه متفاوت برای یک مجموعه از مشاهدات همیشه توجیه ساده‌تر را انتخاب کن.

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

«باید چیز هارا تا جای ممکن ساده ساخت، اما نه ساده تر.» / منسوب به آلبرت انیشتین

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

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

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

برای درک بهتر این مفهوم شما را به  این کتاب ارجاع می‌دهم. :

The Signal and the Noise

By Nate Silver

Why So Many Predictions Fail-but Some Don’t

– – –

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

– – –

در مقاله‌ی بعدی به بررسی «بهینه‌یابی و ذات استراتژی معاملاتی» می‌پردازیم.

سبد خرید
هیچ محصولی در سبد خرید وجود ندارد!
خرید را ادامه دهید