آیا می توانیم برای خواندن نمودارهای بازار سهام یک شبکه عصبی آموزش دهیم؟

ساخت وبلاگ

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

واقعیت خنده دار این است که ما در هر دو گروه معامله گران و سرمایه گذاران موفق داریم. بنابراین ، چه کسی درست است و چه کسی اشتباه می کند؟

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

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

برخی از افشای قبل از شروع کار

اول از همه ، من آن را یک مطالعه می نامم ، زیرا واقعاً یک پروژه کامل نیست. من در طی چند آخر هفته روی این کار کار کردم ، فقط برای بازی با Tensorflow و دیدن اینکه آیا امکان تهیه چیز مفید وجود دارد یا خیر.

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

مطالب اساسی در مورد پایتون و یادگیری ماشین

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

TensorFlow یک کتابخانه جامع منبع باز برای یادگیری ماشین است که توسط Google تهیه شده است. مواد آموزشی زیادی برای یادگیری ماشین وجود دارد. بهترین چیزی که تاکنون پیدا کردم یک کتاب است!

نوع شبکه عصبی که من استفاده کردم شبکه عصبی Convolutional (CNN) نامیده می شود و نوع اصلی شبکه مورد استفاده برای دید ماشین است. شما واقعاً نیازی به یادگیری ریاضیات در پشت Convolution ندارید که پیچیده است. تمام آنچه شما باید بدانید این است که از طریق این نوع شبکه ، رایانه ها یاد می گیرند که الگوهای موجود در یک تصویر را پیدا کنند. این الگوهای در مقایسه با الگویی که انسان می بیند می تواند متفاوت باشد. رایانه ها فقط می توانند شماره ها را پردازش کنند و تصاویر هیچ تفاوتی ندارند. هنگامی که ما از CNN برای آموزش یک مدل استفاده می کنیم ، یک کامپیوتر یاد می گیرد که در هر قسمت از تصویر الگوهای پیدا کند.

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

چگونه همه اینها سازماندهی شده است؟

من یک نوت بوک Jupyter را در پلت فرم Google Colab ایجاد کردم. برای به دست آوردن حس بهتر ، فقط باید به آن نگاهی بیندازید و آن را اجرا کنید. این هموار کار خواهد کرد ، اما به آرامی!

این کد همه در Python 3. x است ، از تعداد انگشت شماری از کتابخانه های استاندارد و البته Tensorflow برای قابلیت های شبکه عصبی استفاده می کند.

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

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

به راحتی می توانید پارامترها و فرضیاتی را که من ساخته ام تغییر دهید زیرا آنها از بقیه کد جدا هستند.

پارامترها و فرضیات

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

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

من سعی کردم نظرات کافی را ارائه دهم تا مشخص کنم چه فرضیات ساخته شده و از چه پارامترهایی استفاده می شود.

شما باید بتوانید آزادانه آن پارامترها و فرضیات را تغییر دهید. این روند بسیار ساده است ، یک کپی از نوت بوک Google Colab من را تهیه کرده و آنطور که دوست دارید تغییر دهید.

نوت بوک

حداقل تا آنجا که من می دانم ، Google Colab نمی تواند مستقیماً به متوسط وارد شود! بنابراین من از GitHub Gist به عنوان راهی برای واردات آن استفاده کردم.

همچنین می توانید از طریق این لینک مستقیماً به آن دسترسی پیدا کنید.

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

برای اطمینان از اینکه ما مدل خود را با استفاده از داده هایی که قبلاً ندیده ایم ، بررسی می کنیم ، من از پارامترهای min_date و max_date کلاس مجموعه داده های خود استفاده کردم.

برای داده های آموزش ، ما از 3600 روز گذشته تا 120 روز گذشته از داده های معاملاتی استفاده کردیم. برای داده های اعتبار سنجی ، ما فقط برای 120 روز گذشته از داده های معاملاتی استفاده کردیم.

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

اگر یک مدل موفق پیدا کنیم ، آن را در مورد داده های معاملاتی برای سهام که قبلاً در 120 روز گذشته ندیده بود ، آزمایش خواهیم کرد.

پاسخ نهایی چیست؟

اگر کد را اجرا کنید ، خواهید دید که این شبکه خیلی سریع همگرا می شود و دقت بیش از 0. 99 را دریافت می کند. با این حال ، دقت اعتبار سنجی در حدود 0. 33 است که به این معنی است که شبیه به شانس است!

خط لوله داده من به منظور تعادل داده های تغذیه شده به شبکه طراحی شده است. بنابراین آنچه ما برای آموزش به شبکه تغذیه می کنیم ، حدود 1/3 نمودار است که به عنوان منفی ، 1/3 با صفر و 1/3 با بازده مثبت طبقه بندی شده اند.

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

منصة التداول الأكثر ثقة...
ما را در سایت منصة التداول الأكثر ثقة دنبال می کنید

برچسب : نویسنده : احمد نجفی بازدید : <-PostHit-> تاريخ : يکشنبه 12 شهريور 1402 ساعت: 17:40