TradeReview AI / Brokers / Charles Schwab

Charles Schwab logo
For Charles Schwab stock and ETF traders

A trading journal that reads your Charles Schwab export

Schwab's transaction history exports cleanly but it is a transaction log, not a trade log: buys and sells sit alongside dividends, transfers and fee rows, and a position built over several fills is several lines. The import pairs the fills into round trips and leaves the non-trade rows out.

How the import actually works

Export your trade history from Charles Schwab as a CSV and drop it into the journal. There is no template to fill in first.

The mapper reads the header row and matches your broker's column names against the ones it knows - date, symbol, side, qty, price, fees and a realised P/L column under any of a dozen spellings, from P/L to Realized PnL to Net Profit. Where a column is named something it has not seen, you pick it once from a dropdown and it remembers that file shape for next time.

It also works out what kind of instrument the file holds from the symbols themselves, so the right contract maths is applied without you configuring anything. If it guesses wrong, there is a row of buttons at the top of the import screen to correct it.

Rows that are not trades - transfers, dividends, interest, fees charged to the account - are skipped rather than logged as mystery positions.

Scale-ins and scale-outs become one trade

Exports list fills. If you built a position over three buys and exited over two sells, that is five rows describing one decision. Paired first in, first out, they become one round trip: one average entry, one average exit, the full fee total, and a single P/L.

Anything still open at the end of the file is left out rather than logged as a half-trade, and transfers, dividends and interest rows are skipped.

Results measured in R, not just dollars

If you trade 1,000 shares one day and 100 the next, comparing results in dollars tells you about position size, not about the trade. Every trade is also expressed in R - multiples of the risk you planned on it - so a $600 win on a $300 plan is +2R whatever the share count was.

That single change is what makes a setup comparison honest. The setup most traders believe is their best is usually just the one they size up on.

Questions

Will dividends and transfers clutter my journal?

No. Rows that are not trades are skipped rather than imported as positions with no exit.

Does it handle options from a Schwab account?

Yes - strike and expiry are read separately, and the trade charts on the underlying.

Is it free?

Yes. Unlimited trades, CSV import, the full dashboard, entry and exit screenshots, trade replay and PDF reports are free with no card. AI coaching, AI agents and automatic broker sync are on paid plans.

Do I have to give you my broker password?

No. CSV import needs nothing but the file. Automatic sync on paid plans goes through SnapTrade or the broker's own API, which use read-only connections - the journal can never place a trade.

Import yesterday's session

Export it from Charles Schwab, drop the CSV in, tag the setups, and open the hour-of-day breakdown. That one chart is where most traders find their leak.