نوید شیرمحمدی
نوید شیرمحمدی
خواندن ۶ دقیقه·۴ ماه پیش

معاملات الگوریتمی و یادگیری ماشینی (فصل اول)

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

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


تکامل معاملات الگوریتمی

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

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

شرکتای بزرگی مثل رنسانس تکنولوژیز و دی. ای. شاو، با این روش کلی پول پارو کردن. مزایای این مدل معامله کردن اینه که:

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

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

با یادگیری ماشین میشه خودکار، یکسری مدل برای پیش‌بینی ارزش سهام شرکتا ساخت و میتونیم داده‌های متنوعی را بررسی کنیم.


فرآیند معاملات الگوریتمی

خب، حالا فرضا تا اینجا را خونده باشی و به سرت زد که ما هم شاید بتوانیم....

کلی به موضوع نگاه کنیم، کاری که قراره انجام بدیم چند تا مرحله داره:

  • جمع‌آوری داده: باید از چند تا منبع یه مش داده بگیریم. مثلا اگه قراره بورس تهران را تحلیل کنیم، باید اطلاعات نمادهای بورس ایران، اطلاعیه‌های کدال (مثلا صورت‌های مالی شرکتا و سهامداراشون) و اینجور جاها را بررسی کنیم و ازشون داده بگیریم. اگه بورس آمریکا را میخوایم، از sec.gov و یاهو فایننس و اینجور جاها داده بگیریم. و ....
  • تحقیق: برای تحلیل داده‌ها کلی مدل و فرمول/اندیکاتور هست. خیلی از این مدل‌ها و اندیکاتورها هم پارامترهای مختلف دارند که باید تنظیم کرد. اینکه چقدر به سیگنال هر اندیکاتور هم بخوایم اعتماد کنیم مهمه. توی این مرحله باید بشینیم دستی یا با یه کد اینا را دربیاریم. مثلا 100 تا اندیکاتور رایگان توی talib هست، این مدل تنسورفلو هم از فلان رفیقمون گرفتیم و 10 تا پارامتر داره، فلان شرکتا را هم دوست داریم سهامشون را معامله کنیم و این جور چیزا. تو این مرحله فقط میخوایم بدونیم چه گزینه‌هایی داریم.
  • بک تستینگ: بعد از اینکه خوب گزینه‌هامون را شناختیم، حالا از داده‌هامون استفاده میکنیم تا ببینیم پارامترهای فاز تحقیق را چی بزنیم تا بیشتر سود کنیم. اینجا با یه کدی چیزی شروع میکنیم عددا مختلف را بذاریم توی فرمولامون و ببینیم فرضا توی دو ماه گذشته با این فرمول و پارامترها چقدر سود میکردیم.


چالش‌های معاملات الگوریتمی

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

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

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

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


نتیجه‌گیری

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

معاملات الگوریتمییادگیری ماشینپایتونبورسترید
شاید از این پست‌ها خوشتان بیاید