Back to projects

Personal Finance · Python · PyQt6

Wealth Tracking Application

This project is directly linked to the portfolio backtesting and optimization module: simulation outputs are reused here to support broader wealth analysis. It is a Python desktop application for personal wealth monitoring built around a modular architecture with service layers, a Qt interface, and an SQLite database. The application aggregates transactions across several account types (bank, savings, PEA/CTO, private equity), normalizes the data, and produces weekly snapshots to track wealth over time. The analytics layer computes risk and return metrics with proper cash-flow neutralization and FX handling. The application also includes a Trade Republic import flow with alias mapping (symbols/ISIN), data-quality checks, and full household-history rebuilds from the first transaction onward.

PythonPyQt6SQLitePandasPlotlyyfinance

What this project demonstrates

Ability to build a complete financial tool: data modeling, transaction ingestion and normalization, advanced portfolio analytics, desktop UI, and testing discipline.

Wealth Tracking Application - detailed view

My role

I designed the architecture, implemented the business services and SQLite layer, built the Qt screens for dashboards, imports, and controls, and expanded the portfolio metrics with a strong focus on data quality.

Context

The initial need was to replace fragmented tracking based on spreadsheets and manual exports with a single robust system capable of handling multiple asset classes, several accounts, and a long history with retroactive corrections.

Objective

Build a reliable base for wealth tracking and portfolio analysis: allocation, performance, net cash flows, passive income, historical rebuilds, and simulation or optimization modules that support decision-making.

Demo

Project in action

Deep dive

Technical reading of the project

The project works as a wealth-tracking engine: transaction ingestion, accounting normalization, weekly snapshots, and portfolio analytics built for decision support.

  • Multi-account coverage: bank accounts, savings, PEA/CTO, and private equity.
  • Weekly historical view rebuilt from the very first transaction.
  • Portfolio performance calculation with cash-flow neutralization.
  • Trade Republic import flow with alias mapping for symbols and ISINs.
  • PyQt6 desktop interface for control, monitoring, and visualization.

Gallery

Key screens and visualizations

KPI dashboard for the wealth-tracking application

Consolidated KPI view of wealth and core portfolio metrics.

Monte Carlo portfolio projection

Scenario projection used to simulate portfolio paths over time.

Architecture

Technical organization

Persistence layer

Versioned SQLite database with SQL migrations, transaction/account/asset/price/snapshot tables, plus import-alias tables to make reconciliations more reliable.

Business services layer

Dedicated modules for CRUD repositories, individual and household snapshots, consolidated income, advanced equity analytics, and weekly FX conversions.

Import layer

Trade Republic CSV import pipeline with preview, ISIN and symbol resolution, canonical mapping, validation, and insertion.

Interface layer

Qt panels organized by business use case such as global wealth, listed assets, income, and data health, with Plotly rendering and rebuild actions.

Pipeline

Data flow

  1. 1.Broker transaction export loaded into the import module.
  2. 2.Parsing and normalization of operations such as buys, sells, dividends, interest, and cash movements.
  3. 3.Canonical asset resolution through ISIN, symbol, and alias tables.
  4. 4.Write to the database, then rebuild weekly snapshots.
  5. 5.Compute risk and return metrics and produce charts.
  6. 6.Run consistency checks and manual adjustments through the interface.

Technical choices

Structuring decisions

Cash-flow-adjusted returns

Returns are computed after neutralizing weekly purchases and sales so that capital injections are not confused with actual investment performance.

Robust annualized metrics

Annualized volatility, Sharpe ratio, beta versus URTH, and max drawdown are all computed from a coherent weekly time series.

Backdated-aware full rebuild

The snapshot engine supports complete historical reconstruction, which is essential when older transactions are corrected or inserted later.

Ticker preview before import

A preview of ticker, price, and currency reduces mapping risk before anything is inserted into the database.

Reliability

Quality and controls

  • Targeted tests on portfolio analytics, import aliases, and consolidated income rules.
  • Strong validation of person, account, and transaction relationships before update or delete operations.
  • Clear separation between UI, services, and persistence to reduce regressions.

Limitations

Current attention points

  • Still dependent on external broker exports and changing authentication mechanisms.
  • Single-user desktop architecture, not yet designed for collaborative online use.
  • Benchmark coverage is still focused on a relatively limited market universe.

Roadmap

Next steps

  • Extend the portfolio simulation module with scenarios, constraints, and stress tests.
  • Add richer and more resilient market-data connectors.
  • Produce automated monthly and quarterly decision-oriented reports.

Challenges

Main project challenges

Model heterogeneous transactions such as buys, sells, dividends, interest, deposits, and withdrawals while preserving multi-account accounting consistency.

Compute truly usable returns by neutralizing weekly cash flows instead of relying only on raw valuation changes.

Handle real Trade Republic imports with ISIN or symbol mapping, alias management, edge cases, and WAF-token constraints without breaking existing history.

Support a full household snapshot rebuild from the first transaction onward, with progress tracking, cancellation, and quality checks.

Outcomes and learnings

What I take away

Weekly snapshot engine for both individual and household views, with full historical rebuild capability.

Advanced portfolio metrics including annualized performance, volatility, Sharpe, beta versus URTH, and max drawdown, all based on cash-flow-adjusted calculations.

Robust import flow for Trade Republic with asset aliases, live ticker preview, and validation before insertion.

Test coverage on critical building blocks such as analytics, alias mappings, passive-income logic, transactions, and new account types.

Other projects

Continue exploring

Portfolio Backtesting and Optimization - project preview

Quantitative Finance · Analysis · Python

Portfolio Backtesting and Optimization

Python environment to backtest strategies, compare risk and return metrics, and analyze portfolio behavior.

View this project
C++ Option Pricing (CRR, Black-Scholes, Monte Carlo) - project preview

Quantitative Finance · C++ · Pricing

C++ Option Pricing (CRR, Black-Scholes, Monte Carlo)

Group project in C++ to price several option types, including European, American, and Asian contracts, with CRR, Black-Scholes, and Monte Carlo.

View this project

Discuss

I can detail technical choices and outcomes during an interview.

If this project is relevant for you, I can detail the initial need, data structure, assumptions, challenges encountered, and analysis limitations.