|
|
---
|
|
|
license: apache-2.0
|
|
|
datasets:
|
|
|
- dirganmdcp/yfinance_Indonesia_Stock_Exchange
|
|
|
language:
|
|
|
- en
|
|
|
metrics:
|
|
|
- mape
|
|
|
pipeline_tag: time-series-forecasting
|
|
|
library_name: keras
|
|
|
tags:
|
|
|
- time-series
|
|
|
- stock-forecasting
|
|
|
- LSTM
|
|
|
- ARIMA
|
|
|
- Prophet
|
|
|
- machine-learning
|
|
|
- deep-learning
|
|
|
- forecasting
|
|
|
---
|
|
|
# π Stock Price Forecasting - DataSynthis ML Job Task |
|
|
|
|
|
This repository contains implementations of **time-series forecasting** for stock prices using both **traditional statistical models (ARIMA, Prophet)** and **deep learning (LSTM)**. |
|
|
The project demonstrates model comparison, rolling-window evaluation, and deployment to Hugging Face Hub. |
|
|
|
|
|
|
|
|
## Project Overview |
|
|
- **Dataset**: Daily stock price dataset (closing prices). |
|
|
- **Models Implemented**: |
|
|
- ARIMA (AutoRegressive Integrated Moving Average) |
|
|
- Prophet (Additive Time Series Forecasting by Meta) |
|
|
- LSTM (Long Short-Term Memory Neural Network) |
|
|
- **Evaluation**: |
|
|
- Rolling-window forecasts |
|
|
- Metrics: RMSE, MAPE |
|
|
- **Deployment**: |
|
|
- Models and results shared on Hugging Face Hub. |
|
|
|
|
|
|
|
|
## Repository Contents |
|
|
- `lstm_model.h5` β Trained LSTM model |
|
|
- `scaler.pkl` β Scaler used for preprocessing |
|
|
- `performance_summary.csv` β Comparison of ARIMA, Prophet, and LSTM performance |
|
|
- `stock_forecasting_notebook.ipynb` β Full notebook with preprocessing, training, evaluation, and plots |
|
|
- `upload_to_hf.py` β Script for uploading to Hugging Face Hub |
|
|
|
|
|
|
|
|
## Quick start |
|
|
1. Create and activate a python environment (recommended: conda or venv) |
|
|
```bash |
|
|
python -m venv venv |
|
|
source venv/bin/activate # Linux/macOS |
|
|
venv\Scripts\activate # Windows |
|
|
pip install -r requirements.txt |
|
|
``` |
|
|
2. Start Jupyter and open the notebook: |
|
|
```bash |
|
|
jupyter notebook stock_forecasting_notebook.ipynb |
|
|
``` |
|
|
3. The notebook contains cells to download real stock data via `yfinance` (if you have internet) or use the included `sample_stock.csv` for an offline demo. |
|
|
|
|
|
## Hugging Face deployment (notes) |
|
|
- Use `upload_to_hf.py` to push saved model files to the HF repo `DataSynthis_ML_JobTask` after creating it on the Hugging Face website (or the script will create the repo for you if you provide a valid token). |
|
|
- Create a HF token at https://huggingface.co/settings/tokens and set environment variable `HF_TOKEN` or pass `--token` to the script. |
|
|
|
|
|
## Results |
|
|
|
|
|
The performance of the three models on stock price forecasting is summarized below: |
|
|
|
|
|
| Model | RMSE | MAPE (%) | |
|
|
|---------|--------|----------| |
|
|
| ARIMA | 3.3748 | 1.8973 | |
|
|
| Prophet | 4.7650 | 3.1859 | |
|
|
| LSTM | 2.0890 | 1.2516 | |
|
|
|
|
|
### Key Insights |
|
|
- **LSTM** achieved the **lowest RMSE and MAPE**, showing the best accuracy. |
|
|
- **ARIMA** performed reasonably well, but less effective with non-linear trends. |
|
|
- **Prophet** captured trends and seasonality but had higher errors. |
|
|
- Overall, **LSTM is the most reliable model** for this task. |