در خصوص معاملات الگوریتمی و کلاً الگوریتمی و هرچه داخلش کلمهی «الگوریتم» باشد، در اینترنت تا جایی که انگشتان دست و نفس یاری کند، مطلب برای خواندن هست؛ درست یا نادرستاَش بماند! اما، اعتقاد مجموعهی مهد سرمایه همیشه این بوده است که هر مطلبی اگر واقعاً آموزنده و باکیفیت باشد، اول از همه به رایگان عرضه نخواهد شد، و دوم، پس از خواندن یا تماشای آن مطلب، چیزی به دانستههای خواننده، قطعاً، اضافه خواهد شد.
در خصوص بورس، بازارهای مالی، و معاملات الگوریتمی، خواندن یا دیدن یک محتوای درست و مفید، شما را حداقل یک قدم از ضرر دادن در بازارهای مالی دور، و یک قدم به ثبات بیشتر در کارتان و کسب سود با ریسک کمتر، نزدیک خواهد کرد.
در این مطلب، ما هم مثل دیگران، معاملات الگوریتمی و نکات پیرامون آن را برای شما توضیح خواهیم داد. بیان تمام مطالب و نکات بسیار ریز همراه یا جزئیات کامل، امکانپذیر است، اما در قالب یک کتاب دو هزار صفحهای همراه با صد ساعت فیلم آموزشی! پس سعی میکنیم تا حد امکان عصارهی مطلب را در این مقاله برای شما بازگو کنیم، بهطوری که نه سیخ بیان ما بسوزد، نه کباب مطالعه و درک شما از معاملات الگوریتمی!
هر کاری، با قدم اول شروع میشود. قدم اول ما…
گام اول) استراتژی معاملاتی چیست؟
اول از همه در یک جمله خیال خودمان و خودتان را راحت کنیم. در این مقاله، هر کجا اسم استراتژی معاملاتی آمد، منظور همان ربات معاملهگر، یا اکسپرت، یا EA یا Expert Advisor یا در ترجمهی بسیار غلط آن، مشاور حرفهای است. اینکه چرا عبارت Expert Advisor را بهجای ربات معاملهگر، مشاور حرفهای ترجمه کردهاند، خدا عالم است!
اما استراتژی معاملاتی یا همان ربات معاملهگر چیست و در معاملات الگوریتمی چه جایگاهی دارد؟ برای پاسخ به این سوال، با دو مقولهی جداگانه سر و کار داریم. هر دو مورد را برای شما توضیح میدهیم.
1) معامله کردن به روش دستی
معامله کردن به روش دستی یا همان روش سنتی، از ابتدا بوده و معاملهگران خرد و کلان، سالیان سال به این روش معامله میکردند. درست، است سنگ بنای بازارهای مالی ابتدا اینطور چیده شده بود. منتها، قرار نیست یک روش یا سبک همیشه تا ابد درست باشد و درست بماند!
رباتی هم نداریم که بتواند همیشه عالی کار کند و سود بدهد. دلیلش همین تغییر سبکها و نگرشها و شیوهها و طرز تفکر معاملهگران و نسلهای جدید و غیره است.
خانهی پُرش، تا سالهای 2014 یا 2015 میشد به روشهای دستی (یا اصطلاحاً Manual Trading)، معامله کرد و سودهای نسبتاً خوبی هم بهدست آورد. اما امروزه با ورود هوش مصنوعی و نرمافزارهای مبتنی بر هوش مصنوعی به معاملات:
- سرعت انجام کارها هزاران برابر شده است.
- دقت بسیار بالا رفته و خطای انسانی به مراتب کم شده است.
- هوشمند شدن سیستمها، زحمت، استرس، و نگرانی تریدرها را بسیار کم کرده است.
- سطح بازارهای مالی بهشدت بالا رفته و بازارها کارایی بیشتری پیدا کردهاند.
به همین دلایل و صدها دلیل دیگر، معامله کردن به روش سنتی دیگر به کار ما نمیآید. همراه نشدن با موج جدید و سبک جدید در بازارهای مالی، یعنی شکست حتمی و خروج از بازار با ضرر دادن و ناامیدی!
یک سوال ساده برای برطرف شدن ابهام ذهنی: تریدری را در نظر بگیرید که بهترین نرمافزارهای تحلیلی و آماری را در کنار بهروزترین اخبار دنیا در اختیار دارد و با کاملترین و حرفهای ترین بروکرها و پلتفرمها کار میکند.
چطور انتظار دارید با متاتریدر (که یک پلتفرم قدیمی است) و با معاملات دستی، عملکرد بهتری نسبت به چنین فردی داشته باشید؟ او سریعترین دونده جهان با بهترین کفشها است و ما بدون کفش و حتی یک دست لباس!
پس، معامله کردن به روش دستی را برای همیشه فراموش میکنیم و سراغ معاملات الگوریتمی میآییم.
2) استراتژی به زبان ساده
ساعت 11 از خواب بیدار شدهام، و با همان سر و وضع پای سیستم، روبهروی مانیتور مینشینم، و سهمی را انتخاب میکنم و سریع دکمهی خرید را میزنم و ان شاءالله سود میکنم و خدا بزرگ است! اگر هم ضرر کردم که خب شانس ندارم و گردش ایام همیشه به ضرر من بوده و تقصیر بقیه است و سری بعدی حتماً جبران میکنم!
پس استراتژی کجاست؟ برای اینکه از تهران تا شیراز سفر کنیم، قطعاً وسایل لازم را برمیداریم و همه چیز را چک میکنیم و با خیال آسوده سفر را آغاز میکنیم. پس چرا برای معامله کردن اینطور عمل نمیکنیم؟ حال آنکه مسافرت نرفتن ضرری به ما نمیزند ولی نداشتن برنامهی درست برای معامله کردن یعنی کشتن پول و داراییمان.
چه کسی حاضر است پولش را دور بریزد؟
استراتژی در بازارهای مالی یعنی داشتن یک برنامهی منظم برای معامله کردن. اینکه بدانیم چه وقت معامله کنیم؟ چه سهمی را انتخاب کنیم؟ حجم معاملات چقدر باشد؟ چه میزان ضرر قابل قبول و منطقی است؟ چه انتظاری در سودآوری داشته باشیم؟ کجا وارد معامله شویم؟ کجا از معامله خارج شویم؟
همین نکتهی بسیار مهمی است که عدهای فکر میکنند فقط ورود به معامله مهم است، و خروج از معامله اهمیتی ندارد!
استراتژی یعنی داشتن نقشهی راه و در واقع داشتن پاسخی برای تمام سوالات مطرحشده یا هر سوال دیگری.
بسیار خب. میتوانیم اینطور نتیجه بگیریم که اولاً معاملات دستی منسوخ شدهاند و معاملات الگوریتمی جای آنها را گرفتهاند. و دوم، برای موفقیت در بازارهای مالی نیاز به داشتن یک استراتژی معاملاتی داریم.
استراتژی معاملاتی همان ربات معاملهگر است که نقشهی راه را در دل خود دارد و مسیر را قدم به قدم جلو میرود. میداند چه موقع وارد معامله شود. کجا وارد معامله شود؛ و از چه ابزارهایی برای تشخیص ورود به معامله یا خروج از آن استفاده کند. و در نهایت درست و سر وقت از معامله خارج میشود.
در الگوریتم آن حداکثر ضرر قابل قبول تعریف شده است. برای مثال، 100 هزار دلار داریم. و حداکثر ضرر قابل قبول برای ما 20 درصد است. ربات معاملهگر اجازه نمیدهد بیشتر از این ضرر بدهیم.
نکتهی مثبت. قرار نیست تمام داراییمان را از دست بدهیم. کسی هست که بیست و چهار ساعته، بدون خستگی، مراقب سرمایهی ما است.
خب، در گام اول فهمیدیم که برای اصولی کار کردن در بازارهای مالی، نیاز به یک استراتژی معاملاتی یا همان ربات معاملهگر داریم که بسیار بهتر و کاملتر از ما میتواند کارها را پیش ببرد.
عجله نمیکنیم. نکات زیادی هنوز مانده است.
یک مطلب بسیار مهم داخل پرانتزی. هم برای رفع ابهام و پاسخ به سوالی که تقریباً همه در ذهن دارند. هم برای رفرش شدن ذهن خودم و شما.
تفاوت الگوتریدینگ و اتوتریدینگ
دو مفهوم الگوتریدینگ (Algo-Trading) یا همان معاملات الگوریتمی و اتوتریدینگ (Auto-Trading) یا معاملات خودکار، مکرر با هم اشتباه گرفته میشوند. یا اینکه عدهای این دو را یکسان میدانند و عدهای هم طبیعتاً تفاوت این دو مورد را نمیدانند.
بهطور کلی، اتوتریدینگ، بخشی از الگوتریدینگ است و بهنوعی در آن هضم میشود.
الگوتریدینگ، یعنی معاملات الگوریتمی، یعنی استفاده از نرمافزارها و هوش مصنوعی برای تولید استراتژی معاملاتی (که در گام اول صحبتش را کردیم) یا همان ربات معاملهگر. پس کار اصلی ما الگوتریدینگ است. میخواهیم با کمک نرمافزار و هوش مصنوعی در بازارهای مالی معامله کنیم.
وقتی ربات معاملهگر، در بازارهای مالی مشغول معامله کردن است، در واقع معاملات بهصورت خودکار و بدون دخالت انسان انجام میشوند. خودکار انجام شدن معاملات یعنی اتوتریدینگ. همین و نه بیشتر!
پس در واقع اتوتریدینگ یعنی انجام معاملات بهصورت خودکار توسط اکسپرت؛ که این فرآیند قسمتی از الگوتریدینگ است. نکتهی خاص دیگری هم در این زمینه وجود ندارد. جای نگرانی نیست! به همین سادگی.
گام دوم) طراحی سیستم معاملاتی
اما بیایید یک استراتژی معاملاتی را از صفر با هم طراحی کنیم. میخواهیم یک ربات بنویسیم. البته بدون نیاز به دانستن برنامهنویسی. خیلی خوب شد. زبانی که برای طراحی یک ربات یا بهتر بگوییم، یک سیستم معاملاتی نیاز دارید، MQL4 یا MQL5 نام دارد.
برای یادگیری این زبانها مدتی زمان نیاز دارید. شاید 1 سال. علاوه بر این، تحلیل تکنیکال و سایر موارد مربوطه را هم باید بلد باشید. بعد باید بنشینید، با مقداری کاغذ و قلم، ساعتها یا حتی روزها فکر کنید، تست کنید، آزمون و خطا کنید و بالاخره در بهترین حالت بعد از بیست روز کار مداوم و پشت سر هم، یک سیستم معاملاتی را روی کاغذ طراحی کنید.
حالا نوبت به برنامهنویسی و تبدیل این سیستم به کد MQL4 یا MQL5 است. این کار خودش در بهترین حالت یک هفته زمان میخواهد. تازه اگر در برنامهنویسی خطا نکرده باشید و مشکلی وجود نداشته باشد که عموماً اینطور نیست و برنامهنویسها دائماً از خطاهای گاه و بیگاه کلافهاند!
یک ماه، حداقل زمانی است که شما برای طراحی یک سیستم معاملاتی بهصورت دستی (بدون نرمافزار) نیاز دارید. اما در کمال ناباوری نیازی به هیچکدام از اینها ندارید! مگه میشه؟!!!
یک فرمانده در میدان نبرد، باید فرماندهی کند. عموم موارد نیازی ندارد و نباید اسلحه دست بگیرد و در خط مقدم باشد. باید جنگ و سربازان را مدیریت کند. باید استراتژی بچیند. باید فکر کند.
شما هم نقش فرمانده را دارید. نیازی نیست خط مقدم باشید. نیازی ندارید برنامهنویسی را تمام و کمال بلد باشید. وقتی نرمافزار با فقط چهار کلیک، شش هزار خط کد برنامهنویسی را آماده به من تحویل میدهد، چه نیازی به یادگیری برنامهنویسی و نوشتن شش هزار خط کد دارم؟ حال آنکه من در برنامهنویسی احتمال زیاد اشتباه میکنم ولی نرمافزار این شش هزار خط کد را بدون حتی یک اشتباه به من تحویل میدهد! نیازی نیست سرباز باشم. بلکه، در مقام فرمانده، سیستم را رهبری میکنم.
جنگ کافیست. برای طراحی یک سیستم معاملاتی به چه مواد اولیهای نیاز داریم؟
خوشبختانه تمام این مواد اولیه حاضر و آماده هستند و برای استفاده، فقط باید آنها را انتخاب کنیم.
دادههای گذشتۀ سهمها
مورد اول، دیتا (Data) یا همان دادۀ سهمهای مختلف. دیتا در بازارهای مالی حکم مغز برای انسان را دارد. گرچه عدهای از مغزشان هرگز استفاده نمیکنند و با توهم خود-شاخپنداری سرمایۀ خودشان و دیگران را از بین میبرند. ما قطعاً اینگونه کار نمیکنیم.
اما بحث دیتا. برای کشیدن یک نقشه، ابتدا عکسبرداری از منطقه انجام میشود. سپس با کمک ابزارهای مخصوص، پستی و بلندیها و ارتفاعات و درهها شناسایی میشوند، و در نهایت نقشه ترسیم میشود.
دیتا حکم همان عکسبرداری را برای ما دارد. هرچه تعداد عکسها بیشتر باشند، کیفیت نقشه بالاتر خواهد بود. هرچه دیتای طولانیتر و باکیفیتتری در اختیار داشته باشیم، استراتژی یا همان ربات ما کیفیت بیشتری خواهد داشت.
معمولاً دو نوع دیتا داریم. تیک دیتا، بهترین و قویترین و کاملترین نوع دیتا است. تیک دیتای سهمی مانند EUR/USD از سال 2003 تا 2021 یعنی تمام تغییراتی که این سهم از سال 2003 تا 2021 داشته را در اختیار داریم. تمام تغییرات قیمت. بدون از قلم اُفتادن چیزی. طبیعتاً این دیتا حجم بالایی هم دارد.
دیتا به چه درد میخورد؟
وقتی رباتمان را ساختیم، باید آن را تست کنیم تا ببینیم عملکرد این ربات در گذشتۀ بازار چطور بوده است. برای تست کردن یا بهعبارت دیگر، بکتست (تست در گذشته)، باید دیتای کامل و باکیفیت داشته باشیم که گفتیم بهترین نوع آن تیک دیتا است.
دیتا در واقع اولین معیار ارزیابی ما از کیفیت ربات ساختهشده است. البته دهها معیار دیگر داریم که راجع به آنها صحبت خواهیم کرد.
اما در وهلۀ اول، فرض کنید یک ربات داریم که با دیتای سال 2003 تا 2021 بکتست شده و عملکرد قابل قبولی هم داشته است. پس، فعلاً میتوانیم انتظار داشته باشیم که این ربات در آینده هم سودده باشد.
بازارهای مالی همواره در حال تغییر و تحول هستند. اتفاقات سال 2008 تا 2010 و نوسانات شدید بازار در آن زمان، تمام تریدرها و سیستمها را به چالش کشید. اتفاقی که برای فرانک سوئیس در سال 2015 اُفتاد، هنوز هم اثرات خودش را در ذهن تریدرها دارد.
اگر دیتای این سالها را داشته باشیم و ربات ما این سالها را تجربه کند، و در نهایت، باز هم عملکرد خوبی به ما نشان بدهد، این یعنی یک ربات قابل اطمینان و یک استراتژی مستحکم داریم. در نتیجه، هرچه مدت زمان دیتا بیشتر باشد، اعتماد ما به نتیجهی بکتست بیشتر خواهد بود.
پس، نقش دیتا در بازارهای مالی را متوجه شدیم. دیتای تمام سهمها از بهترین منبع دنیا (Dukascopy)، در دسترس شماست. کافیست دیتای مد نظر خود را دانلود کنید.
دانلود دیتای سهمهای بازار فارکس در نرمافزار اَلگویاب
نرمافزار و ابزارهای تحلیلی
کمی قبلتر توضیح دادیم که برای طراحی یک سیستم معاملاتی، اگر برنامهنویسی بدانید و وقت بگذارید، حداقل یک ماه زمان نیاز دارید تا استراتژی و ربات آن را طراحی کنید. یک ماه؟ یعنی اگر 10 ربات برای 10 سهم مختلف بخواهید، باید یکسال وقت صرف کنید؟
خیر. وقتی نرمافزارها هستند، یک ماه تبدیل به چند دقیقه میشود!
برای طراحی سیستمهای معاملاتی، باید و باید، از نرمافزارها و هوش مصنوعی کمک بگیرید. راه دیگری نیست! چقدر قرار است عمر کنیم که بخواهیم سالها را صرف تولید استراتژیهای مختلف کنیم؟ اصلاً حوصلۀ چنین کاری را دارید؟
اما صحبت از نرمافزارها شد. در حال حاضر، بهترین نرمافزار دنیا در زمینۀ تولید استراتژیهای معاملاتی با کمک هوش مصنوعی، نرمافزار استراتژی کوآنت (Strategy Quant) است.
نرمافزار اَلگویاب نیز بر پایۀ همین نرمافزار استراتژی کوآنت توسعه یافته، و امکانات بیشتری در حوزۀ معاملات الگوریتمی به آن اضافه شده است. از جملۀ این امکانات میتوان به شیوههای جدید مدیریت سرمایه در بازارهای مالی، و همینطور اضافه شدن بورس ایران و قابلیت تولید استراتژیهای معاملاتی برای این بازار اشاره نمود.
عملاً با نرمافزار اَلگویاب، میتوانید برای تمام بازارهای مالی در سطح بینالمللی، و همینطور بازار بورس ایران، به آسانی رباتهای معاملهگر تولید کنید.
استراتژیهای ساختهشده با نرمافزار اَلگویاب
در مورد نرمافزار صحبت کردیم، اما یک مرحلهی دیگر از کار ما در طراحی استراتژیهای معاملاتی باقی مانده است: استفاده از ابزارهای موجود برای طراحی رباتهای معاملهگر.
منظور از ابزار چیست؟ منظور از ابزار همان اندیکاتورها و اُسیلاتورها و الگوهای کندلاستیک و موارد مشابه است که در تحلیل تکنیکال قبلاً یاد گرفتهایم.
در نرمافزار اَلگویاب، بخشی تحت عنوان «بلوکهای ساختاری» وجود دارد. در بلوکهای ساختاری، سه قسمت داریم. اول، سیگنالها. این سیگنالها از اندیکاتورها گرفته شدهاند و تمام حالتهای مختلف اندیکاتورها را شامل میشوند. برای مثال، اگر مووینگ اَوریج حالت صعودی داشت… (MA is rising…)، آنگاه در صورت درست بودن (True بودن) این سیگنال، ربات اجازه دارد برای معامله کردن اقدام کند.
تقریباً هر آنچه شما فکرش را بکنید، در بخش سیگنالها وجود دارد و هیچ نوع کاستی در این بخش دیده نمیشود.
دوم، اندیکاتورها. تمام اندیکاتورها و اُسیلاتورهای تحلیل تکنیکال را میتوانید در این قسمت ببینید و از میان آنها انتخاب کنید. انتخاب کنید که از کدام اندیکاتور برای ساخت ربات استفاده شود، و کدام را نمیخواهید. حتی میتوانید اندیکاتوری از بیرون به نرمافزار اضافه کنید.
سوم. بلوکهای ورود استاپ یا لیمیت. در نرمافزار بخشی برای معاملات معوق (Pending) در نظر گرفته شده است. در این بخش میتوانید موارد مربوط به معاملات اِستاپ یا لیمیت را در اختیار داشته باشید.
دست شما برای انتخاب باز است. برای مثال، میتوانید انتخاب کنید آیتمهای پرایس اَکشن (Price Action) را داشته باشید یا نه. هر آنچه در معاملات الگوریتمی نیاز دارید برای شما مهیا شده است. فول امکانات در اختیار شماست.
اما باز هم عجله نمیکنیم. هنوز چند مورد باقی مانده است تا تبدیل به یک تریدر حرفهای در معاملات الگوریتمی شویم.
بلوکهای ساختاری و انتخاب اندیکاتورها برای تولید استراتژی
گام سوم) تست سیستم معاملاتی
تا اینجا، بهعنوان نویسندهی این مطلب، تا حد امکان سعی کردهام تمام مفاهیم را به بیان ساده، و کامل، توضیح دهم. در معاملات الگوریتمی، هر نکتهای هزاران حرف با خودش دارد. پس، قطعاً نمیتوان در یک مقاله حق مطلب را بهجا آورد.
اما مسیر خود را ادامه میدهیم. تا اینجا با مبانی آشنا شدیم، با کمک نرمافزار، هوش مصنوعی و امکانات دیگر، چند استراتژی معاملاتی را طراحی کردهایم. رباتها آمادهاند. همین الان هم میتوانیم آنها را در بازارهای مالی اجرا کنیم. اما نه.
هر محصولی که تولید میشود، باید از فیلتری به اسم کنترل کیفیت عبور کند. فرقی ندارد این محصول نرمافزار باشد، یا فیلتر تصفیه هوا یا مواد خوراکی. در معاملات الگوریتمی هم این مهم را باید رعایت کنیم.
اما کنترل کیفی کار ما به چه صورت است؟ با یک مثال توضیح بدهیم.
رباتی را در نظر بگیرید که در حال حاضر عملکرد خوبی دارد و ما بهعنوان ناظر از این ربات راضی هستیم. اما آینده را نمیتوان پیشبینی کرد! هر اتفاقی ممکن است بیفتد. شاید هفتهی آینده نوسانات بازار بسیار شدید بو عجیب و غریب باشد. رفتار بازار به دلیل انتشار یک خبر مهم، هر لحظه ممکن است تغییر کند. در این شرایط چه باید کرد؟
نوسانات شدید بازار قطعاً به ما لطمه خواهند زد؛ البته اگر آماده نباشیم. راه حل این مورد، استفاده از تستهای استحکام (Robustness) است. کیفیت ربات یا رباتها را قبل از اینکه روی حساب بروکر فعالشان کنیم، با تستهای مختلف ارزیابی میکنیم. بیش از 9 مدل تست مختلف داریم. یکی از این تستها، آزمون اِسپرد است که شرایط بسیار بد و پُرنوسان را برای ربات شبیهسازی میکند.
ربات ما اگر بتواند از این آزمون نمرهی قبولی بگیرد، یعنی خیال ما از بابت نوسانات شدید بازار در آینده تا حد بسیار زیادی راحت است.
به همین ترتیب، برای ریسکها و خطرات دیگری که ممکن است ما را در آینده تهدید کنند، تستهای استحکام مناسب داریم. این تستها، شدیدترین ضربهها را به ربات میزنند تا استقامت آن را بررسی کنند. این ضربهها گاهی چندین برابر شدیدتر از بدترین تصورات ما از آینده است. در کار با نرمافزار خواهید دید که بسیاری از رباتها نمیتوانند تمام تستها را با موفقیت پشت سر بگذارند.
ممکن است از هر 1000 ربات تولیدشده، 20 الی 30 ربات در نهایت، تمام تستها را با موفقیت رد کنند. وجود این تستها خبر بسیار خوبی برای ما است. ایمنی ما در برابر ریسکهای بازارهای مالی، تا حد بسیار مطلوبی تامین شده است. در واقع، سازندههای نرمافزار و حرفهایهای معاملات الگوریتمی فکر همه چیز را از قبل کرده، و لقمهی آماده را در اختیار ما قرار دادهاند.
آنها این تستها را بنا بر تجربه و مطالعات علمی خودشان طراحی کردهاند؛ و طوری طراحی کردهاند که تمام جوانب در نظر گرفته شوند. بنابراین، ما صدها برابر جلو هستیم.
مرحله به مرحله باید تستهای استحکام را انجام دهیم. در هر محله تعدادی از رباتها برچسب «ناموفق» میخورند و از لیست ما حذف میشوند و با رباتهای باقیمانده، سراغ تست بعدی میرویم. در نهایت، رباتهایی که تا انتها سالم میمانند، مجوز حرفهای را دریافت میکنند و میتوانیم با خیال آسوده از آنها استفاده کنیم، یا آنها را به مرحلهی بهینهسازی ببریم.
نمونهای از تستهای استحکام در نرمافزار اَلگویاب
ابزارهای آمارگیری از سیستمهای معاملاتی
تحلیل نتیجهی یکی از تستهای استحکام در نرمافزار اَلگویاب
تستهای استحکام را انجام میدهیم. اما تحلیل نتایج تستها نیز بسیار مهم است. خوشبختانه در نرمافزار نتایج بهصورت کاملاً حرفهای در اختیار ما هستند. استفاده از شکلهای گرافیکی، جدولهای آماری، نمودارها و غیره، تحلیل نتایج استراتژیهای معاملاتی را برای ما بسیار آسان کرده است.
تصویری که در بالا مشاهده میکنید، نتیجهی یکی از تستهای استحکام به اسم تست مونت کارلو است. در این تست، 200 حالت مختلف ربات ما شبیهسازی شده است. همانطور که میبینید، تمام 200 شبیهسازی که هر کدام با یک رنگ مشخص شدهاند، برآیند مثبت را نشان میدهند. این یعنی میشود به این ربات اطمینان کرد.
تستهای استحکام را انجام میدهیم. یک قدم بسیار مهم و هوشمندانه در معاملات الگوریتمی برداشتهایم. خیال ما از بابت بسیاری از ریسکهای موجود در بازارهای مالی راحت شده است.
اما هنوز هم نکاتی هست که در جای خود بسیار مهم هستند و باید حتماً به آنها توجه کنیم. نمیخواهیم خانهای بسازیم که با برداشتن یک آجر کامل تخریب شود!
شاید مسیر معاملات الگوریتمی به نظر بسیار طولانی و سخت بیاید [که الحق همینطور هم هست]، اما در انتهای این مسیر لذت خاصی وجود دارد که در معاملات سنتی به هیچ عنوان نمیتوانید آن را کسب کنید.
گام بعدی در معاملات الگوریتمی، بهینهسازی سیستمهای معاملاتی است.
گام چهارم) ابزارهای بهینهسازی سیستم معاملاتی
قبل از هر چیزی بهینهسازی را تعریف کنیم. البته شاید بسیاری از شما با این مفاهیم کاملاً آشنا باشید. اما بهطور کلی، بهینهسازی یعنی بهروزرسانی ربات معاملهگر برای شرایط جدید بازار.
بازارها همواره در حال تغییر هستند. بازار امروز مثل بازار سال 2015 نیست. بیشتر شدن تعداد مشارکتکنندگان در بازار، بازار نوظهور رمزارزها، حتی تغییرات اقلیمی، همه بر شرایط بازار تاثیر میگذارند.
همانطور که بازار امروز مثل بازار 6 سال قبل نیست، بازار 3 سال آینده هم مثل امروز نیست. نتیجه میگیریم، رباتی که امروز داریم، در بازار امروز عملکرد خوبی از خود نشان میدهد و به خوبی دارد کارش را میکند. اما اگر بازار را از اساس تغییر دهیم، باز هم میتوانیم از این ربات نگونبخت انتظار سوددهی داشته باشیم؟ احتمالاً نه.
برای همین بهینهسازی یا همان Optimization باید در دستور کار ما باشد. بهینهسازی چه چیزی؟ بهینهسازی پارامترهای اکسپرتمان—که البته در این مقاله قصد نداریم در این مورد صحبت کنیم.
در نظر بگیرید در یک جزیره هستید و اطراف شما را تماماً موجهای خروشان دریا فرا گرفته است. هرچه به ساحل این جزیره نزدیکتر باشید، احتمالاً اینکه این امواج کار دست شما بدهند، بیشتر میشود. بهترین و اَمنترین نقطه در این جزیره، وسط جزیره است که شما بیشترین فاصله را از هر طرف با ساحل دارید و دست موجها به شما نمیرسد.
بهینهسازی هم دقیقاً مانند این مثال است: پیدا کردن نقطهی امن در استراتژی معاملاتی تا کمترین صدمه را از اتفاقات غیرمنتظرۀ آینده ببینیم و همزمان با شرایط جدید بازار در آینده خودمان را تطبیق داده باشیم.
مشکل بهینهسازی بیش از حد (Overfitting)
یاد جملهی معروفی از ابن سینا اُفتادم که میگوید: «هر چیزی کمش دارو، متوسطش غذا، و زیادش سم است». این جمله حتی در معاملات الگوریتمی هم کاربرد دارد! بهینهسازی کم، یعنی درجا زدن، و بهینهسازی بیش از حد یعنی از دست رفتن دستاوردها.
مشکلی که بسیاری از تریدرها، حتی حرفهایها، خواسته یا ناخواسته با آن دست به گریبان هستند، بحث بهینهسازی بیش از حد یا curve-fitting یا over-fitting یا over-optimization است. تمام این اصطلاحات به یک چیز اشاره دارند. اینکه ربات من بیش از حد با شرایط فعلی و گذشتهی بازار خود را تطبیق داده است. درست مانند فردی که دلش نمیخواهد صبح از رختخواب بیرون بیاید.
این تطبیق بیش از حد، صد در صد کار دست تریدر خواهد داد. تطبیق بیش از حد یعنی عادت کردن و تغییر عادت هم سخت است و هم دردسر دارد. استراتژی یا همان ربات ما، به شرایط گذشته یا فعلی بازار عادت کرده است، و کوچکترین تغییری را از جانب بازار در آینده نمیپذیرد. این نپذیرفتن تغییر یعنی ضرر شدید یا حتی صفر شدن حساب!
استراتژیهایی که بیش از حد بهینه هستند ممکن است در گذشته (بکتست) یا در حال حاضر نتایج بسیار خوبی را به ما نشان دهند، اما این نتایج برای گذشته و حال هستند. در صورتی این نتایج تکرار میشوند که بازار همیشه مثل امروز رفتار کند. طبیعتاً چنین چیزی نشدنی است! گفتیم بازارها همواره در حال تغییر هستند.
بازارها ثابت نمیمانند. ربات ما هم تغییرات جدید را نمیخواهد. بنابراین، بهینهسازی بیش از حد مساوی است با از دست رفتن سرمایهای که در حسابمان داریم.
همواره باید نهایت دقت و توجه را داشته باشیم که در مسیر معاملات الگوریتمی دچار بهینهسازی بیش از حد نشویم!
برای بهینهسازی، حالتهای مختلفی در نظر گرفته شده است. البته قصد نداریم آنها را اینجا کامل توضیح دهیم. اما بهطور کلی بدانید که در بخش بهینهسازی، با استفاده از هوش مصنوعی، ابتدا پارامترهای هر استراتژی در اختیار شما قرار داده میشود. سپس شما با توجه به تجربه و صد البته آموزشهایی که دیدهاید، پارامترهای همسان را تغییر میدهید.
پشت این تغییر باید منطق و دلیل علمی وجود داشته باشد. کران بالا و پایین یا حداقل و حداکثر میزان تغییر را همراه با گام یا پرش (Step) مشخص میکنید. نرمافزاری مثل اَلگویاب با کمک هوش مصنوعی داخل خودش، اقدام به بررسی تمام حالتهای ممکن میکند. مثال جزیره را به خاطر دارید؟ در اینجا نرمافزار تمام نقاط جزیره یا وجب به وجب آن را بررسی میکند و به ما میگوید بهترین و اَمنترین نقطه کجاست.
در نهایت، نتیجهی بهینهسازی در قالب چند نوع نمودار و همینطور سطح سهبُعدی به شما نشان داده میشود (مانند تصویر زیر).
نتایج بهینهسازی ربات معاملهگر در نرمافزار اَلگویاب
با استفاده از این شکل و سایر اطلاعات دادهشده میتوانید بهترین حالت تنظیم پارامترهای ربات را پیدا کنید. اصطلاحاً بهترین نقطه در جزیره را پیدا کردهاید. در اینجا باز هم با کمک اطلاعات آماری دادهشده میتوانید تحلیلهای مختلفی داشته باشید.
بهینهسازی در معاملات الگوریتمی مبحث بسیار گسترده و پیچیدهای است که ساعتها نه، بلکه سالها میتوان در مورد آن مطالعه کرد و مقاله نوشت. هدف ما در اینجا آشنایی اولیه با این مورد و قرار گرفتن در مسیر درست معاملات الگوریتمی بود.
مطلب بعدی، یک مورد بسیار جذاب است که احتمالاً آن را جایی نشنیدهاید. همهی ما با بکتست آشنایی داریم و زیاد عبارت بکتست را شنیدهایم. اما «فوروارد تست» چطور؟
فوروارد تست
بکتست یعنی نگاه به گذشتهی بازار و تست ربات در گذشته. توضیح دادیم که ربات را روی دیتای تیک بازار برای حداقل 10 سال گذشته به بالا تست میکنیم تا عملکرد و سودآوری آن ربات در گذشته برای ما مشخص شود. و توضیح دادیم که در وهلهی اول این خود معیاری است برای ارزیابی کیفیت استراتژی.
اما فوروارد تست؟ کلمهی Forward به معنی جلوتر یا آینده است. تستی داریم که آینده را برای ما مشخص کند؟
در درجۀ اول خیر. آینده را نمیتوان به هیچ روشی پیشبینی کرد. اما میتوان بر اساس علم و آنچه از استراتژی دیده شده است، تصمیمات مثبتی را برای آینده اتخاذ کرد.
یکی از کارهای بسیار مهم و مثبتی که میتوان انجام داد، و البته این موضوع را در هیچ نرمافزاری یا در هیچ وبسایتی مشاهده نخواهید کرد، بحث واک فوروارد (Walk-Forward) (همان فوروارد تست) و ماتریس واک فوروارد است، که به ما میگوید ربات ما چه زمانی نیاز به بهینهسازی مجدد دارد.
در معاملات الگوریتمی، با استفاده از روشهای پیچیدهی علمی و با کمک ریاضیات میتوانیم این مورد را دقیق بفهمیم.
همان جزیره را در نظر بگیرید. شما اکنون در نقطهی اَمن این جزیره هستید. فرض کنید این جزیره حرکت میکند و نقطهی بهینهی شما دیگر بهینه نیست. در فوروارد تست، کسی هست که به شما میگوید بر اساس محاسبات و پردازشهای انجامشده، برای مثال، در 150 روز آینده میتوانید به فلان نقطهی جزیره بروید و این نقطه آن زمان، بهترین و اَمنترین جا برای شماست.
ماتریس واک فوروارد دقیقاً چنین کاری را در خصوص رباتهای معاملهگر برای ما انجام میدهد. با کمک این ماتریس از قبل میدانیم که چه زمانی نوبت بهینهسازی رباتمان فرا میرسد. بهتر از این میخواهید؟
البته به بهتر از این میتوان رسید اما در حال حاضر علم به ما این اجازه را نمیدهد. قطعاً در آیندهای شاید نه چندان دور تمام این مطالب و روشها قدیمی و منسوخ شوند و روشهای جدیدی در معاملات الگوریتمی پدیدار شوند که امروز حتی اسم آنها را هم نمیدانیم!
شاید حتی معاملات الگوریتمی کاملاً از میان برداشته شود. کسی نمیداند! در هر حال کار ما اینجا غصه خوردن در مورد آینده یا غیبگویی نیست. ما همواره سعی میکنیم با رویکرد علمی و با دلیل و منطق به مسائل و پرسشهای مختلف پیرامون بازارهای مالی پاسخ دهیم.
گام پنجم) پورتفولیو و تست واقعی 99 درصد
تا اینجا کلی راه آمدهایم. استراتژی ساختهایم. آن را تست و بهینهسازی کردهایم. تقریباً به انتهای مسیر ساخت رباتهای معاملهگر در حوزۀ معاملات الگوریتمی رسیدهایم.
دو مبحث مهم مانده است. اولین بحث، بکتست مجدد رباتها برای خاطرجمعی خودمان است. البته این بکتست، اصطلاحاً تست 99 درصد نامیده میشود. در حالت عادی در متاتریدر، دقت بکتست 99 درصد نیست، بلکه در بهترین حالت 90 درصد است. همین 9 درصد اختلاف، طبق تجربه، باعث میشود گاهی یک ربات سودده، کاملاً ضررده نشان داده شود، و بالعکس.
نکتهی دیگر اینکه متاتریدر دیتای تیک بازار را ندارد. خودمان باید دیتای تیک را برای متاتریدر فرآهم کنیم.
بکتست 99 درصد، مبحث کمی پیچیده و زمانبری است که اینجا فرصت نیست برای شما آن را کامل توضیح دهیم. در یک مقالهی جداگانه، به این موضوع کامل میپردازیم و نحوۀ انجام بکتست 99 درصد، که بهترین و دقیقترین و کاملترین نوع بکتست است را کامل توضیح خواهیم داد.
اما پورتفولیو چیست؟
پوتفولیو همان سبد سهام است. عاقلانهترین راه برای کسب سود در بازارهای مالی این است که از تمام فرصتها استفاده کنیم. تمام فرصتها یعنی سرمایهگذاری در تمام بازارهای مالی، مانند بازار فارکس، سهام بینالمللی، بازار رمزارزها، بازار آتی (Futures)، آپشن و … .

