Skip to content
EconomiciumFree tools for traders.

Broker Statement Analyzer

Drop in a statement export and get the report your broker does not give you: expectancy, profit factor, drawdown, and which symbols and weekdays actually make the money.

By , founder and editorUpdated

Your file never leaves this page. It is read and parsed entirely in your browser. There is no upload, no account and no server that could receive it. Disconnect from the internet after this page loads and the analyzer still works.

Drop a statement CSV here, or

CSV, TSV or any delimited export from MT4, MT5, cTrader or your own spreadsheet.

What the report tells you

A broker statement lists what happened; it rarely tells you what it means. The figures here do:expectancy is your average result per trade in units of risk, the number that decides whether the account grows; profit factor is gross profit divided by gross loss, where 1.0 is breakeven and above roughly 1.5 is healthy; max drawdownis the worst peak-to-trough stretch of your equity, which is what actually tests whether you can keep trading the strategy. Win rate is included because everyone asks for it, and is the least useful of the four on its own.

The breakdowns are usually where the surprise is. It is common to find that one symbol carries the entire account while another quietly gives it back, or that a particular weekday is responsible for most of the damage. Those patterns are invisible in a running balance and obvious the moment the same trades are grouped.

How the numbers are derived

Where your statement reports its own profit per trade, that figure is used verbatim rather than recalculated from prices. This matters: statements quote size in lots, and the value of a lot differs by instrument, so recomputing from price and volume would disagree with your account on metals, indices and CFDs. For R-multiples the same logic runs in reverse, the contract multiplier is inferred from the row's own price move against the broker's profit figure, which is what makes a stop-loss column translate into a real risk in currency. Rows that are not trades, balance operations, deposits, cancelled orders, are skipped and counted separately.

Once the trades are in the trading journalyou can add the context the statement never had: which setup, why you took it, what you were thinking. That is the part that changes behaviour. To sanity-check whether the edge the report shows is real or a small-sample illusion, run the measured win rate and average R through therisk of ruin simulator.

Frequently asked questions

Is my statement uploaded anywhere?
No. The file is read by your browser using the File API and parsed in the page; it never touches a network request. There is no account, no server-side processing and no analytics on the contents. You can confirm it by opening your browser devtools network tab while you load a file, or simply by disconnecting from the internet after the page loads, everything still works.
Which formats does it accept?
Any delimited text export: comma, semicolon, tab or pipe separated. It recognises the common MT4, MT5 and cTrader column names automatically and falls back to a mapping panel where you point each field at the right column, so unusual or renamed exports still work. If your platform only exports HTML or XLSX, open it in a spreadsheet and save as CSV first.
Why do some trades show no R-multiple?
R needs both a stop loss and a known risk in money. If your statement has no stop-loss column, or the row has no usable price data to infer the contract size from, R cannot be established and that trade is excluded from R statistics rather than given an invented risk. P&L, win rate and profit factor still include it.
The profit numbers look doubled or halved. What happened?
Almost certainly the commission handling. Some platforms report a gross "Profit" column with commission and swap listed separately, others report a "Net profit" that already includes them. We guess from the column name and show a toggle so you can correct it; flip the "profit column already includes costs" switch and the totals will match your account.
What happens when I send trades to the journal?
They are written into the same private, in-browser store the trading journal uses, tagged "Imported", replacing whatever is there. From that point they behave like any other journalled trade: you can edit them, add setup tags and notes, and export them to JSON. Nothing leaves your device at any stage.

Method and limitations

Your statement is read with the browser File API and parsed in this page. It is never uploaded, stored on a server, or seen by us, there is no server-side component to receive it. Column detection covers the common MT4, MT5 and cTrader conventions with manual remapping for anything else. Where the statement reports its own profit figure it is used as given; commission and swap are added only when the column reports gross profit, which you can override. Trades without a determinable risk are excluded from R statistics rather than assigned an assumed one. This is an analysis tool, not trading advice.

This tool runs entirely in your browser. Nothing you enter is sent to us or stored.

For general information and education only. This is not financial advice and not a recommendation to buy or sell anything. Trading and investing carry risk, including the risk of losing more than your initial outlay. Always verify figures against your broker or the original source before acting on them.

Spotted an error? Email[email protected]and it will be corrected. Maintained byJoey van Diest.