Broker export cleanup means turning a raw CSV from a broker into a defensible investment ledger. The export is not unreliable because brokers are careless; it is unreliable because the file was usually built for download convenience, not for lifetime performance tracking, tax-lot review, household-level transfers, or dividend-income reporting.
The first checks are simple: confirm dates, cash signs, quantities, security identity, transaction labels, duplicate IDs, and statement totals before importing the file into any tracker. A row should answer four questions: what security moved, what cash moved, which account changed, and which original file proves it. If it cannot, quarantine it until reviewed.
If you use Portfolio Tracker, import only the reviewed copy after your mapping sheet shows how each broker label becomes one standard action. Raw exports belong in an archive, not in performance reports.
What Makes Broker CSVs Risky?
Most broker files are snapshots. They may omit older history, use a default date range, delay custom reports, separate fields differently by account type, or include platform-specific labels that look obvious until they hit your spreadsheet. Fidelity, Robinhood, Schwab, and Interactive Brokers all document different export mechanics, report timing, or customization limits.[1][2][3][4]
The practical risk is not the download. It is what happens after import. A transfer can look like a sale. A dividend reinvestment can look like only a buy. A split can look like new shares purchased for no cash. A duplicate row can double-count both cost and shares. One bad row can distort return, income, allocation, and tax review at the same time.
Which Columns Should Every Cleanup File Have?
Build one data dictionary before importing multiple brokers. Use stable columns for broker, account name, account suffix, currency, trade date, settlement date, symbol, CUSIP or ISIN when available, security name, broker transaction label, standardized transaction type, quantity, price, gross amount, fees, net cash, lot identifier, source file name, and review status.
Add two columns most investors skip: source row ID and cleanup note. The source row ID lets you trace a final record back to the untouched export. The note explains why a row was reclassified, split, suppressed, or excluded. Without those two fields, a polished spreadsheet can still be impossible to defend six months later.
| Broker label you may see | Common bad import | Better classification check |
|---|---|---|
| Reinv Shares, Reinvestment, DRIP | Imported as a plain buy | Confirm whether the broker also reports a dividend row; if yes, classify income and reinvestment separately |
| Journal, Transfer, ACATS, Internal Transfer | Imported as a sale or buy | Check whether household-level shares stayed constant and whether cash proceeds were actually received |
| Stock Split, Mandatory Reorg, Corporate Action | Imported as new purchase activity | Confirm the action ratio and keep cash unchanged unless the statement shows cash in lieu |
| Correction, Cancel, Reversal | Imported as a second independent transaction | Pair it with the original row and decide whether both should net to zero or one should be ignored |
When Should I Use Trade Date vs Settlement Date?
Keep both. Trade date usually explains the investment decision and position exposure. Settlement date explains when cash legally changes hands. Since the U.S. standard settlement cycle moved to T+1 for many securities trades beginning May 28, 2024, a file that blends trade date, posted date, and settlement date can make the cash ledger look wrong even when the trade itself is right.[5]
Use trade date for position and performance logic unless your system has a documented reason to do otherwise. Use settlement date for cash reconciliation. If a buy appears on Monday and cash settles Tuesday, do not “fix” the cash by moving the trade date. Isolate unsettled cash instead.
How Do I Spot Duplicate Broker Rows?
Do not delete rows just because date, ticker, and amount match. Dividend reinvestments, partial fills, same-day tax-lot sales, and recurring purchases can create legitimate near-duplicates. Suppress a duplicate only when the stronger identity fields also match.
A conservative duplicate rule is: same broker, same account, same transaction ID, same trade date, same symbol or security identifier, same quantity, and same net cash. If the transaction ID is blank, require a statement match before removing anything. Mark the second row as duplicate-suppressed rather than deleting it from the working file.
Example messy row: 2025-03-31,SCHD,Reinv Shares,0.7421,,0.00,Taxable Brokerage. The blank price and zero cash make it look incomplete. It should be flagged, not auto-imported. If the same statement shows a dividend cash credit and a reinvestment purchase for the same date, split the economic event into income plus reinvestment. If the statement only supports a combined reinvestment record, keep it combined and add a note so income reporting is not overstated.
When Should I Split DRIP Rows?
Split a dividend reinvestment row only when the broker statement supports both pieces: cash distribution and share purchase. That gives you an income row for dividend tracking and a reinvestment row for cost and share count. Do not manufacture the split from memory or from a yield estimate.
Keep a combined DRIP row when the export and statement do not provide enough detail to separate the cash and share legs. In that case, exclude it from income totals until the official statement or tax form confirms the distribution. Form 1099-DIV reporting rules matter here because year-end dividend totals may not equal a simple sum of visible cash rows.[6]
How Should Transfers, Splits, and Ticker Changes Be Classified?
Transfers should not create performance. If 50 shares leave one account and 50 shares arrive in another account owned by the same household, classify the rows as transfer out and transfer in after checking statements. Treating that pair as a sale and buy invents turnover, proceeds, and possibly gains that did not happen.
Splits should change shares and per-share history, not invested cash. SCHD’s 3-for-1 ETF split in October 2024 is a useful real-world example: a post-split share increase should not become a new contribution.[7] Ticker changes need similar restraint. Preserve the old and new identifiers, record the effective date, and avoid creating a sale unless the broker record proves one occurred.
How Do Basis and Wash-Sale Flags Fit Into Cleanup?
Basis fields deserve a separate review status. Covered and noncovered lots should not be blended, and blank basis is not the same as zero basis. IRS materials explain how basis is used to calculate gain or loss and how Form 8949 reconciles broker-reported sale information with tax-return reporting.[8][9]
Wash-sale flags should travel with the row. Do not overwrite them during cleanup, even if your tracker calculates its own adjustment. The rule can involve purchases during a 61-day window around the sale date, so the safest workflow is to keep the broker flag, preserve the lot information, and treat any mismatch as a review exception.[10]
What Should the Review Queue Catch?
Use a review queue instead of guessing. A row should be reviewed if it has no transaction ID, a cash sign that conflicts with the action, a zero quantity on a buy or sell, a changed account name, a changed security name with the same ticker, blank basis on a sale, a corporate-action label, or a transfer label that affects only one side of a move.
| Symptom | Action | Validation |
|---|---|---|
| Two VOO buys share the same broker transaction ID | Keep one active row and mark the other duplicate-suppressed | Share count ties to the statement instead of doubling |
| SCHD transfer appears as sale in one account and buy in another | Reclassify both sides as transfer out and transfer in after checking statements | Household shares stay constant and realized-sale count falls to zero |
| Dividend reinvestment appears as one combined row | Split only if the statement shows both income and purchase legs | Income total and share count each reconcile separately |
| Corporate action changes shares without cash | Classify as split or reorganization, not buy | Cash stays unchanged and share count follows the action ratio |
How Do I Preserve the Audit Trail?
Keep the untouched export, the reviewed CSV, monthly or quarterly statements, trade confirmations when available, and a short change log. The log does not need ceremony. It needs enough detail to reproduce the number later.
Use boring file names: 2026-03-31_fidelity_taxable_original.csv, 2026-03-31_fidelity_taxable_reviewed.csv, and 2026-03-31_mapping_notes.md. Good notes look like: “mapped Fidelity Reinv Shares to reinvestment after matching dividend row” or “suppressed duplicate SCHD row because transaction ID and statement shares matched.”
How Do I Validate a Reviewed Export Against Statements and 1099-B?
Validate in passes. Start with positions, then cash, then income, then sales. Do not start with performance. A return calculation built on unreconciled positions is just a prettier error.
- Positions: shares by account and security should match the statement, including fractional DRIP shares.
- Cash: running cash should tie after pending trades and unsettled cash are isolated.
- Income: monthly dividend and interest totals should match statement income sections before being used for spending review.
- Sales: sale dates, proceeds, quantities, basis status, and wash-sale fields should match broker tax reports before tax work begins.
- Transfers: household-level share count should stay unchanged when assets move between accounts without a sale.
When your reviewed file disagrees with Form 1099-B, pause the import and isolate the difference. Compare proceeds, quantity, sale date, cost basis, covered status, and adjustment codes. IRS materials describe Form 1099-B and Form 8949 as the reporting and reconciliation path for many sale transactions, so this is not a place for silent spreadsheet fixes.[11][9]
A portfolio history is ready when every position reconciles to a statement, every cash movement has a matching row or note, every manual adjustment points back to an original file, and every unresolved exception is excluded from performance, allocation, and income reports.
FAQ
Should I edit the original broker CSV? No. Keep it untouched. Make a reviewed copy and preserve the original so you can rerun the cleanup if a mapping rule changes.
Should performance use trade date or settlement date? Use trade date for position exposure and performance, and settlement date for cash checks. If cash looks off by one business day, check unsettled trades before changing dates.
What if my reviewed file disagrees with Form 1099-B? Treat it as an exception. Compare proceeds, basis, date, quantity, covered status, and adjustments against the broker tax form before relying on the number.
How often should a dividend investor clean exports? Monthly is easier than annually. Reinvestments, fractional shares, and cash sweeps are easier to match while the statement period is fresh.
What is the fastest red-flag check? Pick one account and one security. Reconcile beginning shares plus buys, reinvestments, transfers, and splits minus sales to ending shares. If that fails, do not trust the report yet.
Sources
- Fidelity export FAQ, account history and CSV export notes — https://www.fidelity.com/customer-service/faqs-exporting-account-information
- Robinhood reports and statements support page, custom report timing — https://robinhood.com/support/articles/finding-your-reports-and-statements/
- Interactive Brokers Flex Queries guide, field-level statement customization — https://www.ibkrguides.com/clientportal/performanceandstatements/flex.htm
- Schwab StreetSmart Help, History export notes — https://help.streetsmart.schwab.com/Com/3.44/Content/History.htm
- SEC Investor.gov bulletin on T+1 settlement cycle — https://www.investor.gov/newT1settlement-cycle
- IRS Instructions for Form 1099-DIV, dividend and distribution reporting — https://www.irs.gov/instructions/i1099div
- Schwab Asset Management SCHD fund page, ETF split reference — https://www.schwabassetmanagement.com/products/schd
- IRS Publication 551, Basis of Assets — https://www.irs.gov/publications/p551
- IRS Instructions for Form 8949, sales and other dispositions reconciliation — https://www.irs.gov/instructions/i8949
- 26 CFR 1.1091-1, wash-sale rule timing — https://www.law.cornell.edu/cfr/text/26/1.1091-1
- IRS Form 1099-B overview — https://www.irs.gov/forms-pubs/about-form-1099-b