A "Full Marks" standard Computational Data Science project predicting cryptocurrency price movements by fusing quantitative market data with qualitative sentiment analysis.
The actual interactive CryptoPulse Dashboard running on localhost.
We go beyond simple price prediction by integrating three distinct data sources:
- Quantitative: Historical OHLCV Data (Open, High, Low, Close, Volume) from Yahoo Finance.
- Qualitative: News Sentiment Analysis using NLP (TextBlob) on financial headlines.
- Psychological: Real-time Crypto Fear & Greed Index (0-100) from alternative.me.
- Model: Stacked LSTM (Long Short-Term Memory) Network.
- Framework: PyTorch.
-
Input: A fused vector
$x_t = [Price_t, Vol_t, Sentiment_t, FNG_t]$ .
- Built with Streamlit and Plotly.
- Dark-mode, responsive layout.
- Interactive Date Pickers and Zoomable Charts.
- Live Inference capability.
- Built with Streamlit and Plotly.
- Dark-mode, responsive layout.
- Interactive Date Pickers and Zoomable Charts.
- Live Inference capability.
graph TD
%% Data Collection Layer
subgraph Data_Collection [1. Data Collection]
style Data_Collection fill:#2d3436,stroke:#dfe6e9,color:#dfe6e9
A["Yahoo Finance API<br/>(OHLCV)"] -->|Raw Prices| D("Data Merger")
B["TextBlob NLP<br/>(News Mock)"] -->|Sentiment Score| D
C["Alternative.me API<br/>(Fear & Greed)"] -->|FNG Index| D
end
%% Preprocessing Layer
subgraph Preprocessing [2. Preprocessing]
style Preprocessing fill:#2d3436,stroke:#00cec9,color:#dfe6e9
D --> E{"Alignment & Cleaning"}
E -->|Fill NaNs| F[Feature Engineering]
F --> G["Normalization<br/>(0-1 Scaling)"]
G --> H["Train/Test Split<br/>(80/20)"]
H --> I["Windowing<br/>(60-day Lookback)"]
end
%% Model Layer
subgraph Model [3. Deep Learning]
style Model fill:#2d3436,stroke:#fdcb6e,color:#dfe6e9
I --> J["Stacked LSTM<br/>(2 Layers, 32 Units)"]
J --> K["Fully Connected Layer"]
K --> L("Price Prediction")
end
%% Application Layer
subgraph App [4. User Interface]
style App fill:#2d3436,stroke:#ff7675,color:#dfe6e9
L --> M["Streamlit Dashboard"]
F --> M
M --> N["Interactive Plots<br/>(Plotly)"]
M --> O["Data Export<br/>(CSV)"]
end
- Python 3.8+
- Git
-
Clone the Repository
git clone https://github.com/nizamkadirteach/cdsproject.git cd cdsproject -
Install Dependencies
pip install -r requirements.txt
-
Run the Dashboard
streamlit run src/app.py
-
Run System Verification (Optional)
python src/test_system.py
📦 cdsproject
┣ 📂 data/ # Raw and Processed Datasets
┣ 📂 docs/ # Documentation & Images
┣ 📂 notebooks/ # Jupyter Notebooks (EDA & Experiments)
┃ ┗ 📜 01_naive_model_week8.ipynb
┣ 📂 report/ # LaTeX Project Report
┃ ┗ 📜 main.tex
┣ 📂 slides/ # Presentation Slides (Beamer)
┃ ┣ 📜 initial_presentation.tex
┃ ┗ 📜 final_presentation.tex
┣ 📂 src/ # Source Code
┃ ┣ 📜 app.py # Streamlit Dashboard Entry Point
┃ ┣ 📜 data_loader.py # Data Fetching Logic (APIs)
┃ ┣ 📜 model.py # PyTorch LSTM Model Definition
┃ ┣ 📜 preprocessing.py # Feature Engineering & Merging
┃ ┗ 📜 test_system.py # System Verification Script
┣ 📜 .gitignore
┣ 📜 README.md
┗ 📜 requirements.txt| Name | Role | ID |
|---|---|---|
| Alice Zheng | Data Engineer | 100XXXX |
| Bob Chen | ML Engineer | 100XXXX |
| Charlie Davis | Frontend Dev | 100XXXX |
| Diana Lim | Project Lead | 100XXXX |
This project is open-source and available under the MIT License.
