PO

Portfolio Performance

Open-source desktop tool for tracking investment portfolio performance

Budgeting & Finance ★ 4.1k stars Medium setup EPL-1.0

Portfolio Performance is a free, open-source Java desktop application for calculating the performance of an investment portfolio of stocks, ETFs, and funds. It provides true time-weighted returns, risk metrics, and multi-currency support.

Key features

  • True time-weighted returns
  • Multi-currency portfolios
  • Detailed performance charts
  • Quote import from many sources

Pros & cons

Strengths

  • Accurate performance calculations
  • Rich analytics

Trade-offs

  • Desktop only
  • Steeper learning curve

Portfolio Performance replaces

Last reviewed Sep 13, 2026 · 833 words

Portfolio Performance is not a server, and the "self-hosting" question about it reduces to one thing: where the file lives. It is a Java desktop application, EPL-1.0 licensed with 4,056 stars, in development since 2012, that records every buy, sell, dividend and fee across your brokers and computes the two numbers most portfolio apps get wrong or hide: true time-weighted rate of return and internal rate of return. Everything is stored in one file you control, and how you sync that file between machines is the entire operational decision.

The two return numbers are the reason it exists

Most broker apps show you a gain figure that mixes your own deposits with market performance, so a month where you added cash looks like a good month. Portfolio Performance separates them. Time-weighted return tells you how the investments did regardless of when you added or withdrew money, which is the number to compare against an index. Money-weighted return (IRR) tells you how your money did, including the timing of your contributions, which is the number that describes your actual outcome. It shows both, per security, per account and for the whole portfolio, over any period, in any of the currencies you hold, with exchange rates handled properly.

Around that core sits everything a serious tracker needs: asset allocation against a target with rebalancing suggestions, dividend calendars, realised and unrealised gains for tax time, and detailed charts. The learning curve the catalogue mentions is mostly the accounting model: securities accounts hold holdings, deposit accounts hold cash, and every transaction moves between them. Once it clicks, it is the same double-entry logic that makes Firefly III trustworthy for budgeting.

One file, and it must only be open in one place

Save the portfolio as an encrypted .portfolio file with AES rather than plain XML; the option is in the save dialog. Then sync it with whatever you already run. Syncthing between a desktop and a laptop works and keeps the file off any cloud. A Nextcloud folder works too. The rule that matters: never have the file open in two instances at once. The app writes the whole file on save, so two machines with simultaneous edits produce a sync conflict and one of them loses. Close it before you switch devices, and let the sync finish before you open it on the other one.

Backups are trivial because the file is small; a year of active trading across several accounts fits in a few megabytes. Keep it in a directory that your normal backup already covers and versions, so a bad import can be rolled back by restoring yesterday's copy.

Quotes come from feeds, and feeds break

Historical and current prices come from configurable sources per security: Yahoo Finance style feeds, Portfolio Report, JSON and HTML table scrapers for exotic instruments, and manual entry as the fallback. Every few years a free quote source changes its API and a wave of "prices stopped updating" forum posts follows. Expect to revisit quote settings occasionally, and prefer the sources that are maintained specifically for this app when they cover your securities.

Transaction import is CSV and PDF. The PDF importers cover a long list of brokers, mostly European, and turn a statement into transactions with little editing. For a broker not on the list, export CSV, map the columns once, and save the mapping. Budget an evening for the initial load of a multi-year history and thirty minutes a month afterwards.

Ghostfolio is the server-side sibling

If you want the same idea as a web app you host, with a phone-friendly interface and multiple users, Ghostfolio is the project to look at. It runs in Docker with Postgres and Redis, and it is the safer pick for a household that wants a shared dashboard on a tablet. Portfolio Performance remains the more rigorous calculator, particularly around multi-currency accounting, dividends and tax-relevant reports, and it works with no server at all. Some people run both, importing the same broker exports into each, and that is more work than it sounds. Budgeting tools such as Firefly III sit beside either choice rather than replacing it, and the Sharesight alternatives page explains what you give up leaving the paid trackers.

What I'd do

Install Portfolio Performance on the machine you actually do your finances on, save the file encrypted into a Syncthing-shared folder, and adopt a monthly ritual: import the broker statements, check that quotes updated, look at the time-weighted return against your benchmark, and close the app. Skip Ghostfolio unless someone else in the house needs to see the numbers on a phone. For a single investor who wants correct returns and owns their data, this is the best free tool there is, and it asks for nothing more than 512 MB of RAM and a Java runtime that the installer already bundles.

Compare Portfolio Performance

4 head-to-head comparisons.

Similar budgeting & finance apps