Best Value Complete Financial Planning Bundle
✓ Financial Planning✓ Net Worth Tracker✓ Monthly Budgeting✓ Travel Budget Planner✓ Annual Budgeting Planner✓ Monthly Expense Tracker✓ Annual Tax Planner✓ Retirement Planning
View Bundle →

Investment Portfolio Tracker (Excel, With Dividend Log and ROI)

Stock portfolio tracker spreadsheet with holdings and dividend log visible

Quick Summary

An investment portfolio tracker spreadsheet logs holdings, dividends, and returns across accounts. Includes Excel template, ROI formula, and broker CSV import workflow.

Quick answer. An investment portfolio tracker spreadsheet has three sheets: Holdings (one row per position with shares, cost basis, current value), Dividends (one row per payment with date, ticker, amount), and Performance (cumulative ROI by holding and portfolio total). Our Investment Portfolio Tracker Excel template is $12 and ships with these three sheets plus broker CSV import compatibility.

The portfolio tracker is the spreadsheet that long-term investors actually use most often. Brokerage statements show you the current snapshot; the spreadsheet shows you the history, the dividend pattern, and the performance attribution. This post covers the column structure, the formulas that matter, and the workflow for keeping it current.

What the tracker needs to do

Five jobs.

  1. List every position with cost basis and current value. This is the table.
  2. Log every dividend received. For dividend tracking and total return calculation.
  3. Calculate cumulative ROI per position. Both price appreciation and dividend yield.
  4. Aggregate portfolio totals. Total cost, total value, total return.
  5. Make broker statements importable without manual re-typing. CSV paste workflow.

That’s it. Charting, asset allocation, sector breakdown are all extras that can sit on a dashboard but aren’t required for the core function.

The Holdings sheet

One row per position. Columns:

ColumnExampleNotes
TickerVTIOr fund name
AccountVanguard taxableHelps when you have multiple accounts
Shares124.5Including fractional
Cost basis (total)22,800What you paid for all shares combined
Avg cost per share=Cost basis / SharesCalculated
Current price245.30Manual update or formula
Current value=Shares * Current priceCalculated
Unrealized gain/loss=Current value - Cost basisCalculated
Percent return (price only)=(Current value - Cost basis) / Cost basisCalculated
Annualized returnXIRR-basedOptional

The Current price column is where most trackers handle either manual updates (you type in a price weekly) or formula-based pulls. Google Sheets has GOOGLEFINANCE which can pull live prices: =GOOGLEFINANCE("VTI","price"). Excel doesn’t have a built-in equivalent (some workarounds exist via Power Query or Stock data type).

For most users, manual updates weekly or monthly are easier than wrestling with live data feeds. The portfolio doesn’t change second-to-second; weekly is sufficient for tracking.

The Dividends sheet

One row per dividend received. Columns:

ColumnExample
Date paid2026-03-31
TickerVTI
AccountVanguard taxable
Amount87.20
Per-share0.70
DRIP?Yes
NotesQ1 2026 distribution

Why log dividends separately instead of relying on broker statements? Two reasons. First, dividend totals across accounts are tedious to assemble at tax time without a single log. Second, total return (price appreciation plus dividend yield) is the right measure of investment performance, and you can’t calculate it without the dividend log.

Most brokers export dividends as a CSV for any date range. A monthly paste into the Dividends sheet keeps it current.

The Performance sheet

Read-only. Pulls from Holdings and Dividends and produces:

  • Total portfolio value (sum of Current value column)
  • Total cost basis (sum of Cost basis column)
  • Unrealized gain/loss (total value minus total cost)
  • Total dividends YTD (sum of Dividends sheet for current year)
  • Total dividends LTM (last twelve months)
  • Total return YTD = (current value plus YTD dividends - prior year-end value) / prior year-end value
  • Total return since inception (XIRR across all cash flows)

The XIRR calculation is the gold-standard performance measure because it accounts for the timing of contributions and dividends. The formula in Google Sheets:

=XIRR(cash_flows_range, dates_range)

Where cash flows are negative for contributions, negative for dividends reinvested, and positive for current value (as if you sold today). Dates are the corresponding transaction dates.

