پیش بینی قیمت سهام با استفاده از یادگیری ماشین

  • 2022-08-29

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

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

همچنین بخوانید

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

  • تجزیه و تحلیل سهام: تجزیه و تحلیل اساسی در مقابل فنی
  • قیمت سهام به عنوان داده های سری زمانی و مفاهیم مرتبط
  • پیش بینی قیمت سهام با تکنیک های متوسط حرکت
  • آشنایی با LSTMS
  • پیش بینی قیمت سهام با مدل LSTM
  • افکار نهایی در مورد روشهای جدید ، مانند ESN

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

تجزیه و تحلیل سهام: تجزیه و تحلیل اساسی در مقابل تجزیه و تحلیل فنی

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

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

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

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

      : آماری که نشان دهنده روند قیمت سهام است، : روند حرکتی 50 روزه قیمت سهام.

    قیمت سهام به عنوان داده های سری زمانی

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

    به دلیل ماهیت متوالی داده های سری زمانی، ما به راهی برای تجمیع این توالی اطلاعات نیاز داریم. از بین تمام تکنیک‌های بالقوه، شهودی‌ترین آنها MA با توانایی هموارسازی نوسانات کوتاه‌مدت است. در بخش بعدی به جزئیات بیشتر خواهیم پرداخت.

    مقالات مرتبط

    تجزیه و تحلیل مجموعه داده ها

    برای این تمرین نمایشی، از قیمت های بسته شدن سهام اپل (نماد علامت AAPL) از 21 سال گذشته (1999-11-01 تا 2021-07-09) استفاده خواهیم کرد. داده های تجزیه و تحلیل از Alpha Vantage بارگیری می شود، که یک API رایگان برای داده های تاریخی و بلادرنگ بازار سهام ارائه می دهد.

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

    برای آموزش مدل ، ما از قدیمی ترین 80 ٪ داده ها استفاده خواهیم کرد و 20 ٪ جدید را به عنوان مجموعه آزمایش نگه داشتن ذخیره می کنیم.

    ایجاد یک پروژه نپتون

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

    اکنون ، بیایید یک پروژه برای این تمرین خاص ایجاد کنیم و آن را "سهامدار" نامگذاری کنیم.

    معیارهای ارزیابی و عملکرد یاور

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

    ، جایی که n = تعداد نقاط زمانی ، در = قیمت واقعی / واقعی سهام ، ft = مقدار پیش بینی شده / پیش بینی.

    RMSE تفاوت بین مقادیر پیش بینی شده و واقعی را نشان می دهد ، در حالی که MAPE (٪) این تفاوت را نسبت به مقادیر واقعی اندازه گیری می کند. به عنوان مثال ، یک مقدار MAPE 12 ٪ نشان می دهد که میانگین اختلاف بین قیمت سهام پیش بینی شده و قیمت واقعی سهام 12 ٪ است.

    در مرحله بعد ، بیایید چندین کارکرد یاور را برای تمرین فعلی ایجاد کنیم.

    • داده های قیمت سهام را به دنباله آموزش X و مقدار خروجی بعدی y تقسیم کنید ،
    • RMSE و MAPE (٪) را محاسبه کنید ،
    • معیارهای ارزیابی را برای تجزیه و تحلیل فنی محاسبه کنید و به نپتون وارد شوید (با arg. logneptune = true) ،
    • روند قیمت سهام را ترسیم کرده و طرح را به نپتون وارد کنید (با arg. با arg. logneptune = true) ،

    پیش بینی قیمت سهام با تکنیک متوسط (MA)

    MA یک روش محبوب برای صاف کردن حرکات تصادفی در بورس سهام است. مشابه یک پنجره کشویی ، یک کارشناسی ارشد متوسط است که در مقیاس زمان/دوره ها حرکت می کند. با افزودن نقاط داده جدید ، نقاط داده قدیمی تر کاهش می یابد.

    دوره های متداول به ترتیب 20 روزه ، 50 روزه و 200 روزه برای سرمایه گذاری کوتاه مدت ، میان مدت و بلند مدت است.

    دو نوع کارشناسی ارشد توسط تحلیلگران مالی بیشتر ترجیح داده می شوند: کارشناسی ارشد ساده و نمایی MA.

    کارشناسی ارشد ساده

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

    ، جایی که p n = قیمت سهام در زمان n ، n = تعداد نقاط زمانی.

    برای این تمرین ساخت یک مدل SMA ، ما از کد پایتون زیر برای محاسبه SMA 50 روزه استفاده خواهیم کرد. ما همچنین یک SMA 200 روزه را برای اندازه گیری خوب اضافه خواهیم کرد.

    در پروژه نپتون ما ، معیارهای عملکرد را در مجموعه آزمایش مشاهده خواهیم کرد. RMSE = 43. 79 ، و mape = 12. 53 ٪.

    علاوه بر این ، نمودار روند زیر پیش بینی های 50 روزه و 200 روزه SMA را در مقایسه با مقادیر بسته شدن سهام واقعی نشان می دهد.

    Stock prediction SMA

    تعجب آور نیست که ببینیم SMA 50 روزه از نظر حرکات متوسط (کوتاه مدت) ، شاخص روند بهتری نسبت به SMA 200 روزه است. با این وجود ، هر دو شاخص پیش بینی های کمتری نسبت به مقادیر واقعی دارند.

    من

    متفاوت از SMA ، که وزن مساوی را به تمام نقاط داده های تاریخی اختصاص می دهد ، EMA ، کوتاه برای میانگین متحرک نمایی ، وزن های بالاتری را برای قیمت های اخیر ، یعنی نقاط داده دم MA 50 روز در مثال ما اعمال می کند. میزان ضریب وزنی به تعداد دوره های زمانی بستگی دارد. فرمول محاسبه EMA:

    جایی که p t = قیمت در زمان t ،

    n = تعداد نقاط زمانی در EMA ،

    و ضریب وزنی K = 2/(N+1).

    یکی از مزیت های EMA نسبت به SMA این است که EMA نسبت به تغییرات قیمت پاسخگوتر است و همین امر باعث می شود برای تجارت کوتاه مدت مفید باشد. در اینجا اجرای Python از EMA وجود دارد:

    با بررسی معیارهای عملکردی که در نپتون ردیابی شده است ، ما RMSE = 36. 68 و MAPE = 10. 71 ٪ داریم که به ترتیب بهبودی از 43. 79 و 12. 53 ٪ SMA برای RMSE و MAPE است.

    نمودار روند حاصل از این مدل EMA همچنین دلالت بر این دارد که از SMA بهتر است.

    Stock prediction EMA

    مقایسه عملکرد پیش بینی SMA و EMA

    کلیپ زیر مقایسه SMA و EMA در کنار هم در نپتون را نشان می دهد. خطوط آبی و صورتی به ترتیب SMA و EMA هستند.

    آشنایی با LSTMS برای داده های سری زمانی

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

    همچنین بخوانید

    به طور خلاصه ، مؤلفه اصلی برای درک یک مدل LSTM حالت سلول (C T) است که نشان دهنده خاطرات کوتاه مدت و بلند مدت داخلی یک سلول است.

    Stock prediction LSTM

    منبع

    برای کنترل و مدیریت وضعیت سلول ، یک مدل LSTM شامل سه دروازه/لایه است. شایان ذکر است که "دروازه ها" در اینجا می توانند به عنوان فیلترهایی رفتار شوند تا اطلاعات را در (به یاد داشته باشید) یا خارج شود (فراموش می شود).

    Stock prediction LSTM

    منبع

    همانطور که از نام آن پیداست، دروازه فراموش تصمیم می گیرد که کدام اطلاعات را از وضعیت سلول فعلی دور بریزد. از نظر ریاضی، یک تابع سیگموئید را برای خروجی/برگرداندن مقداری بین [0، 1] برای هر مقدار از حالت سلول قبلی اعمال می‌کند (Ct-1). در اینجا "1" نشان دهنده "به طور کامل عبور است" در حالی که "0" نشان دهنده "کاملاً فیلتر کردن" است.

    Stock prediction LSTM

    منبع

    برای انتخاب اینکه کدام اطلاعات جدید در وضعیت سلول فعلی اضافه و ذخیره شود استفاده می شود. در این لایه، یک تابع سیگموئید برای کاهش مقادیر در بردار ورودی (i t) پیاده سازی می شود و سپس یک تابع tanh هر مقدار را بین [-1، 1] (Ct) له می کند. ضرب ماتریس عنصر به عنصر i t و C t نشان دهنده اطلاعات جدیدی است که باید به وضعیت سلول فعلی اضافه شود.

    Stock prediction LSTM

    منبع

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

    برای درک دقیق تر LSTM، می توانید این سند را بررسی کنید.

    با دانستن نظریه LSTM، باید تعجب کنید که چگونه در پیش بینی قیمت سهام در دنیای واقعی عمل می کند. در بخش بعدی، با ساختن یک مدل LSTM و مقایسه عملکرد آن با دو مدل تحلیل تکنیکال: SMA و EMA، متوجه خواهیم شد.

    پیش بینی قیمت سهام با مدل LSTM

    ابتدا باید یک آزمایش نپتون اختصاص داده شده به LSTM ایجاد کنیم که شامل پارامترهای فوق مشخص شده است.

    سپس، داده‌های ورودی را برای تنظیم مدل LSTM مقیاس‌بندی می‌کنیم و آن را به مجموعه‌های قطار و آزمایش تقسیم می‌کنیم.

    چند نکته:

    • ما از StandardScaler استفاده می کنیم، به جای MinMaxScaler همانطور که قبلاً دیده اید. دلیل آن این است که قیمت سهام همیشه در حال تغییر است و هیچ مقدار واقعی یا حداکثری وجود ندارد. استفاده از MinMaxScaler منطقی نیست، اگرچه این انتخاب احتمالاً در پایان روز به نتایج فاجعه‌باری منجر نخواهد شد.
    • داده های قیمت سهام در قالب خام آن را نمی توان مستقیماً در مدل LSTM استفاده کرد. ما باید آن را با استفاده از تابع از پیش تعریف شده «extract_seqX_outcomeY» تبدیل کنیم. به عنوان مثال، برای پیش بینی قیمت 51، این تابع بردارهای ورودی 50 نقطه داده قبل را ایجاد می کند و از قیمت 51 به عنوان مقدار نتیجه استفاده می کند.

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

    فراپارامترهای مدل و خلاصه به نپتون وارد شده است.

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

    زمان محاسبه معیارهای عملکرد و ورود آنها به نپتون.

    در نپتون ، شگفت آور است که می بینیم مدل LSTM ما به RMSE = 12. 63 و MAPE = 2. 37 ٪ دست یافته است. پیشرفت فوق العاده ای از مدل های SMA و EMA!

    نمودار روند ، پوشش تقریباً کامل از قیمت بسته شدن پیش بینی شده و واقعی را برای مجموعه آزمایشات ما نشان می دهد.

    Stock prediction summary

    ممکن است مفید باشد

    مقایسه مدل های SMA ، EMA و LSTM

    آیا LSTM منابع محاسباتی و حافظه زیادی را در اختیار دارد؟از این گذشته ، این یک الگوریتم پیچیده تر از مدل های تجزیه و تحلیل فنی سنتی مانند SMA یا EMA است. اگر مدل LSTM برای اجرای منابع بسیار بیشتری به منابع بیشتری نیاز داشته باشد ، مقیاس مناسب خواهد بود ، درست است؟

    خوشبختانه ، نپتون به طور خودکار این اطلاعات را برای ما نظارت می کند.

    همانطور که می بینیم ، CPU و استفاده از حافظه در بین این سه مدل نسبتاً نزدیک است. مدل LSTM منابع بیشتری نسبت به مدل های MA مصرف نمی کند.

    افکار نهایی در مورد روشهای جدید

    ما در مثال پیش بینی قیمت سهام اپل در مقایسه با مدل های سنتی MA ، مزیت LSTM ها را مشاهده کرده ایم. مراقب باشید که تعمیم در سایر سهام را انجام دهید ، زیرا برخلاف سایر سری های زمانی ثابت ، داده های بورس اوراق بهادار کمتر به یک فصلی و هرج و مرج تر است.

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

    برای پاسخگویی به پویایی هرج و مرج بازار سهام ، شبکه های دولتی Echo (ESN) پیشنهاد شده است. به عنوان یک اختراع جدید در خانواده RNN (شبکه های عصبی مکرر) ، ESN از یک لایه پنهان با چندین نورون در حال جریان و به هم پیوسته است. این لایه پنهان به عنوان "مخزن" که برای ضبط اطلاعات تاریخ غیر خطی داده های ورودی طراحی شده است ، گفته می شود.

    Schema of echo state

    طرحواره یک شبکه حالت اکو (ESN)

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

    اگر علاقه مند به کسب اطلاعات بیشتر در مورد این روش شناسی هستید ، مقاله اصلی Jaeger و Haas را بررسی کنید.

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

    امیدوارم از خواندن این مقاله به همان اندازه که من از نوشتن آن لذت بردم لذت برده باشید! کد/اسکریپت های کامل را می توانید در مخزن Github من در اینجا پیدا کنید، و پروژه فعلی نپتون ما برای مرجع شما در اینجا موجود است.

ثبت دیدگاه

مجموع دیدگاهها : 0در انتظار بررسی : 0انتشار یافته : ۰
قوانین ارسال دیدگاه
  • دیدگاه های ارسال شده توسط شما، پس از تایید توسط تیم مدیریت در وب منتشر خواهد شد.
  • پیام هایی که حاوی تهمت یا افترا باشد منتشر نخواهد شد.
  • پیام هایی که به غیر از زبان فارسی یا غیر مرتبط باشد منتشر نخواهد شد.