چگونه من از یادگیری ماشین برای تجارت در بازار سهام استفاده می کنم

ساخت وبلاگ

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

B ACK در سال ارشد دانشکده من برای اولین بار توسط یک دوست به بازار سهام معرفی شدم. یادم است که سهام خریداری شده توسط YouTuber (نه باهوش ترین چیز) و بازگشت 100 ٪ در طی چند ساعت. این تجارت آنقدر به یاد ماندنی بود که من هنوز سهام را به یاد می آورم. نماد تیکت Aeti بود. واضح است که این شانس مبتدی بود ، زیرا من نمی دانستم چه کاری انجام می دهم. از آن زمان من وقت و هزینه زیادی را در بازارهای مالی سرمایه گذاری کرده ام و سهم نسبتاً خوبی از سود و زیان داشتم. اگرچه ، من نسبتاً موفق بوده ام ، اخیراً فهمیدم که اگر نه به خاطر احساساتم ، می توانستم موفق تر باشم.

از زمان این کشف ، من به دنبال راه هایی برای کاهش احساسات خود در هنگام سرمایه گذاری و تجارت بوده ام. من فهمیدم بهترین راه برای خلاص شدن از احساسات ، ایجاد یک ربات تجاری است. پس از تحقیق در چندین استراتژی تجارت الگوریتمی ، تصمیم گرفتم با استفاده از یک مدل یادگیری ماشین اساسی ، رگرسیون لجستیک (LR) مدل خودم را ارائه دهم.

ایجاد استراتژی ..

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

شکل 1: عملکرد قیمت سهام اپل (نماد تیکر AAPL) از سال 2018 تا 2021. نقاط سبز حداقل های محلی (امتیاز پایین) و نقاط قرمز حداکثر محلی (امتیازات بالا) هستند

در شکل 1 ، عملکرد روزانه سهام اپل را از سال 2018 تا 2021 مشاهده می کنید. نقاط سبز حداقل مقادیر محلی هستند و نقاط قرمز حداکثر مقادیر محلی هستند. بنابراین قصد من استفاده از ML و پیش بینی اینکه آیا یک نقطه داده یک نقطه سبز (دسته 0) یا یک نقطه قرمز (دسته 1) است. هدف این است که اگر مدل یک نقطه سبز را پیش بینی کند و وقتی قیمت سهام درصدی افزایش می یابد ، به سادگی خریداری کنیم.

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

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

مدل ML

همانطور که در بالا ذکر شد ، مدل یادگیری ماشین که من استفاده کردم رگرسیون لجستیک (LR) بود. اگر با LR آشنا نیستید ، می توانید با کلیک بر روی اینجا ، نوت بوک آموزش من را بررسی کنید.