This is more accurate than simple “current value minus cost basis divided by cost basis” because it factors in when you put money in.

A worked example

Dana has a small taxable portfolio. Her Holdings sheet:

TickerAccountSharesCost basisCurrent priceCurrent valueGain/lossPercent
VTIVanguard78.418,200245.3019,2311,0315.7%
VXUSVanguard102.16,40064.806,6162163.4%
VTEBVanguard156.78,30051.108,007-293-3.5%
Total32,90033,8549542.9%

Dividends YTD: $412. Total return YTD (price plus dividends): $954 + $412 = $1,366. Against a starting balance of $32,900, that’s 4.1 percent YTD.

She updates current prices weekly, dividends monthly, and reviews the Performance dashboard quarterly. Total time: about 90 minutes a year for a small portfolio.

Where the spreadsheet helps that the broker doesn’t

Cross-broker view. If you have positions at Vanguard, Fidelity, and a 401(k) at Schwab, no single broker shows the consolidated view. The spreadsheet does.

Historical dividend yield. Brokers often show last 12 months. A spreadsheet shows whatever range you’ve logged.

Total return vs price-only return. Brokers often default to price-only. The spreadsheet calculates true total return including dividends.

Tax-lot detail for selling decisions. The spreadsheet can hold tax-lot rows (date acquired, shares, cost) to identify which lots to sell for tax-loss harvesting. Some brokers expose this; many don’t, especially for old positions.

Where the spreadsheet doesn’t help

Live prices. Brokers show live; spreadsheets show last-updated. For long-term investors this doesn’t matter; for active traders it’s a deal-breaker.

Tax document generation. Brokers send 1099-DIV, 1099-INT, 1099-B at year end. The spreadsheet doesn’t produce these; you still need broker docs for tax filing. The spreadsheet helps cross-check and pull deduction-relevant numbers but doesn’t replace.

Cost basis for old positions. If you have positions purchased before 2011, brokers may not have cost basis. You may need to reconstruct it. The spreadsheet is a place to record what you find, not a way to find it.

The broker CSV import workflow

Most brokers let you download a transaction CSV. The workflow:

  1. In the broker portal, open Transaction History or Account Activity.
  2. Filter to the date range you want (typically last month or YTD).
  3. Export as CSV.
  4. Open the CSV in Excel or Sheets.
  5. Filter to dividend rows (transaction type = “DIV” or similar).
  6. Copy the relevant columns (date, ticker, amount).
  7. Paste into the Dividends sheet of the tracker.
  8. For new buy/sell transactions, update the Holdings sheet with new share counts and adjusted cost basis.

10 minutes a month if you do it consistently. Two hours if you wait until December. Consistency wins.

What our paid template adds

The Investment Portfolio Tracker Excel template is $12 and includes:

  • Pre-built Holdings, Dividends, and Performance sheets with the columns above
  • Asset allocation pie chart (auto-categorizes by asset class if you tag holdings)
  • Multi-account totals
  • Currency support (for international holdings)
  • Excel format that opens in Sheets, Numbers, LibreOffice
  • XIRR formulas pre-built

If you’d rather build it from scratch, the structure above is reproducible in about 90 minutes. Most people who track manually for 6 months end up wanting a template anyway, so the $12 saves the rebuilding effort.

What I’d add after a year of using one

Two things I added to my own copy:

A “tax efficiency” tag per holding. Lets me note which positions are in taxable vs tax-advantaged accounts. Useful for asset location decisions (bonds belong in tax-advantaged; stocks can sit in either; international has different optimal placement).

A “rebalance check” cell. If my target allocation is 70 stocks / 25 bonds / 5 cash, the cell calculates current drift. When drift exceeds 5 percent in any bucket, I rebalance. The cell turns red as a visual cue.

Five extra cells, real change in usefulness.

Get the template

Ready to get started?

Download instantly and start managing your finances, or contact us to design a custom template package for your needs.

Private & secure

Your financial data stays on your device. We never see it.

Learn more →

Need help?

Check our guides or reach out with questions.

View FAQ →