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.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTgyMzMzNDksIm5iZiI6MTcxODIzMzA0OSwicGF0aCI6Ii80Nzk5MzkzMC8yNTE1MTE1NzgtN2ZmYzA1OGMtMzlmZS00MDRjLWEzYWMtNThkNGQ3MTIwYmVmLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjEyVDIyNTcyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTk0YTEzY2NkZDIyY2QwNmYyYmVhNjY2Zjc0Nzg2NmRjNGI4MzA1YWQ3YWI0YmM2NWYxM2RhY2E0MDk5ZDM4NDcmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.WfakHtWV2PQeCdRiJHkmhieAo9cNHN2qvQb2AhkldDk)
![Add a Transaction](https://private-user-images.githubusercontent.com/47993930/251510635-8067a5d0-f7c6-4cc5-ad00-20ccbf9d0e50.png?jwt=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJnaXRodWIuY29tIiwiYXVkIjoicmF3LmdpdGh1YnVzZXJjb250ZW50LmNvbSIsImtleSI6ImtleTUiLCJleHAiOjE3MTgyMzMzNDksIm5iZiI6MTcxODIzMzA0OSwicGF0aCI6Ii80Nzk5MzkzMC8yNTE1MTA2MzUtODA2N2E1ZDAtZjdjNi00Y2M1LWFkMDAtMjBjY2JmOWQwZTUwLnBuZz9YLUFtei1BbGdvcml0aG09QVdTNC1ITUFDLVNIQTI1NiZYLUFtei1DcmVkZW50aWFsPUFLSUFWQ09EWUxTQTUzUFFLNFpBJTJGMjAyNDA2MTIlMkZ1cy1lYXN0LTElMkZzMyUyRmF3czRfcmVxdWVzdCZYLUFtei1EYXRlPTIwMjQwNjEyVDIyNTcyOVomWC1BbXotRXhwaXJlcz0zMDAmWC1BbXotU2lnbmF0dXJlPTg3MTk0ZjhjOTUzNjRhNzUzZDg5OWY1NzhjMzk4NDEzZmMyYTkyMGEwMjc3YmMwNzc5YTc3Yzk4NDYzMjhlY2UmWC1BbXotU2lnbmVkSGVhZGVycz1ob3N0JmFjdG9yX2lkPTAma2V5X2lkPTAmcmVwb19pZD0wIn0.qTcSBuun2yYK9Xff3SiVnesnU5LbKjl8H3lzoAkfpNc)
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.