Why this exists
Every portfolio tracker worth using wanted two things I was not willing to give: a monthly subscription, and my brokerage login. So I built the one I wanted instead, and left it free.
My name is Petru Ceciltan. I am a full-stack developer, and I invest across several currencies, which turns out to be the combination that makes most trackers useless to me. The American tools handle a Frankfurt or Paris listing badly or not at all. The ones that handle them properly put multi-currency reporting behind a paid tier. And nearly all of them open with the same request: connect your brokerage account.
The broker connection is the part I would not make compulsory
A tracker that holds a live route into your brokerage account is a tracker that can lose one. Not through malice, usually, but through a breach, an acquisition, a change of ownership, or a policy update you did not read. The convenience is real, and for many people it is worth it. What I object to is being made to accept it in order to use a tracker at all.
So Portfolio Analytics works without it. You type your transactions in, or you upload a statement your broker already exports. The files of 32 brokers are recognized and imported automatically, among them XTB, Interactive Brokers, Trading 212, DEGIRO, Revolut, eToro, Trade Republic, Saxo Bank, Robinhood and Charles Schwab, and any other broker's CSV works with column matching. If a file still will not go in, you can send it to me from inside the app and I write an import template for it within 24 hours. It is a few minutes of work at the start and about a minute a month after that. Today there is no brokerage credential anywhere in the system: nothing for an attacker to steal, nothing for a third party to harvest, and nothing that stops working when a broker changes its API.
Enough people have asked for the automatic version that I am planning one, as an optional paid add-on. It will be opt-in, it will be something you can use the app for years without ever touching, and manual entry and CSV import will stay free. It is not built yet, so nothing on this site should be read as offering it today.
Why it is free, honestly
Because it is finished, not because it is a trial. The tool does what I needed it to do, it costs me very little to run, and charging for it would mean building billing, support tiers and a sales page instead of improving the thing itself.
There is no paid wall waiting behind a feature you will hit later. The one paid thing being planned is an optional broker sync, which is extra work on top rather than something taken away from what is here. There are no ads, no trackers, and nothing about your holdings is sold or shared with anyone. If that ever has to change, existing users will be told plainly and in advance, not discover it in a changed policy document.
What I will not do with your data
- Sell it, share it, or hand it to an analytics provider.
- Require a brokerage login, a bank connection or an account number to use the tracker. The broker sync being planned is exactly that: optional, paid, and no part of the app for anyone who does not want it.
- Read it myself. Every query is scoped to your user ID at the database layer, and there is no admin view of your portfolios.
- Keep it after you leave. Deleting your account purges every portfolio, transaction and record tied to you.
Every login, password change and account action is written to an audit log that you can read and export yourself, so you never have to take my word for any of the above.
What it is not
It is not a broker, and it is not advice. You cannot place a trade here and the app will never tell you what to buy. It reports on what you already own, as accurately as I know how, and stops there. Verify anything that matters against your own broker statements.
How it is built
For anyone curious about what is underneath: Node.js and Express on the server, PostgreSQL for storage, JWT sessions delivered as httpOnly cookies with CSRF protection, TOTP two-factor authentication, optional Google sign-in, and market data from the public Yahoo Finance API. Returns are calculated with a Newton-Raphson XIRR that falls back to bisection rather than reporting a rate it could not properly solve.
More of my work is at ceciltan.com.