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.

87 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 (4)

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

Discover Live Editor

Create scripts with code, output, and formatted text in a single executable document.


Learn About Live Editor