File Exchange

image thumbnail

MACHINE LEARNING CLASSIFICATION USED TO PREDICT STOCK

version 3.0.0 (159 KB) by Kevin Chng
it use Machine Learning in MATLAB to predict the buying-decision of Stock by using real life data.

77 Downloads

Updated 12 Mar 2019

View License

Overview :

In this script, it uses Machine Learning in MATLAB to predict buying-decision for stock. Using real life data, it will explore how to manage time-stamped data and select the best fit machine learning model. As common being widely known, preparing data and select the significant features play big role in the accuracy of model. In this example, it uses the technical indicators of today to predict the next day stock close price.
In this example, the trading strategy is if the close price is higher 1% than the open price in the same day, then we should buy stock at the openning of the stock market and sell it at the closing of the stock market.
In this example, it demostrates how to pre-processing the data for modelling and predict the decision by the model. New data of each date will be tabulated to re-train new model and find the best model for next day prediction. Interesting?

[Note : Not advocating any particular strategy, factors or methodology]

Highlights :
Handling downloaded data from Yahoo Finance using the timetable object
Selecting features based on domain knowledge
Machine Learning Modeling
Automate to re-train new model to incorproate new updated data for next prediction
Predicting the buying-decision
Experience the computational speed with/without parallel computing

Product Focus :
MATLAB
Financial Toolbox
Statistics and Machine Learning Toolbox
Parallel Computing Toolbox (Optional)

Cite As

Kevin Chng (2019). MACHINE LEARNING CLASSIFICATION USED TO PREDICT STOCK (https://www.mathworks.com/matlabcentral/fileexchange/68637-machine-learning-classification-used-to-predict-stock), MATLAB Central File Exchange. Retrieved .

Comments and Ratings (6)

Unfortunately couldn't manage to get it work.
As stated in sample comments:"Year 2015 will be selected as train data used to predict the stock price in Year 2016."
So, we don't need load the stock data for 2016,2017,2018 because the goal is to predict the stock price in Year 2016.
However if you'll try to to limit imported stock data to '1-Jul-213' - '31-Dec-2015", in order to get predicted values for 2016 - got error "Undefined function or variable Response2016"

Ian Alferez

AWESOME!

Is there also a Video for this example?

Hi Kevin,
Unfortunately, there is an error in the code that incorrectly labels the "buy" and "Not buy" fields.

This is the logic for labeing "buy" days on Lines 121-124 (and again on Lines 133-136):
if OpenClose_2016.Open(i) < 1.01*OpenClose_2016.Close(i)
Response2016(i)="buy";
else
Response2016(i)="Not buy";
end

The if-statement will resolve to true even if the stock had an open to close return of 0. Indeed, the first row in your own resulttable shows a label of buy even though the stock returned 0.

The correct statement is: if OpenClose_2016.Open(i)*1.01 < OpenClose_2016.Close(i)

The larger problem with the original model is that even in-sample, the best model has a lower predictive accuracy (0.693) than if you were to predict "buy" every day (0.706). This means that the models are not learning anything at all.

Dude, great code!
I don't know if the problem is in my Matlab, but the functions "rsindex" and "movavg" aren't working correctly. The first gives the error "Too many arguments" and the second gives the error "Lead argument must be less than or equal to lag argument".

Updates

3.0.0

Perform data normalization before training machine learning model

2.0.0

1) Allow to download different stock data from Yahoo Finance
2) Remove no volume trading day before calculating those technical indicators
3) rectify logic error
4) Redefine the strategy to select best fit model
Welcome your feedback.

1.0.4

Added Citation

1.0.3

Change Description

1.0.2

New Icon

1.0.1

New Icon

MATLAB Release Compatibility
Created with R2018a
Compatible with any release
Platform Compatibility
Windows macOS Linux