Brokerage CSVs and spreadsheet holdings can make a portfolio look cleaner than it really is. Before you trust an allocation view, income plan, or tax file, you need to know which rows belong to which account, which rows are duplicates, and whether cash, basis, and share counts reconcile to the source documents.
As of 2026-04-23, tax rules, broker reporting requirements, and ETF issuer data cited below are summarized from IRS publications, SEC/FINRA guidance, and issuer fund pages; verify on the linked pages before acting. This is educational, not tax advice. Consult a qualified tax professional for your situation.
Brokerage exports from Fidelity, Schwab, Vanguard, Interactive Brokers, and Robinhood can all describe the same basic holding in different ways. One file may show a ticker, another may include CUSIP, another may split cash, pending activity, and sweep balances into separate sections. Spreadsheet lists add another risk: they often preserve old tickers, copied share counts, and manual categories long after the broker statement changed.
What Makes a Portfolio Import Usable?
A portfolio import is usable when every row can be traced back to a real account, source date, security identity, quantity, and cash status. If a row cannot be explained quickly, quarantine it. In this context, quarantine means keeping the row out of allocation, income, and performance totals until the source is confirmed.
Start With Account Mapping
Map every file, connection, and manual sheet to one real account before you clean the holdings. A VTI row in a taxable brokerage account is not the same record as a VTI row in a Roth account, even if the ticker and share count match.
- Taxable brokerage: use the broker name, account nickname, and statement date, such as a Fidelity joint taxable account from the December statement.
- Traditional IRA or 401(k): keep rollover IRA, employer plan, and inherited retirement accounts separate from taxable files.
- Roth account: do not merge with a traditional IRA just because both accounts hold the same ETF.
- Education account: label 529 or education savings rows as their own account type.
- Cash account: keep bank cash, brokerage cash, and spreadsheet reserve cash separate until reconciled.
- Crypto exchange or wallet: separate token symbols from securities tickers because symbols can overlap.
- Manual spreadsheet account: tag the sheet owner, source date, and reason the position is not coming from a broker file.
Decision rule: one source, one account, one account type. If a row has no account label or statement date, quarantine it until the source is known.
Clean the Core Fields Before Importing
Normalize the source fields before import. A staging view is simply a temporary review table where you can inspect, label, and fix rows before they affect portfolio totals. Do not let “Symbol,” “Ticker,” “Security ID,” and “Investment Name” land in the same column without review.
| Field | Clean import test |
|---|---|
| Ticker or symbol | Confirm the ticker against the broker statement or issuer page before merging rows. |
| Security name | Use the name to catch ticker collisions, old symbols, and fund share-class confusion. |
| Quantity | Match the exact share quantity and decimal precision shown by the broker. |
| Price | Check whether the file uses last price, NAV, trade price, or statement price. |
| Cost basis | Keep blank, estimated, covered, and noncovered basis labels visible instead of filling gaps by guess. |
| Account | Prevent the same holding from being counted once in taxable and again in a manual sheet. |
| Asset category | Classify after identifying the security, not before. |
For tax-sensitive basis records, basis is generally the amount of your investment in property for tax purposes, and records affecting basis should be kept.[1] Covered basis usually means the broker is required to report basis to the IRS; noncovered basis usually means the broker may not have that reporting obligation, so the imported field deserves extra review.[2]
ETF identity should come from the issuer, not memory. VOO and VTI are both Vanguard ETFs, but they are different funds.[3][4] IVV and SPY both reference the S&P 500, but they are issued by different sponsors and should stay separate at the holding level.[5][6]
Find Duplicates Before They Break Totals
Duplicates are not always obvious. The same ticker can be valid in multiple accounts, and the same account can appear twice if a broker feed and a manual spreadsheet overlap.
- Connected account imported twice: compare account number, broker name, and statement date before keeping both sources. This can double allocation, dividends, and withdrawal capacity.
- Broker import plus manual spreadsheet entry: keep the broker row and archive the spreadsheet row unless the sheet documents a position missing from the statement.
- Stale spreadsheet row after a transfer: look for a matching outgoing and incoming activity record before treating the position as new money.
- Joint account imported under two users: treat the statement as one account record, not two household positions.
- Old ticker and new ticker both listed after a symbol change: compare security name, CUSIP if available, and broker corporate action notes before merging.
Duplicate cleanup also matters for wash-sale review. IRS guidance describes a wash sale as a sale or trade of stock or securities at a loss with an acquisition of substantially identical stock or securities within 30 days before or after the sale.[7]
Classify Cash Before Calculating Allocation
Cash needs a status, not just a dollar label. Sweep cash is brokerage cash automatically moved into a bank deposit program or money market sweep option. It may look like cash in one export and like a money market position in another. A sale that appears as cash on trade date may also be unsettled cash until settlement under the T+1 cycle for many U.S. securities transactions.[8]
- Brokerage sweep cash: classify as cash unless the statement shows a separate security with shares.
- Unsettled sale proceeds: keep in an unsettled bucket until settlement.
- Pending deposits: keep separate from available cash until posted.
- Money market funds: treat as a holding when the statement shows ticker, CUSIP, or shares.
- Reserved cash for taxes or withdrawals: keep as a manual reserve note, not as a duplicate imported holding.
Decision rule: if one source shows cash and another shows a money market position for the same account, reconcile to the broker statement before importing both. Counting the same liquidity twice can make a retiree withdrawal plan or dividend reinvestment plan look safer than it is.
Use a Step-by-Step Import Review
Use the broker statement as the control document. FINRA requires general securities members to send customer account statements at least quarterly for accounts with activity or balances, and those statements include securities positions, money balances, or account activity.[9]
- Load the Fidelity taxable export, the Schwab Roth IRA export, and the manual dividend spreadsheet into a staging view.
- Assign each row a source account, account type, broker or manual source, and source date.
- Match holdings by account plus ticker or CUSIP, not ticker alone.
- If the same VTI row appears in the Fidelity taxable CSV and in a manual dividend spreadsheet for the same account, keep the broker row and quarantine the spreadsheet row until the statement proves it is separate.
- If VTI appears in both the Fidelity taxable account and the Schwab Roth IRA, keep both rows because the account identity is different.
- Classify cash as sweep cash, settled cash, unsettled proceeds, pending deposit, or money market holding before calculating allocation.
- Compare total account value, cash value, largest holdings, fractional shares, basis labels, and source dates against the statement.
- Flag missing basis, stale prices, old tickers, and unexplained manual values before using allocation, income, or performance views.
| Import case | Action | Why |
|---|---|---|
| Same ticker, same account, same source | Check for duplicate rows before importing. | The source file may repeat lots, reinvestments, or subtotals. |
| Same ticker, different accounts | Keep separate. | Account location changes allocation, cash planning, and recordkeeping. |
| Broker row plus manual row for same account | Broker statement wins unless the manual row has a documented source. | Manual sheets often lag after trades, transfers, and reinvestments. |
| Sweep cash plus money market position | Reconcile to the statement before counting both. | Some exports separate liquidity into categories that describe the same dollars. |
| VOO, IVV, and SPY | Keep separate holdings; group only at asset-category level. | Issuer pages identify them as distinct ETF products. |
After reconciliation, Deep Digital Ventures Portfolio Tracker can help organize holdings across accounts. Use it once each account is mapped, fields are normalized, and imported rows tie back to statements, IRS forms, issuer pages, or saved manual sources.
Clean Import Checklist
- Map each file, feed, or spreadsheet to the correct account and statement date.
- Standardize ticker, security name, CUSIP when available, and issuer page reference.
- Check share quantities against the broker statement, including fractional shares.
- Preserve source-reported basis fields and any covered or noncovered labels.
- Remove duplicates only after comparing same account, same ticker or CUSIP, and same source date.
- Classify cash as sweep, settled, unsettled, pending, reserved, or money market holding.
- Reconcile total account value, cash value, largest holdings, and account date with the broker statement.
- Save import date, source file name, broker, and manual adjustment notes.
Do not rely on the import if there is an unexplained difference in share count, cash classification, account identity, or source date. The import is usable when each row traces back to a broker statement, IRS form, ETF issuer page, or saved manual source.
FAQ
Should I import Form 1099-B or the brokerage holdings CSV?
Use the brokerage holdings export or statement for current positions, and use Form 1099-B, Form 8949, and Schedule D for sales and disposition records.[10] Form 1099-B is not a complete current-holdings file.
What if cost basis is blank?
Do not invent basis to make a chart look complete. Use broker records, trade confirmations, transfer records, and basis guidance, and keep the blank marked until the source is known.
How do I avoid double-counting cash after a sale?
Separate trade-date cash from settled cash. Many U.S. securities transactions settle one business day after trade date, so a sale may appear in activity before it is available as settled cash.
What rows should I quarantine before using allocation?
Quarantine rows with no account label, no source date, stale ticker, missing quantity, unexplained cash, duplicate account source, or a manual value that does not tie to a statement. Cleaning those rows first protects the allocation view from avoidable errors.
Sources
- IRS Publication 551, basis of assets: https://www.irs.gov/publications/p551
- IRS Instructions for Form 8949, covered and noncovered securities: https://www.irs.gov/instructions/i8949
- Vanguard VOO fund profile: https://investor.vanguard.com/investment-products/etfs/profile/voo
- Vanguard VTI fund profile: https://investor.vanguard.com/investment-products/etfs/profile/vti
- iShares IVV fund page: https://www.ishares.com/us/products/239726/ishares-core-sp-500-etf
- State Street SPY fund page: https://www.ssga.com/etfs/spdr-sp-500-etf-trust-spy.html
- IRS Publication 550, investment income and expenses including wash-sale guidance: https://www.irs.gov/publications/p550
- SEC Investor Bulletin on the T+1 settlement cycle: https://www.investor.gov/newT1settlement-cycle
- FINRA Rule 2231, customer account statements: https://www.finra.org/rules-guidance/rulebooks/finra-rules/2231
- IRS Form 1099-B overview: https://www.irs.gov/forms-pubs/about-form-1099-b