A cross-platform desktop application for monitoring and managing your investments from different brokers, with real-time market data integration from Yahoo Finance. Developed with Qt.
Managing investments across different brokers can be challenging, as existing broker-specific systems such as Trading 212 often limit users to viewing investments exclusively within their own platforms. This leads to scattered investment information and a lack of holistic oversight. While some users resort to manual data entry in spreadsheets, this approach lacks real-time market data and user-friendliness.
This application offers a centralised solution for monitoring and managing investments across different brokers. By providing real-time market data integration and a user-friendly interface, it enhances the investment management experience. Additionally, as a desktop application, it prioritises data privacy by storing all information locally on the user's computer. Leveraging the Qt framework ensures cross-platform compatibility and high performance.
![Add a Transaction](https://private-user-images.githubusercontent.com/47993930/251511578-7ffc058c-39fe-404c-a3ac-58d4d7120bef.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNzkwMDgsIm5iZiI6MTczOTA3ODcwOCwicGF0aCI6Ii80Nzk5MzkzMC8yNTE1MTE1NzgtN2ZmYzA1OGMtMzlmZS00MDRjLWEzYWMtNThkNGQ3MTIwYmVmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA1MjUwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPWNjYTRiODhhOThkYmQyZDhmNWMzYjZjOWE3MGZlZmY2OTA0ODk2NTk2OTk3MWRiZGZlYTVkNDg1ZTA0MjJjMjYmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.cPRnWWFSm2kaNDOPCZ6fhUO8f_vmzrmyZb1Zyh5DdoE)
![Add a Transaction](https://private-user-images.githubusercontent.com/47993930/251510635-8067a5d0-f7c6-4cc5-ad00-20ccbf9d0e50.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MzkwNzkwMDgsIm5iZiI6MTczOTA3ODcwOCwicGF0aCI6Ii80Nzk5MzkzMC8yNTE1MTA2MzUtODA2N2E1ZDAtZjdjNi00Y2M1LWFkMDAtMjBjY2JmOWQwZTUwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNTAyMDklMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjUwMjA5VDA1MjUwOFomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTJkYWJjZjEzOTc2YmEwNWQyNzM2MGY1ZmMzNjA2OTg2NjAzMzJiOTA5NGUzZGQxYjdmODMzNWFkODE0N2YzYjMmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0In0.MLt3Ny9msXVhIS8xqmlaCw7KZxTBwvRQFl5JoA21AYc)
Compatible with:
- macOS
- Windows
Run the following command from the project root directory:
poetry install
Run the following command from the project root directory:
poetry run app
Run the following command from the project root directory:
poetry run pytest
DuckDB uses a binary file format which is inefficient, not human-readable, and leads to merge conflicts, so we avoid version controlling the database file directly. Instead, we store the data and schema of the database in the folder /resources/portfolio_data/ -- this gives us human-readable, merge-friendly files that we can easily version control.
To import the database, run the following command from the project root directory:
poetry run export_db
To export the database, run the following command from the project root directory:
poetry run import_db
Note that importing the database won't work if /resources/portfolio.db already exists – you must rename it, move it, or delete it before importing.
We store all data locally on the user's computer in a DuckDB database at /resources/portfolio.db. Live market data is fetched from Yahoo Finance, but we do not store any of this data permanently.