A comprehensive, open-source business intelligence visualization tool designed for algorithmic trading systems. This application transforms complex trading data into intuitive visualizations, enabling traders and analysts to make data-driven decisions.
- Multi-Asset Class Analysis: Support for equities, cryptocurrencies, and forex
- Interactive Dashboards: Dynamic charts and filters for data exploration
- Strategy Performance Tracking: Monitor and compare trading strategies
- Multi-Dimensional Analysis: Filter by symbol, strategy, time period, and asset class
- Real Market Data Integration: Uses real-world data from Yahoo Finance
- Star Schema Data Model: Optimized for analytical processing
- Backend: FastAPI + Uvicorn
- Frontend: Streamlit + Plotly
- Database: SQLite with SQLAlchemy ORM
- Data Processing: Pandas + yfinance
- Version Control: Git
- Python 3.8+
- pip
- virtualenv (recommended)
-
Clone the repository
git clone https://github.com/your-username/trading-bi-tool.git cd trading-bi-tool
-
Create and activate a virtual environment
python -m venv ProjectVenv # On Windows ProjectVenv\Scripts\activate # On macOS/Linux source ProjectVenv/bin/activate
-
Install dependencies
pip install -r requirements.txt
-
Start the FastAPI backend server
python bi_tool_test.py
-
In a new terminal, start the Streamlit frontend
streamlit run bi_tool_streamlit.py
-
Load sample data (if needed)
python load_market_data.py
-
Access the dashboard at http://localhost:8501
Project/
├── Backend/
│ ├── __init__.py
│ ├── database.py # Database models and connection
│ ├── etl.py # ETL processes
│ ├── main.py # API entry point
│ ├── models.py # Data models
│ ├── routes.py # API routes
│ └── services.py # Business logic
│
├── Frontend/
│ ├── __init__.py
│ ├── app.py # Streamlit application
│ ├── charts.py # Chart definitions
│ └── data_loader.py # API integration
│
├── ProjectVenv/ # Virtual environment
├── bi_tool_streamlit.py # Streamlit dashboard
├── bi_tool_test.py # FastAPI server
├── database.py # Main database models
├── load_market_data.py # Data loading script
├── data.db # SQLite database
└── README.md # Project documentation
The system implements a star schema with:
- Fact Table: trade_facts
- Dimension Tables: symbol_dim, trader_dim, strategy_dim
This design enables efficient querying and analysis across multiple dimensions.
/symbols
- List all trading symbols/strategies
- List all trading strategies/traders
- List all traders/trades
- Get trade data with optional filtering/performance/{strategy_id}
- Get performance data for a strategy
- Trading value by symbol
- Trading distribution by strategy
- Performance over time
- Recent trades table
- Key performance metrics
- Diego Mckay - Initial project setup, database foundation, API framework, basic dashboard
- Shefreen Kaur - Advanced data modeling, data pipeline, enhanced API layer, advanced visualizations, system integration
This project was developed as part of the COMP 430 course. It demonstrates the application of business intelligence principles, data visualization techniques, and full-stack development in the context of algorithmic trading systems.
- Real-time data streaming via WebSockets
- User authentication and multitenancy
- Strategy backtesting capabilities
- Machine learning integration for predictive analytics
- Export capabilities for reports and analysis