Performance tiles
Where this comes from
Originator and date
AlertDesk's maker, 10/12/2026: Performance's top figures as a trading journal shows them -- Net P/L, Fees paid, Win rate, Avg hold, Profit factor, # trades, Avg P/L per trade and Max drawdown -- for the chosen account and for all, with gains and losses per account beside unrealized P/L on what's open.
Industry sources read
The maker's own earlier trading journal and the trade statistics behind it, read for their definitions only; its code and data are never used. Profit factor and maximum drawdown are standard trading-statistics measures, used here in their usual sense; no further source was read for them.
What prompted it
The same figures, used daily in that earlier journal, for the trades AlertDesk keeps.
What we changed and why
One rule: P/L is the trades' own -- what was received less what was paid, with the trades' own commissions and fees taken off -- and nothing else. The account's other fees, deposits, withdrawals, interest and transfers stay in the Ledger. A lot transferred in counts at its transfer cost like any other lot (the Ledger shows the transfer), so Performance no longer says how much of a total came from transfers in. Every figure counts the trades with a close in the time frame; a trade counts once however many part closes it had. Each figure, in plain words:
Net P/L: what the trades closed in the time frame made or lost, after their commissions and fees. Beside it, how many trades that is.
Fees paid: the commissions and fees those trades paid -- the difference between their P/L before fees (gross) and after (net).
Win rate: the share of those trades that made money. Beside it, how many won and how many lost.
Avg hold: for trades closed for good, the average number of calendar days from the first opening to the day the position was back to zero; beside it, the longest.
Profit factor: the money the winning trades made divided by the money the losing trades lost. 2 means the wins brought in twice what the losses cost; below 1, the losses were bigger. With no losing trade there is nothing to divide by, so it shows "—". Beside it, the average winning trade.
# trades: the trades in play in the time frame -- those closed in it and those still open now.
Avg P/L per trade: Net P/L divided by the trades closed.
Max drawdown: add up net P/L day by day, starting at $0, and find the biggest fall from a high point to a later low point. That fall is the drawdown; the days of the high (the peak) and the low (the trough) are shown beside it. $0.00 means the running total never fell below a high it had reached. It measures realized P/L only, not the account's value.
The per-account table: Realized gains (the winning trades' P/L added up), Realized losses (the losing ones'), Net realized (both together), each with its count, which opens those trades on Trades; and Unrealized now -- the open positions at their latest price, as on Positions, in dollars and as a percent of what they cost. Unrealized is today's, whatever the time frame. Paper accounts get the same figures in their own section, never mixed in.
Our own evidence
`tests/test_performance_tiles.py` builds a made-up history with two wins, two losses and a trade still open, and checks every figure by hand: net $98.00 after $2.00 of fees (gross $100.00), a 50% win rate, a profit factor of 1.65 ($248 won over $150 lost), an average win of $124.00, a drawdown of $150.00 from 9/3 to 9/10, and a time frame that starts mid-way (the drawdown then counted from $0 at its start). It also checks that each count opens exactly those trades on Trades. `tests/test_transfers_in.py` checks that a transfer in is counted at its cost without a note.