اول ، مشکل ما یک مشکل طبقه بندی باینری با دو خروجی هدفمند است. یعنی ، حداقل های محلی (دسته 0 ، "نقاط سبز") و حداکثر محلی (دسته 1 ، "نقاط قرمز"). بعد باید ورودی های مدل را تعیین کنیم. یک ایده بسیار ساده استفاده از قیمت سهام و حجم به عنوان ورودی به مدل LR و پیش بینی اینکه آیا این حداقل محلی است یا حداکثر محلی است. با این حال ، قیمت و حجم سهام اطلاعات بسیار کمی برای پیش بینی چیزی پیچیده به عنوان جهت سهام است. بنابراین ، من علاوه بر این چهار پارامتر ورودی دیگر را در مدل خود درگیر کردم.

  • قیمت سهام عادی - به جای استفاده از قیمت سهام ، من از قیمت سهام عادی به عنوان اولین پارامتر ورودی خود استفاده کردم. عملکرد قیمت سهام معمولاً توسط یک شمعدان مانند شکل 2 نشان داده می شود. روز (اگر نمودار روزانه را مانند شکل 1 در نظر بگیریم). به منظور آسان تر کردن ، من یک مقدار واحد بین 0 و 1 ایجاد کردم که هر چهار این مقادیر را نشان می دهد. این مقدار توسط معادله 1. محاسبه شده است. روزمزیت استفاده از چنین ارزشی این است که حاوی اطلاعات مربوط به عملکرد قیمت کل روز در مقایسه با استفاده از یک مقدار واحد مانند نزدیک یا میانگین روز است. همچنین این مقدار به تقسیم سهام حساس نیست.
  • حجم - پارامتر دوم مورد استفاده در مدل حجم روزانه سهام بود. این پارامتر میزان سهام معامله شده (خریداری و فروخته شده) را در یک روز خاص نشان می دهد.
  • ضریب رگرسیون 3 روزه - پارامتر بعدی ضریب رگرسیون 3 روزه بود. این با انجام رگرسیون خطی به سه روز گذشته قیمت های بسته محاسبه شد. این نشان دهنده جهت سهام در سه روز گذشته است.
  • ضریب رگرسیون 5 روزه - یک پارامتر مشابه با ضریب رگرسیون 3 روزه. به جای سه روز در اینجا ، پنج روز استفاده کردم.
  • ضریب رگرسیون 10 روزه - همانند فوق ، اما از رگرسیون 10 روزه استفاده کرد. این مقدار نشان دهنده جهت قیمت سهام در ده روز گذشته است.
  • ضریب رگرسیون 20 روزه - همانند فوق ، اما از رگرسیون 20 روزه استفاده کرد.

شکل 2: باز ، بسته ، زیاد و کم کنه سهام. منبع-https://analyzingalpha.com/open-high-lew-close-stocks

آموزش و اعتبار سنجی مدل

بعد از تعریف مدل خود ، از TD Ameritrade API برای جمع آوری داده های تاریخی برای آموزش مدل استفاده کردم. سهام مورد استفاده برای ایجاد مجموعه داده ، سی شرکت Dow 30 و بیست شرکت برجسته دیگر S& P 500 بود. داده های آموزش و اعتبار سنجی بین سالهای 2007 تا 2020 (از جمله). داده های آزمایش از سال 2021 بود.

به منظور تهیه داده های آموزش و اعتبار سنجی ، برای اولین بار نقاط داده را پیدا کردم که یک نقطه خرید (دسته 0 یا نقاط سبز در شکل 1) یا یک نقطه فروش (دسته 1) را نشان می دهد. این کار توسط یک الگوریتم ایجاد شده برای جستجوی نقاط محلی و حداکثر انجام شده است. پس از انتخاب نقاط داده ، داده های حجم جمع آوری و پارامترهای عادی قیمت و پارامترهای رگرسیون محاسبه شد. شکل 3 نمونه ای از داده های ورودی را نشان می دهد.

شکل 3: حجم ، مقدار عادی ، 3_reg ، 5_reg ، 10_reg ، 20_reg پارامترهای ورودی هستند و هدف خروجی است. اگر Target 0 باشد ، ردیف داده ها را از یک نقطه خرید (حداقل محلی) نشان می دهد و اگر ردیف 1 را نشان دهد ، یک نقطه فروش (حداکثر محلی) است.

پس از تهیه داده ها ، من از بسته Scikit-Lea برای تقسیم داده ها در مجموعه های قطار و اعتبار سنجی استفاده کردم و مدل LR را آموزش دادم. مدل LR از پارامترهای ورودی استفاده کرده و مقدار هدف را پیش بینی می کند.

نتایج اعتبار سنجی و تجزیه و تحلیل

مجموعه اعتبار سنجی شامل 507 نمونه داده بود. مدل LR کاملاً آموزش دیده قادر به پیش بینی داده های اعتبار سنجی با دقت 88. 5 ٪ بود.

