An evnet driven model that uses financial time series data with New York Times information to form a LSTM recurrent neural network.
There are 3 models. The first 2 models are based on price and volume data alone. The third model is an event driven model that uses sentiment analysis on news data to predict the stock price.
- Prediction with 22 previous days
Filename: LSTM_Stock_prediction_20170507.ipynb
Currently not working, but the model is optimized.
- Prediction with 22 previous days
Filename: LSTM_Stock_prediction_20170528(Quandl).ipynb
Using Quandl Database instead of pandas datareader. Not optimized.
- Event driven model with 3 previous days (Using CSV file for price data)
Filename: Event_driven_LSTM_Stock_prediction.ipynb
Using News for sentiment analysis for that day.
- Optimize hyperparameter
- Technical indicator will be added to the features
- More data will be trained
- Quantopian Zipline will be used for backtesting
- Twitter sentiment analysis will be added
- More indexes will be included
Lastest LSTM model result for 7 years of testing data that has not been trained:
Train Score: 0.00006 MSE (0.01 RMSE)
Test Score: 0.00029 MSE (0.02 RMSE)
26/03/2017 First update
- Recurrent neural network with LSTM is added to the code.
- Keras with tensorflow is also implemented.
- Tensorboard for neural network visualization is also added to the code.
14/04/2017 Second update
- Normalized adjusted close price.
- A new data downloader has been implemented for simplicity
- Added more variable to predict the adjusted close price
- More accurate result, significantly less mean square error
- Extra visualization for close price
- Denormalization will be fixed soon
- Twitter sentiment analysis is currently on testing stage
16/04/2017 Third update
- Updated denormalization
- More test results available
18/04/2017 Fourth update
- Updated fundamental data from Kaggle for NYSE
19/04/2017 Fifth update
- Supporting Python 3.5 on Windows 10
- Significant improvement in accuracy
29/04/2017 Sixth update
- ^GSPC Data since 1970 has been added, more training data, higher accuracy
- 7 years of test data
- Object oriented programming
- Hyperparameters for dropout has been tested
08/05/2017 Seventh update
- All Hyperparameters have been tested and results have been uploaded.
- Fixed comment for the data loader
- More technical analysis like volume, moving average and other indexes will be added
28/05/2017 Eighth update
- Using Quandl instead of Pandas datareader
- Correlation heatmap has been addded
- Using Adjusted OHLCV for the network
- All functions can be loaded from lstmstock.py
- A Quandl api key is provided temporarily for those who do not own a quandl account
- Moving averages have been added
02/10/2017 Nineth update (Big update)
- Event driven analysis
- Switched to Tensorflow LSTM model
I have successfully applied technical Indicators (ie Stochastics Oscillator, MACD, ATR) to the model. I will combine it with the event driven one to create a larger model with better hyperparameter optimization.
Currently, the evaluation metrics is using mean square error. It is not appropriate because the price difference is pretty similar to previous day. I will change it to a classification model soon.
With this link, you should be able to get the historic price data of a particular stock after login. Use Export > Python > api key and insert the api key to your model. https://www.quandl.com/product/WIKIP/WIKI/PRICES-Quandl-End-Of-Day-Stocks-Info
Bernal, A., Fok, S., & Pidaparthi, R. (2012). Financial Market Time Series Prediction with Recurrent Neural Networks.
Box, G. E., Jenkins, G. M., Reinsel, G. C., & Ljung, G. M. (2015). Time series analysis: forecasting and control. John Wiley & Sons.
Jaeger, H. (2001). The “echo state” approach to analysing and training recurrent neural networks-with an erratum note. Bonn, Germany: German National Research Center for Information Technology GMD Technical Report, 148(34), 13.
Jaeger, H. (2002). Tutorial on training recurrent neural networks, covering BPPT, RTRL, EKF and the" echo state network" approach (Vol. 5). GMD-Forschungszentrum Informationstechnik.
Maass, W., Natschläger, T., & Markram, H. (2002). Real-time computing without stable states: A new framework for neural computation based on perturbations. Neural computation, 14(11), 2531-2560.