Trading Journal
How to Migrate From a Spreadsheet Journal
Your spreadsheet has a few hundred rows in it. Some of them are wrong. You typed a fill price at 2 a.m., fat-fingered a quantity, pasted a P&L formula that quietly stopped referencing the right cell three months ago. You suspect the numbers, which means you no longer fully trust the review. That is the real reason to move to dedicated software: not because spreadsheets are old-fashioned, but because a hand-keyed ledger drifts, and a drifting ledger makes every conclusion you draw from it a little softer.
Migrating is not the hard part. The hard part is migrating without losing history or importing the same errors into a new home. This is the playbook: what to export, how to clean it, how to map it, and how to verify the numbers survived the trip.
- Export from the source, not the spreadsheet. Pull a fresh trade history from your broker when you can. It is cleaner than your manual copy.
- Clean before you import. Strip summary rows, standardize dates, and reconcile partial fills so you do not import noise.
- Map columns deliberately. Symbol, side, date/time, price, quantity, and fees are the fields that matter. Confirm each one.
- Import a small batch first. A week or a month, so a bad mapping is cheap to catch.
- Reconcile against a known total. Match trade count and net P&L to a number you already trust before you delete anything.
Why the spreadsheet stops being trustworthy
A spreadsheet is not wrong because it is a spreadsheet. It is wrong because a human typed into it. Decades of research on this is unusually consistent. Raymond Panko's review of spreadsheet-error studies found that across 14 controlled experiments, people made errors in roughly 3.9% of the cells they entered, and that when you look at whole spreadsheets rather than individual cells, the overwhelming majority contain at least one error (panko.shidler.hawaii.edu). Broader reviews of manual data-entry accuracy put everyday single-entry error rates in a similar 1% to 4% band, climbing sharply under time pressure or complexity (Springer, Behavior Research Methods).
Apply that to a trading journal. A few hundred trades, each with an entry price, exit price, quantity, and fee, is a few thousand hand-keyed cells. At a 2% to 4% cell error rate, a handful of those cells are wrong, and you do not know which ones. One transposed digit in a fill price can flip a winner into a loser in your records. That is exactly the kind of quiet corruption that undermines a review, and it is why we walked through the trade-offs in more depth in spreadsheet vs. AI trading software.
The fix is not to be more careful. It is to stop typing the numbers by hand and pull them from the system that already recorded them correctly: your broker.
Step 1: Export a clean source of truth
Before you touch your spreadsheet, get the most authoritative copy of your trade history you can. Your broker recorded every fill at the moment it happened, with exact prices, timestamps, and commissions. That record is more accurate than anything you re-keyed afterward.
Most brokers offer a trade-history export under an account, reports, or statements menu, usually as CSV. Interactive Brokers, for example, uses Flex Queries: in the Client Portal you go to Performance and Reports, then Flex Queries, create an Activity Flex Query, select the Trades section, choose a format (XML or CSV), set a period such as the last 365 days, and run it to download the file (IBKR documentation). Other brokers vary in wording but follow the same shape: account history, filter by date, export.
You have two migration paths from here:
- Broker export as the source. Use the fresh broker file as your import. This is the accurate path, because it carries exact fills and fees.
- Spreadsheet as the source. Use your existing sheet, including any manual notes, tags, and reasoning the broker never had.
The strongest approach combines them: import the broker export for the hard numbers, then bring your qualitative columns (your thesis, your setup tag, your emotional state) across separately. The broker gives you accuracy; your spreadsheet gives you the context that made the journal worth keeping. Deciding which columns are worth carrying is easier if you already know what to log in a trading journal, because that tells you which fields earn their place in the new system.
Step 2: Clean the file before it goes anywhere
An importer is only as good as the file you feed it. Broker and spreadsheet exports both carry noise that will either fail the import or, worse, import silently as garbage. Clean it first — most of the problems you are escaping travel with the export if you do not.
Open the export in a spreadsheet and work through this list:
- Delete report noise. Broker files often start with account headers, balance lines, and repeated column headers between sections. Summary and subtotal rows are not trades. Remove everything that is not a trade row.
- Standardize dates. Mixed formats (MM/DD/YYYY in some rows, DD-MM-YYYY in others) are the single most common cause of failed imports. Pick one format, apply it to the whole column, and re-save (FileFeed on cleaning CSV data).
- Remove incomplete trades. A row with an entry but no exit, or a quantity but no price, will import as a broken record. Either complete it from your broker or drop it.
- Reconcile partial fills and scaling. If you scaled into a position across three fills, your broker file may show three rows for what you think of as one trade. Decide whether your new journal treats those as separate executions or one position with a weighted-average entry. Getting this wrong is a frequent source of phantom duplicate trades. We cover the mechanics in how to journal partial fills and scaling.
- Check for one currency per column. If you trade across currencies, make sure a price column is not silently mixing USD and EUR values, because your new tool will assume a single unit unless it is told otherwise.
Do not skip the incomplete-record check. A journal built on half-recorded trades will show a win rate and profit factor that look precise and are quietly false.
Step 3: Map the columns deliberately
Every importer asks you to match the columns in your file to the fields it stores. Good tools auto-detect most of them: a column named "Profit," "P/L," or "Net Result" usually maps to P&L on its own, and clearly named symbol and date columns are recognized automatically (Journalit import guide). Your job is to confirm the mapping, not to trust it blindly.
These are the fields that must be right, because everything downstream is computed from them:
- Symbol (the ticker or instrument)
- Side (long/short, buy/sell)
- Date and time of entry and exit
- Price at entry and exit
- Quantity
- Fees and commissions
Pay special attention to side and to fees. If long and short are encoded as something the tool does not recognize, your P&L can invert. If fees are in a column the importer ignores, your net results will read higher than reality, and net-of-cost accuracy is the whole point of leaving a rough spreadsheet behind. Some platforms now offer AI-assisted mapping that reads your column names and a few sample rows to guess the assignments; it is a useful accelerator, but you still confirm that dates, direction, quantity, and fees landed in the right places before you proceed (traderssecondbrain universal CSV guide).
Step 4: Import a small batch, then the rest
Do not migrate three years of history in one click and hope. Import one week or one month first. A small batch makes a bad mapping obvious and cheap to fix, because you can eyeball a handful of trades against a source you already know (Journalit migration guide).
Run the test batch, open two or three of the imported trades, and compare each field against your broker statement or original sheet: entry price, exit price, quantity, fees, resulting P&L. If any of those are off, fix the mapping and re-import the same batch. Only once a small batch comes through clean should you run the full history.
If the tool warns you about duplicates during the full import, take the warning seriously rather than clicking through it. Duplicate warnings during a migration usually mean either your date or symbol formatting is inconsistent, or your partial-fill handling created overlapping rows. Both are worth stopping to resolve.
Step 5: Reconcile against a number you already trust
This is the step people skip, and it is the one that tells you whether the migration actually worked. Before you delete the spreadsheet, prove the new journal agrees with the old one on totals you can verify.
Pick two or three checkpoints and match them across old and new:
- Trade count. The number of trades in the new journal should equal the number in your source, adjusted for any partial-fill grouping you chose on purpose. An unexplained gap means rows were dropped.
- Net P&L over a period. Total realized P&L for a month or a year should match your broker statement or your old sheet within rounding. A large mismatch points at a side-encoding or fee-mapping problem.
- Total fees. If your fee total came through as zero or clearly too low, a commission column was ignored during mapping.
When those tie out, your history survived the move. Keep the original spreadsheet archived somewhere read-only for a while regardless; it costs nothing and it is your fallback if you later find a field you wish you had double-checked.
Where TradeReveal fits
For an ongoing journal, the migration is a one-time cost worth paying, because the goal is to stop hand-keying entirely. TradeReveal's free core reads a broker export directly: upload an Interactive Brokers Flex XML report and it backfills your history, positions, and transactions, resolving symbols by ISIN so the ticker mapping is handled for you. It also imports and exports standard CSV, so a cleaned spreadsheet or another broker's export migrates the same way. Multi-currency trades consolidate into one reporting currency automatically, which removes one of the messier spreadsheet chores. Your data stays exportable back to CSV at any point, so a migration in is never a lock-in.
That is the practical end state: you export once, verify once, and from then on the numbers arrive from the broker instead of your keyboard.
Frequently Asked Questions
Should I import from my broker or from my spreadsheet?
Import the hard numbers (prices, quantities, fees, timestamps) from a fresh broker export, because that record is more accurate than anything you re-keyed. Then bring your qualitative columns (thesis, setup tag, notes) across from the spreadsheet separately. The broker gives you accuracy; the spreadsheet gives you the context you built by hand.
How do I avoid importing duplicate trades?
Duplicates almost always come from two sources: inconsistent date or symbol formatting that a tool cannot deduplicate, and partial fills that appear as several rows for one position. Standardize your date column to a single format before importing, decide up front how you want scaling handled, and take any duplicate warning during import as a signal to stop and check rather than click through.
Will I lose my notes and tags when I migrate?
Not if you plan for them. Broker exports contain fills and fees but none of your reasoning, so those columns have to be carried over from your spreadsheet. Map your notes, tags, and thesis columns to the equivalent fields in the new tool, or import them as a second pass after the numeric data is verified.
How do I know the migration actually worked?
Reconcile against totals you already trust before deleting anything. Match the trade count, the net P&L for a period, and the total fees between your old records and the new journal. If all three tie out within rounding, the history came through intact. Keep the original file archived read-only as a fallback.
What if my broker does not offer a clean export?
Then your spreadsheet becomes the source, and the cleaning step matters even more. Strip summary rows, standardize dates, remove incomplete trades, and reconcile partial fills before importing. A CSV that follows the importer's expected fields (symbol, side, date, price, quantity, fees) will map cleanly even without a native broker connection.
Final Thoughts
Migrating off a spreadsheet is less a technology decision than a data-hygiene one. The value of the move is not a nicer interface; it is that you stop being the weakest link in your own record. Pull the numbers from the broker that recorded them, clean the file so noise never enters, map the load-bearing fields on purpose, and reconcile against a total you trust before you retire the old sheet. Do that once, and every review you run afterward rests on numbers you no longer have to second-guess.
Sources
- Raymond R. Panko, "What We Know About Spreadsheet Errors," University of Hawaii. http://panko.shidler.hawaii.edu/SSR/Mypapers/whatknow.htm
- Behavior Research Methods (Springer), "Comparing the accuracy and speed of four data-checking methods." https://link.springer.com/article/10.3758/s13428-019-01207-3
- Interactive Brokers, "Create an Activity Flex Query" documentation. https://www.ibkrguides.com/orgportal/performanceandstatements/activityflex.htm
- FileFeed, "How to Clean CSV Data: 10 Fixes for Failed Imports." https://www.filefeed.io/blog/how-to-clean-csv-data
- Traders Second Brain, "Import Trades From Any Broker via CSV: Universal Guide." https://traderssecondbrain.com/guides/import-any-broker-csv
Start your free TradeReveal account today
Happy Trading,
The TradeReveal Team