به نظر می رسد این دقت مدل در ابتدا بسیار قانع کننده است. بنابراین ببینیم که چگونه این مدل در سال 2021 در سهام عملکردی انجام می دهد. برای این کار من داده هایی را از گلدمن ساکس (سهام GS) انتخاب کردم و با استفاده از مدل LR آموزش دیده ، جهت سهام را در هر روز پیش بینی کردم. نتایج در شکل 4 نشان داده شده است.

شکل 4: نتایج آزمایش برای GS Ticker Ticker. نقاط سبز نشانگر امتیاز خرید هستند و نقاط قرمز نشان دهنده نقاط فروش پیش بینی شده توسط مدل ما است.

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

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

در شکل 5 می توانید ماتریس سردرگمی نتایج اعتبار سنجی را مشاهده کنید. 29 مورد وجود دارد که مدل ما در دسته 0 (نقطه خرید/حداقل محلی) پیش بینی شده است که در واقع یک دسته 1 (حداکثر نقطه فروش/حداکثر محلی) بود. اینها ارزشهای مثبت کاذب هستند (به دروغ منفی ها را به عنوان مثبت شناسایی می کنند. همچنین به یاد داشته باشید که در مورد ما مثبت می خرند). اگر استراتژی را به یاد بیاوریم ، هدف مدل من یافتن نقاط خرید با استفاده از مدل ML بود. بنابراین ما می توانیم سعی کنیم این مثبت های کاذب را کاهش دهیم و اطمینان حاصل کنیم که مدل با اطمینان زیاد امتیاز خرید را پیش بینی می کند. ما می توانیم این کار را با تغییر آستانه مدل LR خود انجام دهیم.

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

بنابراین برای اینکه مطمئن شوم مدل من خرید امتیاز را با اطمینان بیشتری پیش بینی می کند. آستانه مدلم را به 0. 03 تغییر دادم.(توجه داشته باشید که این فقط یک مثال است. بعداً می توانیم آستانه را تغییر دهیم تا مدل را تنظیم کنیم تا عملکرد خوبی داشته باشد). اکنون می توانید ماتریس سردرگمی جدید را در شکل 6 ببینید.

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

حالا بیایید از آستانه جدید استفاده کنیم و امتیاز خرید سهام گلدمن ساکس در سال 2021 را دوباره ترسیم کنیم.

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

تست برگشت و نتایج

در مرحله بعد، استراتژی خود را بر روی داده های بازار سهام در سال 2021 آزمایش کردم. من یک شبیه ساز سهام و یک اسکریپت تست برگشت ایجاد کردم که هر روز فرصت های خرید را در DOW 30 با استفاده از مدل LR و یک آستانه (t) مشخص می کند. اگر سهام موجود باشد، شبیه ساز سهام را می خرد و سهام را تا زمانی که به درصد معینی سود (g)، درصد ضرر معین (l) یا فروش پس از مدت معینی از روز (d) برسد، نگه می دارد. شبیه سازی های پس آزمایی نهایی چهار پارامتر (t، g، l، d) داشتند و هدف به حداکثر رساندن سود بود.

