The Portfolio Tracking Stack
The Portfolio Tracking Stack
Tracking your portfolio is not a single tool—it's three layers that answer different questions. You need all three.
Key takeaways
- Broker statements are the source of truth; aggregators add convenience; spreadsheets add context.
- A broker gives you one account's history; an aggregator shows everything at once; a spreadsheet shows what you meant to do.
- Most investors skip the spreadsheet layer and end up chasing phantom performance problems.
- Your tracking stack should take under 10 minutes per month if it's designed right.
- The three layers fail differently—redundancy is your protection against confusion.
The three-layer model
A working tracking system has exactly three components, and they work in sequence. Think of them not as alternatives but as a stack—each layer answers a different question.
Layer 1: Broker statements. Your broker is the legal record. It tells you what you own, what you paid, and what you received in dividends and distributions. When you log into your brokerage account—whether it's Vanguard, Fidelity, Schwab, or Interactive Brokers—you are looking at the primary source of truth. Broker statements are published monthly or quarterly and form the audit trail. If your broker says you own 100 shares of VTI at cost basis $156.47, that is the fact. Nothing overrides it.
The limitation of broker statements is scope: each broker shows only what you own at that broker. If you have accounts at three different institutions, you must manually combine them to see your complete portfolio. This is where layer 2 enters.
Layer 2: Aggregator services. Tools like Personal Capital (now Empower), Sharesight, or Morningstar Premium pull your account data automatically via API and display it on a single dashboard. An aggregator answers the question: "How much am I worth right now, and what is my asset allocation?" It shows your total across all accounts without manual work.
Aggregators are convenient but not primary sources. They depend on the broker's API, which sometimes breaks or lags. They also create a security surface—you are handing the aggregator your login credentials or OAuth token, which carries risk. Some aggregators are more trustworthy than others, but none are immune to outages or data errors.
Layer 3: Your personal spreadsheet. A spreadsheet is where you record intent. It holds your contribution plan, your target allocation, your rebalancing rules, and any manual adjustments you've made. It is the document that answers: "Am I on track to reach my goals?" and "Did I do what I said I would do?"
A spreadsheet is not a source of truth about current holdings—that's the broker's job. Rather, it is a record of your plan and a place to calculate meaningful returns against your actual contributions. When you rebalance, you record it here. When you harvest losses or take a one-off withdrawal, you document it. Without this layer, you are always starting from zero when you try to assess your own performance.
Why you need all three
Many investors pick one layer and call it a day. This is a mistake because the layers fail in different ways.
If you rely only on broker statements, you cannot answer "How much am I worth overall?" without manually summing spreadsheets. This is tedious and error-prone. You also cannot easily see your asset allocation without doing the math by hand.
If you rely only on an aggregator, you become dependent on a third party that you do not control. Personal Capital has had outages. API updates break connections. Sometimes a fund is not available in the aggregator's database. If you lose access to the aggregator or it goes out of business, you lose your historical view.
If you rely only on a spreadsheet, you lose the legal record. You cannot verify your cost basis without reconciling to broker statements. You have no audit trail for tax purposes. You cannot detect errors or theft.
The three layers protect each other. Broker statements are the baseline truth. Aggregators give you speed and wholeness. Spreadsheets give you context and intent. Run a simple monthly check: does the aggregator match the broker statements (allowing for lag)? Does the spreadsheet match the aggregator? If all three agree, you are tracking correctly.
What data flows through each layer
Think of what information each layer owns:
Broker statements hold:
- Holdings and quantities
- Cost basis (purchase price and date)
- Dividends and distributions received
- Fees and interest charged
- Cash balance
- Trade confirmations (dates, prices, amounts)
Aggregators hold:
- Current market value across all accounts
- Current asset allocation (by asset class or fund)
- Aggregate cash balance
- Total net worth (including real estate, if you enter it)
- Performance graph (time-weighted return approximation)
- Alerts (price movements, account changes)
Spreadsheets hold:
- Contribution history (deposits and withdrawals)
- Target allocation (your stated goal)
- Rebalancing log (dates and amounts moved)
- Tax-loss harvesting records (sold pairs, loss amounts, wash-sale notes)
- Account open dates and custodian types
- Your benchmark and expected return
Setting up the stack in practice
Start simple. Your broker statement is automatic—you do not build it; the broker gives it to you. You do not need to set it up.
For the aggregator layer, pick one service and give it read-only access. Personal Capital and Empower are the most popular for US investors; Sharesight is strong in Australia; Morningstar Premium offers a less intrusive alternative. You do not need an aggregator if you have only one broker, but most investors benefit from one if they hold accounts at multiple institutions.
For the spreadsheet, use Google Sheets or Excel. A basic tracking spreadsheet has a few sheets:
- Holdings sheet: ticker, shares held, current value (pulled from aggregator or a price feed), cost basis (from broker)
- Contributions sheet: dates, amounts, account type, purpose
- Returns sheet: beginning value, contributions, ending value, return calculated
- Rebalancing log: date, from/to, reason, quantity, new allocation
You do not need to build a spreadsheet from scratch. Bogleheads has templates. Some tax-loss harvesting tools include them. Start with a template and modify it to match your broker's reporting.
The monthly check ritual
Once you have the three layers in place, a monthly review is fast. Set aside 5 minutes on the first business day of each month:
- Log into your broker and scan the holdings screen. Look for obvious errors—a position you did not buy, a missing dividend, an unexpected fee.
- Check your aggregator (if you use one). Does the total match what you expected? Did all accounts sync?
- Open your spreadsheet. Record any contributions or withdrawals that hit the accounts. Update the date and take a screenshot or note the total value from the aggregator.
If all three layers agree, you are done. If they do not, investigate. Usually the lag between when you trade and when the aggregator syncs is the culprit. Rarely, you will find a real error—a fee you were not aware of, a dividend reinvestment that double-counted, or a position that the aggregator misidentified.
Common mistakes
Confusing the layers. Treating your spreadsheet as a real-time holdings database leads to drift. Your spreadsheet is for context and math, not for state. Your broker is for state.
Over-aggregating. Adding the aggregator data to the spreadsheet verbatim wastes time. You only need the aggregator total, not every individual position (the broker has those).
Ignoring the spreadsheet. Investors who skip the spreadsheet often cannot answer "Did I beat my benchmark?" or "Am I on track to retire in 2045?" The aggregator will not answer these questions—it shows you the past, not the future.
Switching tools mid-year. If you change from one aggregator to another, you lose the historical graph. Choose a tool you can stick with, or accept that you will lose continuity.
How it flows
Next
You have the framework. Now we go deeper: the first tool in the stack is your broker, and you need to understand what broker statements actually show—and why they are not the same as what your aggregator displays.