A stock price prediction system using Random Forest regression with advanced feature engineering and hyperparameter optimization via GridSearchCV.
- Data Pipeline: Fetches historical OHLCV data from Yahoo Finance via
yfinance - Feature Engineering: 25+ technical indicators including SMA, EMA, MACD, RSI, Bollinger Bands, ATR, OBV
- Model Training: Random Forest Regressor with baseline and optimized modes
- Hyperparameter Tuning: GridSearchCV with TimeSeriesSplit cross-validation
- Evaluation: MAE, RMSE, R², MAPE, and directional accuracy metrics
- Visualization: Price charts, prediction plots, feature importance, residual analysis
- Python, scikit-learn, pandas, numpy
- yfinance (Yahoo Finance API)
- matplotlib, seaborn (visualization)
- GridSearchCV with TimeSeriesSplit
python main.py --ticker AAPL --start 2018-01-01 --end 2023-12-31python main.py --ticker AAPL --optimizepython main.py --compare AAPL GOOGL MSFT --optimizepython -m venv venv
source venv/bin/activate
pip install -r requirements.txt
python main.py --ticker AAPLpytest tests/ -vstock-prediction/
├── main.py # CLI entry point and pipeline
├── data_fetcher.py # Yahoo Finance data retrieval
├── feature_engineering.py # Technical indicators and feature creation
├── model.py # Random Forest model with GridSearchCV
├── visualize.py # Chart generation
├── requirements.txt
├── models/ # Saved trained models
├── visualizations/ # Generated charts
└── tests/
├── test_feature_engineering.py
└── test_model.py