من همچنین با تغییر این پارامترها چهار نوع سرمایه گذار ایجاد کردم.«معامله گر بی صبر»، «دارنده متوسط»، «تاجر نوسان صبور» و «میمون»

  • معامله گر بی صبر - این نوع معامله گر سهام را برای مدت زمان بسیار کوتاهی می خرد و نگه می دارد. معامله گر همچنین به دنبال سودهای کوچک است. این معامله گر از ضرر هم می ترسد، بنابراین معامله گر تمایل دارد سهام را در ازای ضرر بفروشد اگر سهام حتی اندکی کاهش یابد. در نهایت این معامله گر سهام هایی را انتخاب می کند که آستانه بالایی دارند تا پس از خلاص شدن از شر سهام فعلی خود، به سرعت سهام دیگری را پیدا کنند. بنابراین، پارامترهای این نوع معامله گر عبارتند از t = 0. 3، g = 0. 005، l = 0. 001 و d = 3.
  • دارنده متوسط - این نوع معامله گر سهام را برای مدت زمان متوسطی می خرد و نگه می دارد. معامله گر به دنبال سهامی با اطمینان بالا است، بنابراین ارزش آستانه به سمت پایین می رود. معامله گر همچنین به دنبال سودهای بالاتر است و در مقایسه با معامله گر بی صبر، تحمل بیشتری برای ضرر دارد. برای این نوع معامله گر پارامترها t = 0. 1، g = 0. 03، l = 0. 03 و d = 10 است.
  • معامله گر نوسان بیمار - همانطور که کلمه "نوسان" نشان می دهد ، این نوع معامله گر تمایل دارد سهام را طولانی تر نگه دارد. همچنین معامله گر دوست دارد سهام را با احتمال موفقیت بالا انتخاب کند. بنابراین آستانه برای این نوع معامله گر بسیار کم است. همچنین این معامله گر به فروش سهام برای خسارات کوچکتر و حرکت به سهام مختلف اعتقاد دارد. پارامترهای این نوع معامله گر T = 0. 05 ، G = 0. 04 ، L = 0. 003 و D = 21 است.
  • میمون - میمون نوع معامله گران است که در بورس سهام جدید هستند. آنها تمایل به انتخاب سهام غیر منطقی دارند. بنابراین از هیچ استراتژی برای انتخاب سهام استفاده نکنید. این نوع سرمایه گذاران به طور تصادفی سهام را انتخاب می کنند و هر زمان که احساس کنند به طور تصادفی آنها را می فروشند.

حالا بیایید آزمایش مجدد را انجام دهیم و ببینیم که چهار سرمایه گذار چگونه عمل می کنند. این شبیه سازی ها بر اساس داده های 2021 است و به هر سرمایه گذار 3000 دلار به عنوان تعادل شروع آنها داده می شود. عملکرد هر نوع سرمایه گذار در پایان سال 2021 سنجیده می شود.

شکل 8: ارزش کل سرمایه گذاری در طول سال 2021. مانده شروع برای هر نوع سرمایه گذار 3000 دلار بود.

شکل 8 ، نتایج نحوه عملکرد چهار سرمایه گذار را نشان می دهد."معامله گر نوسان بیمار" توانسته است با کسب 47. 77 درصد سود در پایان سال 2021 به دنبال بیشترین سود حاصل شود و پس از آن معامله گر بی تاب با سود 30. 41 ٪. همانطور که انتظار می رفت ، معامله گر غیر منطقی "میمون" با افزایش 13. 72 ٪ کمترین بازده را دارد.

شکل 9: توطئه های نوار برنده/از دست دادن برای "معامله گر نوسان بیمار" (در بالا) و "معامله گر بی تاب" (در زیر)

شکل 9 توطئه های نوار برنده/ضرر را برای "معامله گر نوسان بیمار" و "معامله گر بی تاب" نشان می دهد. همانطور که انتظار می رود ، معامله گر نوسان بیمار مقدار کمی از معاملات را انجام داده و ضرر و زیان را در اسرع وقت کاهش داده است. معامله گر بی تاب مبلغ بالاتری از معاملات را به خود اختصاص داده است و غالباً ضرر کرده است. این همچنین می تواند در جدول 1 مشاهده شود.

این نتایج حاکی از آن است که هنگام استفاده از مدل LR ، خرید سهام با اعتماد به نفس بالا مفید است و آنها را برای مدت طولانی تر از خرید مکرر سهام با اعتماد به نفس کمتر نگه می دارد. با این حال ، ما همچنین باید توجه داشته باشیم که در سال 2021 بازار سهام دستاوردهای بزرگی را دید و این نتایج به طور بالقوه می تواند نتیجه آن باشد. واضح است که حتی سرمایه گذار غیر منطقی ، "میمون" ، بازده 13. 72 ٪ را نشان می دهد که نشان می دهد بازارها در سال 2021 سخاوتمندانه بوده اند.

مقایسه با S& P 500

در مرحله بعد ، من عملکرد دو مدل سرمایه گذار برتر خود را با عملکرد S& P در سال 2021 مقایسه کردم.

شکل 10: مقایسه دو مدل (سرمایه گذار بی تاب و معامله گر نوسان بیمار) با سرمایه گذاری 3000 دلار به S& P 500 در سال 2021.

شکل 10 عملکرد را نشان می دهد اگر 3000 دلار در ژانویه به S& P 500 سرمایه گذاری شود. نتایج نشان می دهد که این سرمایه گذاری 26. 9 ٪ افزایش یافته است. این در مقایسه با بازده 47. 77 ٪ توسط "معامله گر نوسان بیمار" و بازده 30. 41 ٪ توسط "معامله گر بی تاب" کم است. علاوه بر این ، "Trader Swing بیمار" از بازگشت 35 ٪ اپل (نماد Ticker AAPL) بهتر است و با بازگشت 49 ٪ مایکروسافت (نماد تیکر MSFT) در سال 2021 به سر می رود.

افکار دیگر و کارهای آینده

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

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

علاوه بر این ، ما می توانیم متغیرهای ورودی بیشتری مانند ضرایب رگرسیون 30 روزه ، سرمایه های بازار ، قیمت به نسبت های درآمد را برای افزایش پیش بینی مدل معرفی کنیم. ما همچنین می توانیم از تنظیمات Lasso تا متغیرهای ورودی صفر استفاده کنیم که برای پیش بینی قابل توجه نیستند و وزن بیشتری در مورد مهم دارند. علاوه بر این ما همچنین می توانیم مدل های ML دیگری مانند ماشین های بردار پشتیبانی و جنگل های تصادفی را آزمایش کنیم تا ببینیم چگونه عملکرد تغییر می کند. سرانجام ، ما همچنین می توانیم از تکنیک های یادگیری عمیق مانند LSTM استفاده کنیم که قبلاً در پیش بینی مالی استفاده شده بود.

نتیجه

در این پست وبلاگ ، من توضیح داده ام که چگونه من از یک مدل ساده ML ، رگرسیون لجستیک ، برای تجارت در بازار سهام استفاده می کنم. نتایج تست پشتی استراتژی به نظر می رسد با حداکثر 47. 77 ٪ بازده ضرب و شتم S& P 500 در سال 2021. اگرچه ، نتایج آزمایش برگشت نشان می دهد که این مدل سودآور است ، باید در زمان واقعی آزمایش شود تا در واقع سودآوری سود را تأیید کنداستراتژیدر حال حاضر ، من یک ربات معاملاتی ترکیبی را اجرا می کنم (از آنجا که این مدل در زمان واقعی با پول واقعی اجرا می شود ، مطمئن شدم که می توانم هر زمان و به راحتی سفارشات را در این ربات قرار دهم. از این رو کلمه "هیبرید") با استفاده از استراتژی در حساب کاربری های تعاملی منواداگرچه ، به نظر می رسد که این مدل همانطور که انتظار می رود کار می کند ، هنوز هم برای حدس زدن خیلی زود است. من امیدوارم که وقتی توانستم آن را برای مدت زمان قابل توجهی اجرا کنم ، نتایج را منتشر کنم.

از شما بسیار سپاسگزارم برای خواندن! در صورت داشتن هرگونه سؤال یا نظر به من اطلاع دهید.

P. S-من در حال حاضر در حال ساخت مخزن GitHub با کد برای استخراج داده ها از TD و آزمون پشتی هستم. من پیوند را در اینجا ارسال خواهم کرد که آن را در GitHub بارگذاری کردم.

آموزش تحلیل گری...
ما را در سایت آموزش تحلیل گری دنبال می کنید

برچسب : نویسنده : ملیکا زارعی بازدید : 38 تاريخ : پنجشنبه 14 ارديبهشت 1402 ساعت: 11:45