Kore.
ES Home Try the demo

// Guide

How to combine investments from multiple brokers into one portfolio (without counting anything twice)

To see all your investments as one number, you have to gather every account's transactions, convert them to one currency and make sure none of them appears twice. The last step is the one people forget: in the example below, one repeated purchase inflates the total by more than 10% while the percentage gain barely moves.

6 min read · Updated October 12, 2026

Why adding up what each app shows is not enough

Every platform gives you its own total, in its own currency and with its own way of calculating cost. Adding those totals by hand gives you a snapshot of today, but it won't tell you how much you have made overall or warn you if something is counted twice. Three rules make the sum work:

  1. One currency: each purchase is converted at the exchange rate of its own day, and the current value at today's rate.
  2. One asset, one position: if you hold the same stock at two brokers, add up the quantities and the costs; the average price is the total cost divided by the total quantity.
  3. Every transaction, exactly once. This is the rule that breaks without you noticing.

An example with three accounts

You hold stocks at one broker, ETFs at another and bitcoin on an exchange. Example prices, in US dollars:

AccountAssetQuantityCostValue today
Stock brokerAAPL203,6004,600
ETF brokerVOO83,2004,000
Crypto exchangeBTC0.052,5003,000
Total9,30011,600

Today AAPL trades at 230, VOO at 500 and BTC at 60,000 (also example prices). The bitcoin came in two purchases: 0.03 at 51,000 on February 10, 2025, and 0.02 at 48,500 on May 14. Total gain: 11,600 − 9,300 = 2,300, or 24.73% on what you invested (rounded to two decimals).

The duplicate you can't see

Histories are downloaded by date range, and the ranges overlap. In June you downloaded the exchange's history from January to June. In December you download April to December, having forgotten where the first file ended. April, May and June are now in both files, and so is the May 14 purchase.

Without the duplicateWith the duplicate
BTC in your sheet0.050.07
Total cost9,30010,270
Total value11,60012,800
Gain2,3002,530
Gain %24.73%24.63%

The total rises by 1,200 (10.34%) on money that doesn't exist. The gain rises by 230, which is what that phantom lot would have earned: 0.02 × (60,000 − 48,500). The percentage hardly changes because the duplicate adds cost and value at the same time, so looking at performance won't reveal the error. The quantity will: your exchange says 0.05 BTC and your sheet says 0.07.

The same thing happens if you export an account from the website and again from the mobile app, or if you move crypto from an exchange to your wallet and record the deposit into the wallet but not the withdrawal from the exchange.

How to find it in a spreadsheet

Put every transaction on one sheet: date in column A, type in B, ticker in C, quantity in D and price in E. If your file has a date and a time, keep only the day.

Count the repeated rows

Enter this in F2 and copy it down:

=COUNTIFS(A:A,A2,B:B,B2,C:C,C2,D:D,D2,E:E,E2)

This works in Google Sheets and English-language Excel. If your spreadsheet writes decimals with a comma, use semicolons between the arguments.

DateTypeTickerQuantityPriceCount
2025-02-10BUYBTC0.0351,0001
2025-05-14BUYBTC0.0248,5002
2025-05-14BUYBTC0.0248,5002

A 2 is not always a mistake, since two identical orders on the same day do happen. Before deleting a row, check it against the account's own history.

Reconcile the quantities

Work out purchases minus sales for each asset and compare the result with the balance the account shows today (use your file's type names):

=SUMIFS(D:D,C:C,"BTC",B:B,"BUY")-SUMIFS(D:D,C:C,"BTC",B:B,"SELL")

With the duplicate, this returns 0.07, while the exchange says 0.05. The extra 0.02 BTC is exactly the repeated lot.

How Kore. handles it

  • You upload each account's transaction file (CSV or Excel, up to 5 MB) or enter trades by hand. No passwords and no API keys. If the app doesn't recognize the columns, you map them yourself; the required ones are Date, Type, Ticker, Quantity and Price.
  • Before anything is saved, a preview flags rows with errors (a future date, a quantity of zero, an unknown type), and those rows are not imported. It also tells you how many identical rows your file contains; those are imported anyway.
  • On import, each row is compared with what you have already saved, and rows matching on day, ticker, type, quantity and price are skipped. The app then tells you how many it ignored.
  • The same asset held in two accounts is a single position with a single average cost. The account is a label that doesn't change any calculation, and there is only one cash balance.
  • Each trade keeps its own exchange rate, and everything is added up in one currency (dollars).
  • In Audit, in your account menu, Kore. shows the quantity it calculates for each position, and you type the one your broker shows (if it's spread across accounts, type the sum, such as 0.03+0.02). The difference appears next to it. A separate scan flags possible duplicates: same day, ticker, type and quantity.

The demo includes a sample portfolio with stocks, ETFs, crypto, bonds and cash added up into a single total. Try it in the demo, no account needed.

Frequently asked questions

Does Kore. connect to my brokers?

No. Trades come in from a file or by hand, so you never give Kore. your broker password or an API key. The trade-off: to catch up, you upload your history again, and whatever was already saved is skipped.

What happens if I upload the same file twice?

Rows you already have saved are skipped, and if nothing new is left, the app says so. One detail: it compares against what is saved, not between rows of the same file. If you merge two exports into one file before uploading, both copies of each repeated row go in. Upload them separately.

What if I really did make two identical purchases on the same day?

If they are in the same file, both are saved. If one was already saved and the other arrives in a later file, the importer treats it as a repeat, so enter that one by hand. The Audit scan will flag the pair as a possible duplicate, and you can dismiss that warning.

Can I see each broker separately?

The account label doesn't split the numbers. Portfolios do: the free plan has one, and Pro has up to ten. The All view adds them together, and the single cash balance lives in the main portfolio.

What if I import CEDEARs bought in pesos?

If your file includes the exchange rate of each purchase, Kore. uses it; if it doesn't, Kore. uses that day's CCL. The preview tells you when a CEDEAR purchase keeps the file's exchange rate. Check it: "Unrealized P&L" can include the difference from the CCL implied by the stock's price that day.

Can I do this on the free plan?

The free plan keeps your full history and tracks up to 10 open positions at a time; the ones you already closed don't count. If a file would leave you with more than 10 open, nothing is saved (an import is never left half done), and the app offers you Pro, which has no such limit.

More guides