Portfolio Analyzer

Upload your brokerage positions and see how everything you hold has actually behaved over the last 1–5 years: returns, volatility, Sharpe, drawdowns, and more.
1 · Add your holdings CSV from any major broker, a pasted list, or typed in
Drop your positions CSV here
or click to choose a file · .csv / .txt
🔒 Your file is read in your browser and never uploaded. Only the ticker symbols are sent to our server to look up price history; share counts, dollar amounts, and account numbers never leave this page.
Paste or type holdings instead

One holding per line: TICKER, amount. You can also paste straight from a spreadsheet; a header row like Symbol, Quantity or Symbol, Market Value is detected automatically.

Without a header, the amounts are:
How to export from your broker
Fidelity
  1. Log in at fidelity.com, then open Accounts & Trade → Portfolio.
  2. Pick All accounts (or one account) and open the Positions tab.
  3. Click the download icon (⤓) at the top right of the positions table.
  4. Drop the downloaded Portfolio_Positions_….csv here.
Charles Schwab
  1. Go to Accounts → Positions.
  2. Choose an account, or All Brokerage Accounts.
  3. Click the Export icon (top right of the table) and save the CSV.
  4. Drop the …-Positions-….csv file here.
Vanguard
  1. Open My Accounts → Download center (search "download center" if you can't find it).
  2. Choose A spreadsheet-compatible CSV file, then pick your accounts.
  3. Pick any recent date range and download.
  4. Drop the OfxDownload.csv here. Only the holdings section is read; transactions are ignored.
E*TRADE / Morgan Stanley
  1. Go to Accounts → Portfolios and select the account.
  2. Click Download (or the ⤓ icon) above the positions table and choose CSV.
  3. Drop the file here.
Merrill Edge
  1. Open Portfolio → Holdings (or Accounts → Holdings).
  2. Use Export / Download above the table and choose CSV.
  3. Drop the file here.
Interactive Brokers
  1. In the Client Portal, go to Performance & Reports → Statements.
  2. Run an Activity statement for today in CSV format.
  3. Drop it here. Only the Open Positions section is read.
Robinhood

Robinhood doesn't offer a positions CSV. Open Investing in the app, then use Paste or type holdings instead above with each ticker and its share count (choose "share count"). Robinhood does export account activity, which the optional "How did you do?" step below can read.

Webull, SoFi, Public, others

Look for Export or Download on your positions or holdings screen. Any CSV with a Symbol column plus a Quantity or Market Value column works. If your broker has no export, download our blank template and fill it in.

Broker menus move around. If a step doesn't match what you see, look for a ⤓ / Export button on whatever page lists your positions.

What these numbers mean
Total return
Growth from the start of the period to today, with dividends reinvested (adjusted prices).
CAGR
Compound annual growth rate: the steady yearly return that would produce the same total return.
Avg return
Arithmetic average daily return × 252 trading days. Always ≥ CAGR; the gap grows with volatility.
Std dev
Annualized volatility: standard deviation of daily returns × √252. About two-thirds of years land within ±1 std dev of the average.
Sharpe
Average return above the risk-free rate (3-month T-bills) divided by volatility. Above 1 is strong; below 0 means T-bills did better.
Sortino
Like Sharpe, but only counts downside volatility, so upside swings aren't penalized.
Max drawdown
Largest peak-to-trough decline during the period.
Calmar
CAGR ÷ |max drawdown|: return earned per unit of worst-case pain.
Beta
Sensitivity to the benchmark. 1.2 means it moved about 1.2% for each 1% move in the benchmark.
Alpha
Annualized return beyond what beta alone predicts (Jensen's alpha). Backward-looking, not skill.
Correlation
How closely two daily-return series move together, from −1 to +1. Lower correlation between holdings means more diversification.
Efficient frontier
For each level of volatility, the best return any mix of your holdings (no shorting or leverage) earned over the period: Markowitz mean-variance. A portfolio below it took more risk than it needed for its return. It's computed with hindsight.
% of risk
Each holding's share of total portfolio variance: its weight × its covariance with the whole portfolio ÷ portfolio variance. Sums to 100%.
Effective # of holdings
1 ÷ sum of squared weights. Ten equal positions = 10; one 90% position plus nine tiny ones ≈ 1.2.
Unrealized gain
Current value minus cost basis (what you paid, per your broker). Lifetime, not annualized.
Expense ratio
The yearly fee a fund takes out of its assets, as a % of what you hold. 0.50% on $10,000 is $50 a year, every year.
Look-through
Adding up what your funds hold underneath, so owning AAPL directly and through three index funds shows up as one total.
Tax-loss harvesting
Selling a position below what you paid to realize a loss that offsets gains (and up to $3,000 a year of ordinary income), then buying something similar but not "substantially identical" to stay invested.
Wash sale
If you buy the same or a substantially identical security within 30 days before or after selling at a loss, in any account, the loss is disallowed for now.
Monte Carlo
Running thousands of random markets with a chosen average return and volatility to see the spread of outcomes, not just one average line.
Money-weighted return
Your personal annualized return including the timing and size of your buys and sells (the IRR of your cash flows). Different from the time-weighted figures above, which ignore when money went in.
Up / down capture
Average return in the benchmark's up months (or down months) as a percent of the benchmark's. Under 100% on the down side is good.

Past performance does not predict future results. This is an educational tool, not investment advice. Prices come from Yahoo Finance and may contain errors.