This project implements a Stock Price Predictor using the ARIMA (AutoRegressive Integrated Moving Average) model for time series forecasting. The predictor takes historical stock market data as input and forecasts future stock prices based on this data. The project is built using Python and makes use of the statsmodels
library for time series modeling and forecasting.
- Fetches historical stock market data.
- Uses the ARIMA model for time series prediction.
- Can predict future stock prices based on historical data.
- Plots actual vs predicted stock prices for easy visualization, and the model performance prediction.
- Automatically djusts ARIMA parameters (
p
,d
,q
) to optimize predictions.
To run this project, you will need Python 3.x and virtualenv
for execute the following commands:
git clone https://github.com/9erikSantos6/ARIMA-Stock-Predictor.git
cd ARIMA-Stock-Predictor/
virtualenv venv
source venv/bin/activate
pip install -r requirements.txt
python -m unittest discover -v -s tests
- Just execute:
python src/main.py
The ARIMA model is a popular statistical method used for time series forecasting. The model consists of three key parameters:
- p: The number of lag observations included in the model (AR component).
- d: The number of times that the raw observations are differenced to make the time series stationary (I component).
- q: The size of the moving average window (MA component).
The ARIMA model is well-suited for time series data with trends and patterns, making it an effective tool for stock price forecasting.
To optimize the performance of the ARIMA model, you can experiment with different values of p
, d
, and q
. One approach is to use grid search or rely on the AIC (Akaike Information Criterion) to find the best combination of parameters. In practice, you can also plot the autocorrelation (ACF) and partial autocorrelation (PACF) functions to help choose p
and q
.
If you'd like to contribute to this project, feel free to open a pull request. Contributions such as code optimizations, feature additions, or bug fixes are welcome.
This project is licensed under the GNU General Public License v2.0 (GPL-2.0). See the LICENSE file for details.