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

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

Burton Malkiel در کتابش به نام ” A Random Walk Down Wall Street” که در سال ۱۹۷۳ منتشر شد، پیشنهاد می کند: “اگر یک میمون با چشم بسته، دارت هایی را به سمت آگهی های فروش سهام روزنامه ها پرتاب کند، انتخاب های او به همان خوبی خواهد بود که یک کارگزار متخصص خرید و فروش سهام می توانست انجام دهد”.

گرچه تکامل باعث هوشمندتر شدن بشر در زمینه ی انتخاب سهام نشده، اما تئوری چارلز داروین می تواند در این زمینه کاربرد داشته باشد!

الگوریتم ژنتیک چیست؟

الگوریتم های ژنتیک، روش های حل مسئله ای (یا هیوریستیک) هستند که از روند تکامل طبیعی تقلید می کنند. برخلاف شبکه های عصبی مصنوعی (ANN) که برای رفتار کردن شبیه به نورون های مغزی طراحی شده اند، این الگوریتم ها از مفهوم “انتخاب طبیعی” برای تعیین بهترین روش حل یک مسئله استفاده می کنند. در نتیجه، الگوریتم های ژنتیک (GA) معمولاً برای بهینه سازی استفاده می شوند و پارامترها را برای مینیمم یا ماکسیمم کردن برخی از معیارهای بازخورد تنظیم می کنند. سپس همین پارامترهای بهینه سازی شده، به صورت مستقل و یا در ساختار شبکه های عصبی به کار گرفته می شوند.

در بازارهای مالی، رایج ترین کاربرد الگوریتم های ژنتیک در یافتن بهترین ترکیب مقادیر برای پارامترها در یک دستور معاملاتی است و از این الگوریتم ها می توان در مدل های شبکه های عصبی مصنوعی که برای انتخاب سهام و شناسایی معاملات طراحی شده اند، استفاده کرد. بررسی های مختلف نشان داده اند که این روش ها واقعا می توانند مؤثر و کارآمد باشند. از جمله این تحقیقات، می توان به گزارش یک تحقیق انجام شده توسط مؤسسه ی راما (Rama) به نام “الگوریتم های ژنتیک: مبدأ تکامل بازار سهام” اشاره کرد که در سال ۲۰۰۴ منتشر شد و همچنین گزارشی با نام “کاربرد الگوریتم های ژنتیک در بهینه سازی استخراج داده های بازار سهام” که در همان سال با همکاری گروهی از محققان چینی منتشر شد.

الگوریتم های ژنتیک چگونه کار می کنند؟

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

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

در این فرآیند، سه نوع عملیات ژنتیکی قابل تصور است:

  • ترکیب (Crossover): که معادل با باز تولید و تولید مثل در زیست شناسی است که باعث می شود فرزند، صفات خاصی را از والدینش به ارث بگیرید.
  • جهش (Mutation): که معادل با جهش بیولوژیکی است و با اعمال تغییرات کوچک تصادفی، باعث حفط تنوع ژنتیکی از یک نسل جمعیتی به نسل بعدی می شود.
  • انتخاب (Selection): مرحله ای است که طی آن مجموعه ژن های یک فرد خاص از بین یک جمعیت برای تولید مثل (از طریق بازترکیب یا ترکیب) انتخاب می شوند.

این سه عملیات، طی یک روند پنج مرحله ای صورت می پذیرند:

  1. کمیت دهی به یک جمعیت تصادفی اولیه، که هر کروموزوم داری n مقدار طول است و n معادل تعداد پارامترها می باشد. یعنی یک تعداد تصادفی از پارامترها که هر یک n تعداد عنصر دارند، ساخته می شود.
  2. انتخاب کروموزوم هایی (یا پارامترهایی) که باعث افزایش نتایج مطلوب می شوند (فرضا افزایش سود خالص).
  3. اعمال عملگرهای جهش یا ترکیب بر روی والدین منتخب و تولید یک نسل.
  4. بازترکیب نسل تولید شده با جمعیت فعلی بوسیله عملگر انتخاب برای ایجاد یک جمعیت جدید.
  5. تکرار مراحل ۲ تا ۴

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

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

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

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

برازش منحنی (Curve Fitting) یا طراحی یک سیستم معاملاتی بر اساس داده های تاریخی، به جای شناسایی رفتارهای تکرار شونده، یکی از ریسکهای بالقوه ی پیش روی معامله گرانی است که از الگوریتم های ژنیتک استفاده می کنند. هر سیستم معاملاتی که از الگوریتم های ژنتیک استفاده می کند باید قبل از استفاده ی واقعی، به طور مجازی (بر روی کاغذ) فوروارد تست انجام دهد.

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

حرف آخر

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

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *