IsaacCheng9 / trading-portfolio-tracker

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.
8 stars 1 forks source link
cross-platform desktop-application duckdb etfs investing market-data monitoring nasdaq nyse portfolio pyqt6 pyside6 python sql stock-exchange stock-market stocks trading yahoo-finance yfinance

Trading Portfolio Tracker

Ruff Test

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.

Motivation

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.

Screenshots

image

image

Add a Transaction Add a Transaction

Usage

Operating System

Compatible with:

Installing Dependencies

Run the following command from the project root directory:

poetry install

Running the Application

Run the following command from the project root directory:

poetry run app

Running Tests

Run the following command from the project root directory:

poetry run pytest

Importing and Exporting Databases

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.

Data Privacy

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.