Crypto Currency Price Prediction
Desktop application for cryptocurrency price forecasting with recurrent neural networks (LSTM, GRU, and LSTM+GRU). This project is educational and should not be treated as trading advice.
Overview
The project uses a Tkinter GUI (MVC structure) to:
- select a market (BTC, ETH, DOGE, LTC),
- choose a model architecture,
- train on online or local CSV data,
- visualize predicted vs. actual prices,
- calculate simple gain over a selected window.
Training runs in a background thread. Progress and ETA are shown in: - terminal logs, - GUI status line.
Tech Stack
- Python
>=3.10,<3.13 - TensorFlow / Keras
- NumPy, Pandas, scikit-learn
- Matplotlib
- yfinance + pandas-datareader
- Tkinter (Azure theme)
- uv (dependency and environment management)
Project Structure
.
|-- app.py # Application entry point (Controller)
|-- app/
| |-- model.py # Data access, training, prediction, gain
| |-- view.py # Tkinter GUI
| |-- azure.tcl # GUI theme
| |-- test.csv # Default local CSV for offline mode
| |-- assets/
| `-- images/
|-- DATA/
| `-- download.py # Utility script for fetching CSV data
|-- DOC/ # Report and presentation materials
|-- pyproject.toml
`-- uv.lock
Quick Start
- Install dependencies and run the app:
uv sync
uv run python app.py
Using the App
- Choose currency, data source, and model type.
- Configure
Prediction days,Future days, andPlot range. - Click
Train. - Monitor progress in terminal and GUI status line.
- Click
Plotto show the chart. - Click
GAINto compute percent change.
Data and Date Semantics
Prediction days: lookback window size (how many past observations are used as input).Future days: forecast horizon in days (for example,1means predict one day ahead).Plot range: number of dated points displayed on the chart.- Chart X-axis now uses concrete calendar dates (
YYYY-MM-DD). - Predicted series is shifted by
Future days, so each predicted point is plotted at its target date.
Showcase
GUI
The application features a clean desktop interface built with Tkinter (Azure theme), organized into four panels:
- Select Currency — radio buttons to choose between BTC, ETH, Doge, and LTC.
- Online Source — selects the data provider: Yahoo, Stooq, or Naver.
- Select Model — picks the neural network architecture: LSTM, GRU, or LSTM+GRU.
- Settings panel (top-right) — sliders for
Predictionlookback and data window (Based on last 30 days), a toggle to enable/disable the online database, and spinboxes forFuture daysandPlot range. - Action buttons —
Trainstarts model training in a background thread,Plotrenders the forecast chart,GAINcomputes percent price change,Select fileloads a local CSV for offline mode, andHELPopens documentation.
Prediction Chart
After training, clicking Plot opens a Matplotlib chart comparing Actual Prices (cyan) against Predicted Prices (dark purple) over the selected date range. The predicted series is shifted forward by Future days, so each predicted point aligns with its target date. The example below shows a BTC forecast over a 20-day window, where the model closely tracks the sharp price rise from ~84 000 to ~94 000 USD.
License
This project is licensed under the MIT License. See LICENSE.