| --- |
| --- |
| language: en |
| tags: |
| - time-series |
| - forecasting |
| - lstm |
| - arima |
| - stock-market |
| license: mit |
| datasets: |
| - yahoo-finance |
| metrics: |
| - rmse |
| - mape |
| --- |
| |
| # LSTM Stock Price Forecasting |
|
|
| This repository contains an **LSTM model** trained on stock closing prices and compared with a traditional ARIMA baseline. |
| The goal is to forecast future stock values and evaluate which approach generalizes better. |
|
|
| --- |
|
|
| ## Dataset |
| - **Source:** Yahoo Finance |
| - **Ticker:** Apple Inc. (AAPL) |
| - **Period:** 2015–2023 |
| - **Feature Used:** Daily closing price |
|
|
| --- |
|
|
| ## Models Implemented |
| - **ARIMA (Auto ARIMA)** — traditional statistical time-series forecasting |
| - **LSTM** — deep learning recurrent neural network for sequential data |
|
|
| --- |
|
|
| ## Evaluation Results |
|
|
| | Model | RMSE | MAPE | |
| |-------|-----------|----------| |
| | ARIMA | 15.7959 | 0.0857 | |
| | LSTM | 5.8747 | 0.0305 | |
|
|
| **Conclusion:** LSTM significantly outperforms ARIMA with lower RMSE and MAPE, showing its ability to capture nonlinear patterns in stock prices. Under a single split, LSTM significantly outperforms ARIMA. |
|
|
| --- |
|
|
| ### Rolling Window Evaluation |
| | Model | RMSE (avg) | MAPE (avg) | |
| |-------|------------|------------| |
| | ARIMA (Rolling Window) | 3.448 | 0.0304 | |
| | LSTM (Rolling Window) | 23.282 | 0.1869 | |
|
|
| Under rolling window evaluation, **ARIMA outperforms LSTM**, showing better stability and adaptability across multiple forecasting horizons. |
|
|
|
|
| --- |
| ## ARIMA vs LSTM Forecasts |
|
|
| **ARIMA Forecast:** |
|  |
|
|
| **LSTM Forecast:** |
|  |
|
|
| ## Deployment |
| - Model hosted on **Hugging Face Hub** |
| - Repository: `Jalal10/DataSynthis_ML_JobTask` |
| - Includes model weights (`lstm_stock_model.h5`) and usage instructions |
|
|
| --- |
|
|
| ## Usage |
|
|
| ```python |
| from huggingface_hub import hf_hub_download |
| import tensorflow as tf |
| |
| # Download model |
| model_path = hf_hub_download(repo_id="Jalal10/DataSynthis_ML_JobTask", filename="lstm_stock_model.h5") |
| |
| # Load model |
| model = tf.keras.models.load_model(model_path) |
| |