Built to answer one question, then kept going
What do I actually own? Not what the prospectus says, not what your statement summarises in three line items — the real, company-by-company exposure sitting inside the funds you hold.
Portfolio Analysis started as a personal project to solve something most brokerage tools do not: if you hold five funds and three of them carry NVIDIA in the top ten, your statement will not tell you that your real NVIDIA exposure is several times your direct shares. The first version did fund look-through and nothing else.
It has since grown into twenty-five analyses built on that same parsed file — because once the tool knows what you truly own, across which account types, and at what cost basis, most of the other questions become answerable from the same data.
What it does
Upload a Fidelity or Schwab positions export — or several at once, to combine accounts — and the app organises everything into seven groups, mirroring the questions people actually ask.
- What do I own. True company-level exposure across direct holdings, fund look-through and the net market value of any options you hold on the same underlying, plus the same view by sector and by investment theme.
- How is it doing. A position-level ledger with gain and loss, each holding's own trailing returns, estimated dividend income and yield, the annual dollar cost of your expense ratios, and a Fundamental Score that ranks each holding against peers in its own size-and-style cell rather than against the whole market.
- Risks. Concentration thresholds, fund overlap, a correlation heatmap limited to the names that carry real weight in your portfolio, and fifteen stress scenarios — fourteen presets plus one you build yourself. The presets cover macro moves such as rate changes, oil, the dollar index, gold, CPI, PPI and GDP, alongside sector shocks, broad-market drawdowns, and single-name and basket shocks. The company-level scenarios can additionally propagate the shock through the correlation matrix.
- Planning. Drift against the targets you set, a tax-aware reallocation plan, a tax-loss harvesting scanner, bracket-fill Roth conversion sizing with a multi-year ladder, a retirement withdrawal simulation, a 3×3 market-cap and style grid, pre-buy impact analysis, and a comparison of donating appreciated shares against selling and donating cash.
- Outlook. Monte Carlo simulation over 1,000 paths run against your actual holdings, a goal calculator, and long-horizon growth projection at a rate you control.
- Summary Insights. One page that restates the rest: where the money sits, the largest company exposures, the biggest sectors, the historical growth rate on record, assets held outside the portfolio, cash — and, at the foot, what is worth your attention, ranked. It computes nothing of its own; every figure is read from the tab that produced it.
- Tracking. An options position tracker that reads the option rows in a Fidelity export and pairs them into spreads — structure, contracts, days to expiry, cost basis, current value, profit and loss and breakeven — with unpaired legs shown individually. The Black-Scholes delta computed from those rows feeds the stress scenarios rather than a view of its own.
With a plan: all twenty-five analyses above, including the fund look-through the tool was built for. What it costs.
What an account needs: your name, an email address and a password, the role that describes you — with your firm’s name if you are an adviser, broker, insurance agent or accountant — and your acceptance of the terms. A phone number and how you heard of us are optional. What a plan costs.
What it does not do
Some honest boundaries, because a tool that overstates itself is worse than one that does less.
- Fund holdings come from public disclosures and are periodically refreshed, so they lag a fund's current composition. Funds already in the built-in database resolve instantly; others are looked up from SEC filings on demand, which sometimes fails, in which case the fund is shown as a single position rather than broken apart.
- Option positions are read from Fidelity's symbol format. Other brokers' option rows are skipped rather than guessed at.
- Tax figures are not all built the same way. The retirement projection indexes the brackets, the standard deduction and the extra deduction from 65 forward rather than freezing them at today's, which is closer but still a model: it cannot know what Congress will do. The Roth conversion tools hold today's brackets flat. On the Reallocation tab, the sector-by-sector trim estimates assume a flat 15% long-term rate, and the trade plan uses the long-term rate you pick there, 20% unless you change it. They are estimates for comparing choices, not a tax return.
- Tax-loss harvesting covers taxable accounts only — losses inside an IRA, Roth or 401(k) are not deductible, so they are deliberately excluded.
- There is no transaction history and no price history in a positions export, so the tool cannot compute your actual return — not time-weighted, not money-weighted. The portfolio figure on the Performance tab weights each holding’s own trailing return by what it is worth today, which flatters anyone who added to winners. Ask your broker or an adviser if you need a true performance figure.
- One-, three-, five-, ten- and fifteen-year returns are computed on our own server from adjusted monthly closes, and marked with a dagger where we are still falling back to the older hand-maintained table for a symbol the refresh has not reached. Year-to-date and the distance from the 52-week high come from a daily price refresh on the same server; they arrive with the portfolio and are as of the last refresh, not live quotes.
- Projections and simulations are models. They describe a range of possibilities given a set of assumptions; they are not forecasts.
How your data is handled
Your file is parsed in your browser rather than on a server. What reaches us is taken from it, as the next two paragraphs set out: the ticker symbols needed to classify and price what you hold, the description of any fund it cannot identify, and — if you are signed in — the positions it read, which are saved to your account.
That is not the same as making no network requests, and the marketing should not pretend otherwise. To identify and price what you hold, the app sends the ticker symbols it found to its own server each time a portfolio is opened, without waiting to be asked, and can look an unknown fund up from public SEC filings. The server keeps a list of the symbols it has seen, with no account attached, so it knows what to price; “Delete my data” does not clear that list. Where it meets a fund it cannot identify at all, it also sends the description printed beside it — normally the fund’s name — so the fund can be added to the database. Dollar amounts, percentages and long digit strings such as account references are removed from it first; a short number that is part of a name stays, and so could a share count or price printed in the same cell. To classify the companies inside a fund it is looking up, our server may send their ticker symbols to Finnhub. Your quantities, dollar values and cost basis are not otherwise sent for any of that. Signed out, they stay on your device. Signed in, importing a portfolio keeps the parsed result against your account so you do not have to import it again — the statement file itself still is not kept.
If you sign in, what we keep includes your email address; the name, the role and, for advisers and other professionals, the firm you give at sign-up, a phone number and how you heard of us if you add them, and when you accepted the terms; your password, never in readable form — it goes through PBKDF2-SHA-256 with a per-account salt, and only the derived value is kept; a log of which features you open, with timestamps, against that address; and, if you import a portfolio while signed in, the positions it read — symbol, description, account label, quantity, price, value, cost basis and asset type — with the date of your statement, one record per statement date. Our server strips what looks like an account number from the account label before it is saved — a run of four or more digits, or a form such as x7788 or …1234 — but a number written in short groups, or any name, is not recognised and would be kept. The plans and corrections you save — retirement, college, other assets, and account names, types and groups — are kept too, and if you look after clients, so is each client’s name, any phone and email you add for them, and their portfolios and plans. The anonymous identifier used to count visitors is recorded alongside your email if you go on to create an account, so “looked and left” can be told apart from “looked and signed up”. The privacy policy sets out what is sent, what is kept, and how to remove it.
Who built this
Portfolio Analysis is built and operated by Tulir Systems LLC, a company formed in New Jersey, United States, which also builds PulseAlert. It is not affiliated with, endorsed by, or sponsored by Fidelity Investments, Charles Schwab, Finnhub, or any broker, fund company or investor named anywhere in the app. It began as one investor’s attempt to get better tools than the platforms offered, and is now maintained as a Tulir Systems product.
A note on limitations
This tool is for informational and educational purposes only. It is not financial, investment, tax or legal advice, and nothing in it is a recommendation to buy, sell or hold any security. Past performance does not guarantee future results. Consider speaking with a licensed financial advisor or tax professional before acting on anything you see here. The terms of service set out the full detail.
Ready to see what your funds really own?
A plan opens every analysis above — see pricing. Or open the demo portfolio and look around with demo data first.
Sign up →Already have an account? Sign in · Try the demo portfolio