تقریبا ۷ ماه پیش بود که با یکی از دوستانم شروع به مطالعه بازارهای مالی کردیم. هدف ما خرید و فروش و کسب درآمد بود. البته شروع کار ما با بازارهای مالی کریپتو مثل بیت کوین و اتریوم بود. تو این ۷ ماه خیلی چیزها از بازارهای مالی یاد گرفتم و فکر میکنم الان به سطحی از دانش رسیدهام که بتوانم یک سری از تجربیاتم رو با بقیه به اشتراک بگذارم. بنابراین قصد دارم در پستهای مختلف در مورد کارهایی که انجام دادهایم و نتایجی که بدست آوردیم یکم حرف بزنم. یکی از بزرگترین چالشهایی که تا الان با اون مواجه شدم، تحلیل بازارهای مالی هست. یک مساله بسیار پیچیده با پارامترهای تاثیرگذار بسیار زیاد و طبیعتی غیر قابل پیشبینی در اکثر مواقع. ما به عنوان یک مهندس و تحلیلگر داده بدون شناخت مفاهیم مالی و بازارهای مالی، سعی کردیم با داشتن دادههای بازارهای مالی، آن را تحلیل کنیم. یک چالش بسیار بزرگ.
قبل از اینکه ادامه بدهم میخواهم مشخص کنم که ما از چه جهتی وارد بازی شدیم. در حالت کلی تحلیلگران بازارهای مالی به دو دسته تقسیم میشوند. به دسته اول تحلیلگران بنیادی و به دستهی دوم تحلیلگران تکنیکال گفته میشود. به صورت خیلی خلاصه در دستهی اول شما به اخبار و جهتگیریهای اقتصادی و مالی در سطح ملی و جهانی برای تحلیل نیازمند هستید. برای مثال اگر یک تحلیلگر بنیادی هستید و در بورس ایران فعالیت میکنید، باید بتوانید تحلیل کنید که افزایش قیمت دلار و قطع واردات توع خاصی از فولاد به کشور در ماههای آینده باعث افزایش تولید فولاد داخلی و احتمالا افزایش درآمد شرکت فولاد خوزستان خواهد شد. در نتیجه ارزش سهام شرکت فولاد خوزستان ممکن است در ماههای آینده رشد خوبی داشته باشد. برای اینکه تحلیلگر بنیادی خوبی باشید نیاز دارید که به منابع اطلاعات موثق دسترسی داشته باشید. در همهجای دنیا دسترسی به این نوع اطلاعات سخت است. و معمولا سازمانهای بزرگ و صندوقهای سرمایهگذاری بزرگ و کارگذاریها عوامل نفوذی و به اصطلاح مخبر های خود را در سازمانهای مختلف برای جمعآوری داده دارند. دسته دوم تحلیلگران که به تحلیلگران تکنیکال معروف هستند، سعی میکنند که با مطالعه سیگنالهای قیمت بازارهای مختلف و سهامهای مختلف، تصمیمهای درست هرید و فروش بگیرند. آنها معتقد هستند که هر اتفاقی در خارج بازار مالی تاثیر خودش را بر روی سیگنال قیمت نشان میدهد و اگر شما بتوانید که سیگنال قیمت را به درستی تحلیل کنید میتوانید در خرید و فروش در بازارهای مالی موفق باشید. این دسته از تحلیلگران با مطالعه رفتار سیگنال و شاخصهایی که استفاده میکنند سعی میکنند که صعود و نزول بازار را با احتمال خوبی پیشبینی کنند و بر اساس آن پیشبینیها اقدام به خرید یا فروش بکنند.
ما در مرحله اول با روش تحلیل تکنیکال شروع به تحلیل بازار مالی کردیم. این کار رو با بازار بیت کویین شروع کردیم. نمودار زیر سیگنال قیمت بیت کوین رو در یک سال گذشته نشان میدهد.
در تحلیل تکنیکال یک سری شاخص یا اندیکاتور وجود دارد که یک نوع تحلیل بر روی سیگنال قیمت میباشند. این شاخصها انواع مختلفی دارند. تعداد بسیار زیادی اندیکاتور استاندارد وجود دارد. علاوه بر آن اشخاص مختلف و تحلیلگران بزرگ نیز اندیکاتورهای جدید و ترکیبی مخصوص به خود را برای تحلیل بازار دارند. این اندیکاتورها را میتوان در چند دسته تقسیمبندی کرد. یک سری از این اندیکاتورها برای تحلیل ترند استفاده میشوند. یعنی به زبان ساده سعی میکنند ترند حرکت قیمت را نشان دهند. یک سری از اندیکاتورها برای تحلیل حجم معامله هستند. این نوع از اندیکاتورها بر اساس تعداد معاملات و حجم پولی معاملات سعی میکنند اطلاعاتی را در مورد رفتار بازار در حال حاضر و آینده بدهند. یک سری از اندیکاتورها برای تحلیل نوسانات بازار هستند. منظور از نوسان بازار بالا و پایین رفتن قیمتها در بازههای زمانی مشخص است. این نوع اندیکاتورها سعی میکنند که میزان نوسان بازار را تحلیل کرده و به کمک تحلیلهای دیگر خرید و فروشهای بهتری را انجام دهند.
در مرحله اول ما سعی کردیم با مطالعه بر روی این اندیکاتورها با تحلیلهای مختلف و قدرت تحلیل آنها آشنا شویم و نقاط قوت و ضعف هر کدام را پیدا کنیم. گفتن این نکته مهم است که هیچ اندیکاتوری وجود ندارد که همیشه تحلیل درست انجام دهد. برای همین باید با ترکیب اندیکاتورهای مختلف که هر کدام جنبههای مختلفی از دادهها را مشاهده میکنند میزان دقت تصمیمگیری را افزایش داد. فرآیند یادگیری اندیکاتورهای مختلف، پیادهسازی آنها در پایتون و گرفتن تست از دادههای گذشته تقریبا ۳ ماه زمان از ما گرفت. به علاوه که در این مدت یک سیستم توسعه داده شد که بتواند بر اساس الگوریتم و استراتژی مشخص در بازار مالی واقعی خرید و فروش را به صورت خودکار انجام دهد.
به نظر من بعد از گذشت حدود ۴ ماه و شناخت نسبی ما از بازارهای مالی و ابزارهایی که در دست داشتیم تازه شروع چالش ما اتفاق افتاد. از اینجا به بعد کار تبدیل به حل یک مساله پیچیده شد. ما مدلهایی داشتیم که میتوانستند بر اساس اطلاعات اندیکاتورهای مختلف و اندیکاتورهای جدیدی که خودمان توسعه داده بودیم خرید و فروش انجام دهند. هر کدام از استراتژیهایی که تست میکردیم مزایا و معایب متفاوتی داشتند. چالش اول پیدا کردن یک متریک دقیق برای اندازهگیری کارایی و دقت استراتژیها بود. به بیان سادهتر با چه متری باید تشخیص دهیم که کدام استراتژی معاملاتی بهتر است؟ برای مثال فرض کنید که دو استراتژی مختلف دارید که در حال خرید و فروش در یک بازار مالی هستند. یکی از آنها ۷۰ درصد تصمیماتش برای خریدهای سودده درست بوده است و در نهایت بعد از یک سال ۸۰ درصد سود خالص داشته است. استراتژی دیگر در ۶۱درصد مواقع تصمیم درست برای خریدهای سودده داشته ولی در پایان سال ۹۷ درصد سود خالص داشته است. کدام یک از این استراتژیها بهتر است؟ این سوال را نمیتوان به راحتی پاسخ داد. بسته به اینکه میزان ریسکپذیری شما در معاملات چقدر است و چگونه میخواهید سرمایه را مدیریت کنید، پاسخ میتواند متفاوت باشد. باید یک متر دقیق برای اندازهگیری دقت و کارایی عملکرد استراتژیها داشته باشیم. پیدا کردن این متر یک چالش بزرگ بود. چالش اصلی بعدی بهبود استراتژیها برای تصمیمگیریهای بهتر بود. اینکه شما بتوانید در اکثر مواقع در جاهای درست خرید و در جاهای درست فروش داشته باشید، کار بسیار دشواری است. دلیل اصلی هم این است که بازارهای مالی تقریبا غیر قابل پیشبینی هستند. یعنی ممکن است تمام اطلاعات صعود بازار را نشان دهند ولی به دلایلی بازار ناگهان نزول داشته باشد. یا اینکه ممکن است بازار در عرض ۲ ساعت پرشهای بسیار بزرگ و یا نزولهای بسیار بزرگ داشته باشد که هیچ اندیکاتوری توانایی تشخیص در لحظهی آن را نداشته باشد. برای مثال به شکل زیر نگاه کنید.
به این نوع نمودارها به اصطلاح کندل(candle) گفته میشود. هر کدام از این ستونهای رنگی در نمودار یک معنای دارند و حاوی ۴ اطلاعات میباشند. هر کدام از این ستونها مربوط به ۴ ساعت است. این نمودار نشان میدهد که در ابتدای این ۴ ساعت قیمت کجا بوده است، در انتهای ۴ ساعت قیمت کجا بوده است. و در طول ۴ ساعت بیشترین و کمترین قیمت چه بوده است. در این پست قصد توضیح نمودارهای کندل را ندارم. اگر به مودار بالا خوب نگاه کنید میبینید که در یک بازهی ۴ ساعته قیمت افت بسیار شدیدی داشته است( در حدود ۱۰۰۰ دلار) و دو روز بعد در عرض ۴ ساعت دوباره قیمت ۱۰۰۰ دلار صعود داشته است. تشخیص این صعود و نزولهای شدید که در یک بازهی زمانی کوتاه اتفاق میافتد به کمک اندیکاتورها کار بسیار سخت و پیچیدهای است. این مشکل را میتوان به کمک تحلیل سیگنال قیمت در بازههای زمانی کوچکتر تا حدود بسیار خوبی برطرف کرد. برای مثال یک کندل ۴ ساعته نزولی زمانی که با بازههای زمانی ۵ دقیقه دیده میشود به صورت شکل زیر در میآید.
تحلیل بازار مالی در تایم فریمهای کوچک بسیار پر خطا میباشد. یکی از چالشهای دیگر مجتمع کردن تایم فریمهای مختلف برای تصمیمگیری بهتر بوده است.
مرحلهی بعدی کاری که انجام شد استفاده از مدلهای یادگیری ماشین برای پیشبینی قیمت بوده است. بر اساس دادههای سیگنال قیمت و تحلیلهایی که از اندیکاتورها بدست آمد، مجموعه دادهای ساخته شد که ابعاد مختلف داده را نمایش میدهد. این مرحله از کار هنوز به صورت کامل به پایان نرسیده و مدل کردن مساله برای یدست آوردن دقت مورد نظر در پیشبینی برای بازار مالی بسیار پیچیده است. چالش دیگر همین مدل کردن مساله پیشبینی قیمت به کمک ابزار یادگیری ماشین بوده است.
در پستهای آینده سعی میکنم هر کدام از این چالشها را با جزییات بیشتر توضیح بدهم تا شاید کمکی باشه برای کسانی که در این زمینه فعالیت میکنند و با این چالشها برخورد کردهاند.