Why Your Trading Journal P&L Doesn’t Match Your Broker Statement?
You finish a good month and your trading journal says +$4,180. The broker statement says +$3,612. Every trade is in the journal, nothing looks broken, and $568 is unaccounted for.
A 14% gap like that doesn’t stay in one number. Win rate, average win, expectancy and the setups you rank as your best (the metrics that make a journal worth more than a spreadsheet) all come from the same journal data, so they’re overstated too. Fees can also turn small winners into losers, which lowers your win rate. Position sizing built on those figures is off as well.
This guide starts with the short answer, then walks through 12 causes grouped by type: calculation differences, missing data, and instrument-specific adjustments. Each one has a worked example. After that comes a 6-step reconciliation you can run on any month, and a table that matches the pattern of your gap to its likely cause.
The short answer
Your trading journal P&L doesn’t match your broker because the two rarely calculate profit and loss the same way. Many journals show gross P&L per closed trade, grouped the way you entered and exited. The broker shows net P&L after commissions, exchange fees, financing and currency conversion, using the lot-matching method it applies for tax reporting, over its own statement period. To close the gap, line up four things: the date range, the fees, the cost basis method, and whether each figure counts open positions.
12 reasons your trading journal P&L doesn’t match your broker
Reasons 1 to 5 are calculation differences: both sides have the same trades but count them differently.
1. The journal shows gross P&L and the broker shows net
For active traders this is often the largest cause. Many journals calculate P&L from entry and exit prices only. The broker subtracts commissions, exchange fees, clearing fees, regulatory fees (the SEC fee and FINRA TAF on US stock sales), and platform or data charges.
Per trade, these look small. Over a month they aren’t. Take 40 round trips on 2 Micro E-mini contracts at $1.24 per contract per side, all-in. That’s 40 × 2 × 2 × $1.24 = $198.40 your journal doesn’t know about, unless fees are imported with each fill.
Partial fills make it worse. Some fee schedules charge per execution, so an order that fills in 4 pieces can carry 4 ticket charges or minimums, while your journal records one trade with multiple entries and exits.
2. One number includes open positions and the other doesn’t
Journals usually report realized P&L: trades you’ve closed. Broker statements often show total P&L or change in account equity, which includes unrealized gains and losses on positions still open at the statement date.
Say you closed trades for +$2,300 this month and you’re holding a swing position that’s down $640 at month end. Your journal says +$2,300. The broker’s equity change says +$1,660. Both are correct.
Prop firm traders see a version of this on drawdown rules. Many firms measure drawdown on equity in real time, including open trades, while a journal tracks closed balance. Others use an end-of-day balance, so check your firm’s rules.
3. Different cost basis methods
When you buy the same stock more than once and sell part of it, someone has to decide which shares you sold. US brokers default to FIFO (first in, first out) unless you choose another method. Some journals use average cost. Your own view of the trade might be a third answer.
Example: buy 100 shares at $50, buy 100 more at $54, then sell 100 at $56.
| Method | Shares treated as sold | Realized P&L |
|---|---|---|
| FIFO (common broker default) | The $50 lot | $600 |
| Average cost | 100 shares at $52 | $400 |
| Specific lot (the add you meant to trim) | The $54 lot | $200 |
Same fill, three correct answers. The total evens out once the full position is closed, but any month in between can differ by hundreds of dollars.
4. The date range doesn’t line up
Four timing issues cause this:
- Time zones. Many forex and CFD brokers run server time at GMT+2 or GMT+3 so the trading day ends at the New York close. A trade closed at 17:30 New York time on March 31 is dated April 1 on that server.
- Trade date vs settlement date. US stocks settle T+1 since May 2024. A statement built on settlement dates moves a trade from the last trading day of the month into the next month.
- Statement cutoffs. A monthly statement may close on the last business day. Your journal filter might run to the calendar end.
- Your journal’s time zone setting. If it’s set to your local time and the broker uses exchange time, trades near midnight shift days.
5. Rounding and contract math
Small rounding differences add up over hundreds of trades. Journals sometimes use approximate pip values, round prices to 2 decimals, or use a default contract multiplier. A futures contract logged with the wrong multiplier (50 for ES, 5 for MES) produces a P&L that’s 10 times too large or too small. That one is easy to spot. A pip value that’s off by a few cents isn’t.
Reasons 6 to 9 are missing or duplicated data: one side has events the other doesn’t.
6. Incomplete or overlapping imports
Some brokers limit how far back an export or API sync goes. Import only the last few months and your journal is missing the opening trades for positions you still hold, so the closing trades have nothing to match against. The reverse also happens: two overlapping CSV imports create duplicate trades, and your P&L doubles for those days.
7. Cash movements that aren’t trades
Deposits, withdrawals, dividends, interest earned, margin interest charged, short borrow fees and account fees all change your broker balance. None of them are trades. If your journal tracks account balance, it needs these as separate adjustments. If it only tracks trade P&L, the broker’s balance change will never match it, and shouldn’t.
A related problem: an unset or wrong starting balance. Every percentage return and drawdown figure in the journal is then calculated from the wrong base.
8. Options that expired, were assigned or were exercised
Options that expire worthless often don’t produce a closing trade in an import. The journal shows an open position with no P&L. The broker has already booked the full premium as a gain or loss.
Assignment and exercise are harder. When a long call is exercised, US brokers add the premium to the cost basis of the stock you receive. When a short put is assigned, the premium lowers the basis of the shares. For a long put exercised or a short call assigned, the premium adjusts the sale proceeds instead. The broker then shows no separate P&L for the option. A journal that books the option as its own trade shows P&L on the option and different P&L on the stock. The combined total should match. The individual trades won’t.
9. Transfers, splits and other corporate actions
Positions moved from another broker arrive without an entry trade in your journal, and sometimes without a cost basis at the new broker. Stock splits and reverse splits change share count and price without a trade. After a 1-for-10 reverse split, a journal still holding 1,000 shares at the old price will calculate nonsense on the next sale. Mergers, spin-offs and symbol changes cause similar breaks.
Reasons 10 to 12 depend on what you trade: forex, CFDs, crypto, foreign stocks and US-taxed accounts.
10. Swaps, rollover and financing charges
Forex and CFD positions held past the daily rollover are charged or credited a swap. For forex, most brokers apply a triple charge on Wednesday night to cover the weekend. Some index and commodity CFDs take it on Friday instead. Hold 2 lots for 5 nights including a Wednesday and you pay 7 rollover charges. At −$6.80 per lot per night, that’s 2 × 7 × $6.80 = $95.20. Many journals ignore swaps entirely, or record them on a different date than the trade closes. MT4 and MT5 show commission and swap in columns separate from Profit, a common source of error in a forex trading journal, so copying only the Profit column gives you gross P&L.
In a crypto trading journal, perpetual futures carry a similar cost in funding payments, every 8 hours on most major exchanges and every 1 or 4 hours on some pairs and venues.
11. Currency conversion
If your account is in USD and you trade a EUR-listed stock, the gain has to be converted. Your journal may use the rate on the trade date, or no conversion at all. The broker may use the settlement date rate, charge a conversion spread, or hold the proceeds in EUR until you convert them.
A €1,000 gain converted at 1.10 is $1,100. At 1.08 it’s $1,080. Add a 0.2% conversion fee and the broker shows about $1,078. Crypto has its own version: fees charged in the traded coin or the exchange’s own token, which a journal may value at a different price.
12. Wash sales (US) and futures daily settlement
If you sell a stock at a loss and buy the same stock within 30 days before or after, the wash sale rule disallows that loss for the moment. It gets added to the cost basis of the replacement shares instead. Your broker applies this on Form 1099-B and often in its realized P&L reports, but only for identical securities bought and sold in the same account. Wash sales across accounts, an IRA, or options on the same stock are yours to track. Most journals don’t apply wash sales at all, and for performance review they shouldn’t.
Futures work differently again. They’re marked to market every day at the settlement price, so the broker shows daily P&L on open positions. A trade you held for 3 days appears as 3 daily amounts on the statement and as 1 trade in your journal.
How to reconcile your journal with your broker statement
Work on one month at a time, one account at a time. Reconciling a year in one pass hides the cause under hundreds of trades.
- Pick the broker’s number to match. Use realized P&L for the period from the broker’s activity or realized gain/loss report. Skip the account balance change for now; it mixes in deposits, withdrawals, open positions and income.
- Match the date range exactly. Set your journal filter to the same start and end dates as the statement, in the broker’s time zone. For forex, check the server time. For stocks, check whether the report uses trade date or settlement date.
- Compare trade counts before dollars. Count closed trades on both sides. Too many in the journal points to duplicate imports. Too few points to missing history, expired options or transferred positions. Fix the count first, because every later step depends on it.
- Separate fees from price P&L. Total the commissions and trading fees the broker charged on trades closed in the period, leaving out data and platform charges. Add them to the broker’s net figure to get gross P&L. If that now matches your journal, fees were the whole gap and you need them imported per trade. If your journal already imports fees, compare its net figure with the broker’s net instead.
- Check what’s left against the 12 causes. Use the table below to narrow it down by the pattern of the difference.
- Record the fix at the source. Change the journal setting (fee import, time zone, cost basis method, multiplier) so next month comes out right, rather than typing in a one-off adjustment.
| Pattern in the difference | Most likely cause |
|---|---|
| Journal higher every month, gap grows with trade count | Fees and commissions (1) |
| Gap appears only when you hold positions over month end | Open positions (2) or futures mark-to-market (12) |
| Gap on stocks you added to or scaled out of | Cost basis method (3) |
| One or two trades land in the wrong month | Time zone or settlement date (4) |
| One futures trade off by exactly 10x | Wrong contract multiplier (5) |
| Journal P&L doubled on certain days | Duplicate imports (6) |
| Balance off, trade P&L matches | Deposits, withdrawals, dividends or interest (7) |
| Open options positions that should be closed | Expiration or assignment not imported (8) |
| One stock suddenly shows a huge gain or loss | Split, reverse split or transfer (9) |
| Gap grows with overnight holds on forex or CFDs | Swaps and rollover (10) |
| Gap only on foreign-currency instruments | Currency conversion (11) |
| Broker shows smaller losses on stocks you rebought | Wash sale adjustment (12) |
A few dollars left over after these steps is usually rounding. A gap that’s still more than 1% of the month’s P&L usually means a date range or trade count problem slipped through, so go back to steps 2 and 3.
How to keep them in sync
Most of these gaps come from setup, so fixing the setup once stops them recurring.
- Import fees with every fill, or set a fee schedule per instrument if your broker’s export doesn’t include them. Review net P&L by default.
- Set the journal’s time zone to your broker’s statement time zone, not your local time.
- Choose the same cost basis method your broker uses for tax lots, or at least know which one each side uses.
- Check your broker is on the supported brokers list, then import from the first day of the account, or enter opening positions with their original cost basis before the first import.
- Import in non-overlapping ranges. If your journal offers broker sync, use that instead of repeated CSV uploads.
- Log deposits, withdrawals, dividends, interest and swaps as balance adjustments, separate from trade P&L.
- Set the starting balance to the exact figure on the first statement.
- Reconcile on the same day each month, right after the statement arrives. A month with 2 unexplained trades takes 10 minutes. Six months of drift can take a weekend.
One thing to leave alone: wash sale adjustments. Your journal should show what each trade made or lost at the prices you traded, because that’s what you’re reviewing. Tax figures belong to the broker’s 1099-B and your accountant.
FAQ
Which P&L is correct, my journal or my broker?
For money in your account and for taxes, the broker’s statement is the record. For reviewing how you trade, a journal can be more useful because it groups fills the way you placed them. Once fees, dates and cost basis match, and wash sale adjustments are set aside, both numbers should agree on realized P&L for the period.
Should my trading journal include commissions and fees?
Yes. Gross P&L overstates every metric built on it, and the effect is largest for high-frequency and small-size traders. A scalper with a 55% gross win rate can be below 50% after fees.
Why does my broker show a loss on a trade my journal shows as a win?
Usually cost basis. If you bought in more than one lot, the broker may have matched your sale against a higher-priced lot than the one you had in mind. Fees can also turn a small gross win into a net loss.
Why doesn’t my account balance match my journal’s balance?
Balance includes deposits, withdrawals, dividends, interest, fees and open positions. If your journal doesn’t record those as adjustments, or its starting balance is wrong, the balances will drift apart even when trade P&L matches.
How often should I reconcile?
Monthly, when the statement arrives. Active day traders may want a weekly check against the broker’s daily activity report.
Does the difference affect my taxes?
File from the broker’s tax forms (Form 1099-B in the US), not your journal. The journal is for performance review. Tax rules such as wash sales change the reported figures on purpose. This article is general information, not tax advice.
Start your UltraTrader journal for free and import your trade history directly from your broker.