پیش‌بینی شاخص بورس

تغییرات پروژه از ابتدا تا تاریخ 1396/08/29
شاخص هر بورس، می‌تواند نماینده‌ی خوبی برای نمایش میزان رشد سهام‌های موجود در بورس و خوب و یا بد بودن وضعیت سرمایه‌گذاری در آن باشد. این شاخص در طول زمان نوساناتی را تجربه می‌کند که بسیاری از متخصصین بر این باور هستند، که این نوسانات در شرایط عادی از الگوهای مشخصی پیروی می‌کنند. حتی برخی از این الگوها به صورت فرموله شده نیز تحت عنوان «تحلیل تکنیکال بورس» تبیین شده است. اگر این فرض را بپذیریم، پس باید بتوانیم با کنکاش در گذشته شاخص یک بورس، آینده نوسانات آن را پیش‌بینی کنیم. تکنیک‌های هوش مصنوعی و یادگیری ماشین هم می‌توانند یک ابزار بسیار قدرتمند در استخراج الگو و پیش‌بینی آینده بازار بورس باشند. چیزی که هدف از این پروژه خواهد بود، شکل ساده شده‌ای از مسئله پیش‌بینی شاخص بورس می‌باشد، آن هم این که با مشاهده وضعیت شاخص بورس در بازه‌های مشخص زمانی گذشته (مثلا هفته‌های پیش)، پیش‌بینی کنید که آیا شاخص بورس در بازه زمانی پیش رو (هفته آتی) مثبت است یا منفی. در واقع مسئله در این پروژه یک رده‌بندی دو کلاسه خواهد بود، که داده‌های آن مربوط به شاخص بورس هستند. مجموعه داده‌های متعددی در این زمینه وجود دارد که از یکی از آن‌ها برای انجام پروژه می‌توانید استفاده کنید. مثلا [مجموعه داده شاخص بورس داوجونز](https://archive.ics.uci.edu/ml/datasets/Dow+Jones+Index).

# مقدمه

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

**پیش بینی بازار بورس چیست ؟**
پیش بینی بازار بورس به فرآیندی که در طی آن قیمت سهام شرکت مورد نظر مورد پیش بینی قرار می گیرد گفته میشود. طبق نظریه بازار کارآمد (‌efficinet market hypothesis) قیمت سهام ها تمامی اطلاعات موجود را در اختیار ما می گذارد و چنان چه قیمت یک سهام بر اساس اخبار منتشر شده تغییر پیدا نکند در نتیجه آن سهام به خودی خود قابل پیش بینی نخواهد بود. عده ای دیگر نیز وجود دارند که با ارایه ی چندین متد راه های پیش بینی قیمت سهام را عرضه کرده اند.

**روش های پیش بینی بازار بورس چیست؟**
روش های  پیش بینی به ۳ دسته تقسیم میشوند که می توانند با یکدیگر هم پوشانی نیز داشته باشند

+ تحلیل بنیادی
+ تحلیل تکنیکال 
+ تحلیل مبتنی بر داده کاوی و تکنولوژی

**تحلیل بنیادی چیست؟**
تحلیل بنیادین یک شرکت شامل تحلیل گزارش‌ها مالی و سلامت مالی شرکت، مدیریت و امتیازات رقابتی، رقبا و بازارهای مربوطه‌است. در تحلیل بنیادین اساس پیش بینی بر مبنای وقایع و رخدادهای واقعی پایه‌گذاری شده‌است. معامله گر با تحلیل اتفاقات و اخبار دنیای واقعی و بر اساس دانش و استراتژی خود، به پیش بینی بازار می‌پردازد.  پایه نظر تحلیل گران بنیادی این است که تمام تغییرات در قیمتها حتماً یک علت اقتصادی بنیادی دارد. این نوع از تحلیل نسبت به تحلیل تکنیکال بسیار زمانگیرتر است و معمولاً همراه با جمع‌آوری اطلاعات از منابع مختلف ممکن می‌گردد.
![روند کلی تحلیل بنیادین](https://boute.s3.amazonaws.com/236-funimg1.jpg)

**تحلیل تکنیکال چیست؟**
در این تحلیل از طریق بررسی تغییرات و نوسان‌های قیمت‌ها و حجم معاملات و عرضه و تقاضا می‌توان وضعیت قیمت‌ها در آینده را پیش‌بینی کرد. تحلیلگران تکنیکال ارزش ذاتی اوراق بهادار را اندازه‌گیری نمی‌کنند، در عوض از نمودارها و ابزارهای دیگر برای شناسایی الگوهایی که می‌تواند فعالیت آتی سهم را پیش‌بینی کند، بهره می‌جویند. این نوع تحلیل با استفاده از «مطالعه رفتار و حرکات قیمت و حجم سهام در گذشته و تعیین قیمت و روند آینده سهم» صورت می‌پذیرد.
![روند کلی خرید سهام با استفاده از دانش به دست آمده از تحلیل تکنیکال و تحلیل بنیادین](https://boute.s3.amazonaws.com/236-Process-Chart-1024x721.jpg)

**تحلیل مبتنی بر داده کاوی و تکنولوژی**

با پیشرفت تکنولوژی استفاده از متد ها و روش های کامپیوتری نیز در سهام مرسوم شده اند. الگوریتم های ژنتیک و شبکه های عصبی ساختگی ( artificial neural networks - ANN )‌ از برجسته ترین روش های مورد استفاده هستند. از شایع ترین فرم ANN  می توان به Feed Forwarding Network اشاره کرد. همچنین فرم های دیگری مانند Recurrent Neural Network یا Time Delay Neural Network نیز وجود دارند که الگوریتم های المان و جردن نیز از این ۲ فرم استفاده می کنند. همچنین استفاده از Text Mining به همراه Machine Learning نیز در این کار افزایش یافته است.

# کارهای مرتبط

**استفاده از شبکه های عصبی ساختگی ( ANN ) **

در مقاله ی [۱] با استفاده از شبکه های عصبی ساختگی  و در نظر گرفتن  ساعت باز شدن و بسته شدن بازار - بالاترین و پایین ترین قیمت سهم به عنوان ورودی و قیمت سهم در پایان روز به عنوان خروجی پیاده سازی شده است. همچنین ۶۰ درصد از داده به Train و ۴۰ درصد باقی به آزمایش کردن اختصاص یافته و تعداد لایه های مخفی از ۱ تا ۳ لایه متغیر است. نتیجه نیز در صورت موجود وکافی بودن داده مورد نیاز در بدترین حالت که ۱ لایه مخفی داریم خطایی در حدود ۳.۵٪ خواهیم داشت.

در مقاله ی دوم[۲]  نیز با استفاده از پیاده سازی شبکه عصبی  و تست  کد خود بر روی ۶۰ شرکت از بازار Nairobi در بازه سال های ۲۰۰۸ تا ۲۰۱۲ کار خود را پیش می برد. در ابتدا نسبت داده های مورد آموزش (Train) نسب به داده های مورد آزمایش ۷۰ به ۳۰ و  تعداد نورون های ورودی ۵ و ۲ لایه مخفی شامل ۱۱ نورون و لایه ی آخر خروجی شامل ۱ نورون مورد آزمایش قرار گرفت. که در پایان این تنظیمات به افزایش ۱۰ درصدی داده مورد آموزش و برقراری نسبت ۸۰ به ۲۰ در داده های مورد آموزش به آزمایش و افزایش تعداد نورون های لایه های پنهان به ۲۱ نیز افزایش پیدا کرد. (این ارزیابی در بازه های ۳ ماهه انجام گرفت) جهت ارزیابی های نهایی نیز آزمایش ها بر روی ۳ شرکت مایکروسافت - کوکاکولا و آلکاتل انجام گرفت. که در تست های نهایی بر روی شرکت کوکاکولا مقدار خطا به ۰.۷۱٪ رسید.

**استفاده از خطی سازی**

در این صفحه [۳]  با استفاده از کشف ارتباط بین قیمت ها و استخراج  معادله ی خطی برای استفاده از آن به پیش بینی قیمت سهم مورد نظر می پردازد.
نتایج الگوریتم مورد استفاده در طی ۶۰ روز بر روی یکی از بانک ها که ۴۰ روز ابتدایی به یادگیری (‌training) و ۲۰ روز انتهایی به آزمایش گذاشته شده است.
![معادله ی پسرفت](https://boute.s3.amazonaws.com/236-8-1-768x305.jpg)
![جدول داده های بدست آمده و مقایسه آن ها با داده های واقعی](https://boute.s3.amazonaws.com/236-1234.jpg)

**استفاده از یادگیری ماشین و الگوریتم های ژنتیک**

در این صفحه [۴] با استفاده از الگوریتم های ژنتیک I Know First که با دنبال کردن قیمت حال حاضر سهم و اضافه کردن آن به دیتابیس که مبتنی بر سری داده های مبتنی بر زمان و سپس مقایسه آن و پیش بینی قیمت آتی سهم در ۶ افق زمانی مختلف می پردازد. 



در این مقاله [۵] نیز با استفاده از الگوریتم های ژنتیک و فریم ورک GAFD و بررسی بازار سهام کره (KOSPI) در بازه ۲۹۲۸ روز معاملاتی در طی سال های ۱۹۸۹ تا ۱۹۹۸ می پردازد. همچنین به مقایسه نتایج این روش با روش تبدیل خطی همراه با شبکه های عصبی Back Propagation  و همچنین مقایسه با روش تبدیل خطی همراه با شبکه عصبی تمرین داده شده توسط الگوریتم های ژنتیک می پردازد.

در این لینک [۶] پیاده سازی با استفاده از پایتون و یادگیری ماشین انجام گرفته و خروجی پیشبینی بر اساس index های s&p 500 است که ۲ مساله طبقه بندی باینری ( بنا بر اتفاقات روز قبل پیشبینی را مثبت یا منفی در نظر می گیرد) و مساله پسرفت ( پیش بینی دقیق ) را مورد بررسی قرار می هد.

# آزمایش ها
# کارهای آینده
# مراجع

[1] Abhishek Kar, Stock Prediction using Artificial Neural Networks, Dept. of Computer Science and Engineering, IIT Kanpur
[2] Wanjawa, Barack Wamkaya, ANN Model to Predict Stock Prices at Stock Exchange Markets, School of Computing and Informatics University of Nairobi
[3] [How to Predict Stock Prices using regression](https://www.quantinsti.com/blog/machine-learning-trading-predict-stock-prices-regression/)
[4] [ Machine Learning Trading, Stock Market, and Chaos](https://iknowfirst.com/rsar-machine-learning-trading-stock-market-and-chaos)
[5] Kyoung-jaeKim, Ingoo Han,  Genetic algorithms approach to feature discretization in artificial neural networks for the prediction of stock price index, Korea Advanced Institute of Science and Technology
[6] [Predicting Stock Market Returns](https://github.com/FraPochetti/StocksProject)
[7] [Stock Market Prediction](https://en.wikipedia.org/wiki/Stock_market_prediction)
[8] [Technical Analysis](https://en.wikipedia.org/wiki/Technical_analysis)
[9] [Fundamental Analysis](https://en.wikipedia.org/wiki/Fundamental_analysis)
[10] [Efficient-market hypothesis](https://en.wikipedia.org/wiki/Efficient-market_hypothesis)
[11] [Feed Forward Neural Network](https://en.wikipedia.org/wiki/Feedforward_neural_network)
[12] [Back Propagation](https://en.wikipedia.org/wiki/Backpropagation)


**پیوندهای مفید**
+ [پیش بینی بورس با استفاده از پایتون](http://francescopochetti.com/stock-market-prediction-part-introduction/).
+ [مسابقه پیش‌بینی بورس](https://www.kaggle.com/c/informs2010)
+ [آیا بورس قابل پیش‌بینی است؟](http://fastml.com/are-stocks-predictable/)