A Streamlit-based dashboard that provides a holistic view of investments. I created this because I have to check my different investment accounts separately, on my phone, but I increasingly want to load ONE app where I view everything together and I can understand and track how my investments are doing. I have integrated with Charles Schwab and Interactive Brokers, but you can use this framework to add more portfolios and it should work all the same - you just need to authenticate with the relevant brokerage and make sure their APIs support what you need.
- Portfolio Overview: View total portfolio value and performance across all accounts
- Multi-Broker Support: Integrate with both Charles Schwab and Interactive Brokers
- Flexible Views: Filter by broker or account type
- Asset Allocation: Visualize portfolio allocation by security
- Performance Metrics: Track unrealized P/L, returns, and more
[Coming soon]
- Python 3.8+
- Streamlit
- ngrok (for OAuth authentication)
- API credentials for Charles Schwab and/or Interactive Brokers
-
Clone the repository:
git clone https://github.com/o-dia/streamlit-investment-dashboard.git cd streamlit-investment-dashboard
-
Install dependencies:
pip install -r requirements.txt
-
Create a
.env
file with your credentials:SCHWAB_CLIENT_ID=your_client_id_here SCHWAB_CLIENT_SECRET=your_client_secret_here SCHWAB_REDIRECT_URI=your_ngrok_url_here/callback # For Interactive Brokers (optional) IB_CLIENT_ID=your_ib_client_id IB_GATEWAY_PORT=4001 IB_HOST=127.0.0.1
-
Start ngrok to create a tunnel for OAuth:
ngrok http 8501
-
Update your
.env
file with the ngrok URL -
Run the app:
streamlit run app.py
-
Open your browser to http://localhost:8501
-
Navigate to the Authentication tab to connect your brokerage accounts
This project is currently in development. Authentication with Charles Schwab API is pending resolution.
- Python
- Streamlit
- Plotly
- Pandas
- OAuth for API authentication