Free CSV portfolio tracker with FIFO realized gains

Portfolio Terminal is a free web portfolio tracker that reads the transaction-history CSV exported by 10 brokers (Interactive Brokers, Trading 212, Freetrade, DEGIRO, Revolut, Charles Schwab, Fidelity, Robinhood, Vanguard and Webull) and any other file with a date, a transaction type, a ticker and a quantity. It matches every sale to the oldest shares first (FIFO) and lists each realized gain with the day the shares were bought, short or long term, proceeds after fees and cost including the purchase fee. Each year downloads as a CSV in IRS Form 8949 column order, and the same sales can be shown at average cost instead. No account and no broker login are needed.

10 brokers read · FIFO or average costby Julien Esnault, who makes Portfolio Terminalupdated October 5, 2026

01Brokers

Where each broker exports its transaction history

brokers10 read directly
  • Interactive BrokersPerformance & ReportsStatementsActivityChoose a custom period from the day you opened the account, and CSV.
  • Trading 212HistoryExportCSVOne year per file: export each year and add them all.
  • FreetradeActivity⋯ExportOne file holds the orders and the dividends, dividends net of withholding.
  • DEGIROInboxTransactionsExportCSVSet the start date to the day you opened the account. Add the Account statement export too: it is the only file with your dividends.
  • RevolutInvest⋯DocumentsBrokerage accountAccount statementPick the CSV or Excel version, from the day you opened the account.
  • Charles SchwabAccountsHistoryExportChoose a custom range from your first trade. Add the Positions export too, and anything older is filled in.
  • FidelityAccounts & TradeActivity & OrdersHistoryDownloadPick the widest range it offers. Add the Positions download too, and anything bought before the range is filled in.
  • RobinhoodAccountReports and statementsReportsGenerate an account activity report from your first trade; it takes a few minutes.
  • VanguardMy AccountsTransaction historyDownloadVanguard only goes back 18 months, so older purchases may be missing.
  • WebullAccountOrdersFilledExportDesktop app only. The file arrives by email, 90 days at a time: add every file.

Any other broker: a CSV with a date, a transaction type, a ticker or ISIN and a quantity goes through the generic reader. No dedicated reader yet for E*TRADE, Merrill Edge, J.P. Morgan, Trade Republic, Scalable Capital, eToro, Saxo, BoursoBank, Fineco; their positions still import from a copied table or a screenshot.

02FIFO

How a sale is matched, on one example

fifo · worked exampleinvented prices

The trades in the file

  • Mar 4, 2024 · buy 10 at $240.00 · fee $1.00
  • Jun 2, 2025 · buy 5 at $300.00
  • Mar 10, 2026 · sell 12 at $330.00 · fee $1.00

What FIFO sells first

  • 10 shares bought Mar 4, 2024 · long term, held over a year$3,299.17 − $2,401.00 = +$898.17
  • 2 shares bought Jun 2, 2025 · short term, held a year or less$659.83 − $600.00 = +$59.83

Realized gain, FIFO

+$958.00

Same sale at average cost

+$838.20

FIFO sells the 10 cheaper 2024 shares first, so it reports $119.80 more gain on the same sale. At average cost, every share sold carries the same $260.07. The purchase fee is spread over the shares it bought, the sale fee over the shares sold.

03Report

What the sales report shows

sales report
  • Every sale of the year, newest first: shares sold, sale price, proceeds after the sale fee, cost and gain.
  • With FIFO on, each sale is split by the lots it took: the day those shares were bought, and short term (held a year or less) or long term.
  • Switch to Average and the same sales are priced at the average cost paid, the method French and most European brokers report.
  • The year downloads as a CSV: description, date acquired, date sold, proceeds, cost basis, gain or loss, term, currency (the IRS Form 8949 columns, in order).
  • Amounts stay in the currency the holding trades in; a trade in another currency is converted at that day's exchange rate, never at today's.
  • Dividends from the same file land in the income panel, by month and by year, reinvested dividends included.
04Compared

How other trackers report realized gains

realized gainschecked October 5, 2026
05Limits

What it does not do

limits
  • Sales the file cannot match to a purchase are reported as incomplete, not guessed. Export from your first trade, or add the positions export with the history.
  • Deposits, withdrawals, interest, currency conversions and options in the file are skipped, and counted by type on the review screen before anything is saved.
  • No automatic sync: after new trades, you add the new file.
  • Not tax advice. Check the totals against the annual statement your broker sends.
06Questions

CSV import and FIFO gains: what people ask

questions5 answered

Which free portfolio tracker calculates FIFO realized gains from a broker CSV?

Portfolio Terminal does, for free. It reads the transaction-history CSV of 10 brokers directly (Interactive Brokers, Trading 212, Freetrade, DEGIRO, Revolut, Charles Schwab, Fidelity, Robinhood, Vanguard and Webull) and other files through a generic reader, matches each sale to the oldest shares first, and lists every realized gain with its holding period. Each year exports as a CSV in IRS Form 8949 column order.

Do I have to connect my broker account?

No. You export the CSV from your broker and add it; nothing logs in to the broker, and a guest mode works without creating an account. The trade-off: after new trades, you add the new file.

FIFO or average cost: which one should I use?

In the US, FIFO is what the IRS applies when you do not identify which shares you sold. France and most European brokers use the weighted average price instead. The report shows either, and remembers your choice. It is not tax advice: compare with your broker’s annual statement.

What if my broker is not on the list?

A CSV with a date, a transaction type (buy, sell, dividend), a ticker or ISIN and a quantity goes through the generic reader, with English, French or German column names; Sharesight and Snowball exports are read that way too. Without any history, a positions screen still imports, but with no purchase dates the holding period of a sale shows as unknown.

What if my export starts after my first purchase?

Sales the file cannot match to a purchase are reported as incomplete rather than guessed. Add the positions export next to the history: shares bought before the file starts become one opening lot, dated the file's first day, priced at that day's close and marked as estimated.

Add your broker's CSV and see this year's gainsFree, no card, no broker login. Every line is shown for review before anything is saved.Import my CSV

Portfolio Terminal is made by the author of this page. Every statement about another tool links to that tool's own page, read on October 5, 2026. Nothing here is tax or investment advice.