برای هر یک از این بازارها میتوان استراتژی مخصوص به خودش را تولید کرد. در نهایت تمام این استراتژیها را در یک سبد سهام میریزیم، تا در کنار یکدیگر، هر کدام روی سهم خودش، کار کند.
نکتهای که در پورتفولیو بسیار مهم است، موضوع همبستگی (Correlation) است.
محاسبهی همبستگی بین استراتژیها در نرمافزار اَلگویاب
این همبستگی هر چقدر کمتر باشد، برای ما بهتر است. فرض کنید 5 ربات معاملهگر دارید. اگر ربات شمارۀ یک ضررده شود، رباتهای دیگر با سود گرفتن این مقدار ضرر را جبران میکنند. این موضوع ارتباط مستقیمی با همبستگی دارد. همبستگی عددی بین یک و منفی یک است. عدد یک، یعنی رباتها کاملاً مثل هم عمل میکنند. اگر ربات شمارۀ یک در ضرر باشد، سایر رباتها نیز در ضرر هستند.
منفی یک، دقیقاً برعکس این موضوع را بیان میکند. رباتها کاملاً مخالف یکدیگر عمل میکنند. بهترین حالت و آن چیزی که ما دنبالش هستیم، همبستگی بین صفر تا چهار-دهم (0 تا 0.4) است. یعنی ضرر یک ربات با سود رباتهای دیگر جبران خواهد شد.
استراتژیها بعد از مرحلهی پورتفولیو، و تایید گرفتن از نظر همبستگی، آمادهاند تا در پلتفرمهای مختلف مانند متاتریدر، تریداِستیشن، سیتریدر، و … اجرا شوند و برای شما معامله کنند.
البته این نکته را هرگز فراموش نکنید که شما همواره باید بر سیستم نظارت کنید. هیچگاه نمیتواند رباتها را به حال خودشان رها کنید و هفتهها سراغی از آنها نگیرید! ما هیچ چیز را قطعی و 100 درصد در نظر نمیگیریم و همواره برای محافظت از خودمان و سرمایۀمان، نظارت کامل و مستمر بر عملکرد رباتها را داریم.
کاربرد هوش مصنوعی در بورس
بهعنوان سخن پایانی، این مطلب را همواره در ذهن خود داشته باشید که در معاملات الگوریتمی رویکرد شما همواره باید هوشمندانه، علمی و مبتنی بر واقعیتها و منطق باشد، نه احساسات، فکر شما، مطلبی که از جایی شنیدهاید، و غیره.
معاملات الگوریتمی کار ماست. و کار ما پیشگویی نیست! بلکه گرفتن تصمیم درست با کمک علم، نرمافزارها، و هوش مصنوعی است. این جمله را همواره ملکهی ذهن خود قرار دهید که بازارهای مالی همیشه 50-50 هستند و هیچ قطعیتی وجود ندارد.
در معاملات الگوریتمی، اولین هدف ما ضرر نکردن و بستن راههای ضرر است. البته هیچوقت نمیتوانیم جلوی ضرر را برای همیشه بگیریم؛ اما میشود ضرر را به طور چشمگیری کاهش داد و با کسب سودهای منطقی و مداوم، اثر ضرر را از بین برد.
تمام مطالبی که برای شما گفتیم، همه را مدیون هوش مصنوعی و ورود آن به عرصهی بازارهای مالی هستیم. بدون هوش مصنوعی هرگز نمیتوانیم تحلیلها، محاسبات، پردازشها و بسیاری از موارد دیگر را انجام دهیم. اگر هم بتوانیم، ماهها یا حتی سالها زمان نیاز دارد!
بدون هوش مصنوعی، بهینهسازی باکیفیت معنی ندارد، واک فوروارد کاملاً منتفی است و در یک کلمه، نرمافزارهای تولید استراتژیهای معاملاتی مانند اَلگویاب یا استراتژی کوآنت کاملاً بلااستفاده خواهند بود.
هوش مصنوعی و الگوریتمهای مختلف آن مانند الگوریتم ژنتیک، هستهی اصلی این نرمافزارها هستند.
حال که چنین امکاناتی را در اختیار داریم، میتوانیم با خیال راحت به تولید استراتژی در بازارهای مالی بپردازیم و در حالی که ریسک بازارهای مالی را تا حد زیادی کاهش دادهایم، یک گام جلوتر از سایرین، همراه با بزرگان دنیا حرکت کنیم.
نکتهی پایانی اینکه، هرگز آموزش دیدن را فراموش نکنید! برای تسلط بر نرمافزارها و مطالب مطرحشده حتماً باید در دورههای آموزشی مناسب شرکت کنید. حرفهایی که در این مطلب بیان شد، تنها اشارهای به اصل موضوع بود. مطالعه، بررسی و متخصص شدن در هر یک از موارد مطرحشده علاوه بر نیاز به ساعتها آموزش، تمرین و تکرار خاص خود را نیز میطلبد.
در شرکت مهد سرمایه، جزء به جزء هوش مصنوعی و رباتهای معاملهگر و نرمافزارهای معاملاتی و صدها نکتهی دیگر را در قالب دورههای آموزشی مختلف آموزش دادهایم که بعد از گذراندن این دورهها تبدیل به یک تریدر حرفهای به تمام معنا در سطح بینالمللی خواهید شد.