| Column | Meaning |
|---|---|
entry_time | Bar timestamp of entry |
side | long or short |
entry_price | Filled entry price (after slippage) |
exit_time | Bar timestamp of exit |
exit_price | Filled exit price |
| exit reason | Why it closed (stop loss / take profit / signal / trend reversal / manual / liquidation) |
size | Position size in asset units |
gross_pnl | P&L before fees and slippage |
fees | Total fees paid (entry + exit) |
slippage | Total slippage cost |
net_pnl | gross - fees - slippage |
r_multiple | net_pnl divided by initial stop distance |
duration | exit_time − entry_time |
mae | Maximum adverse excursion during the trade |
mfe | Maximum favorable excursion during the trade |
What to look for
- Cluster by exit_reason: too many stop_loss exits = stop too tight or wrong signal; too few take_profit exits = target too far.
- MAE vs final P&L: if winners routinely show large MAE, the stops are wide and you're lucky. If losers show low MAE, the exits are too quick.
- Duration distribution: a strategy advertised as swing that averages 4-hour holds isn't swing.
Filtering + sorting
The table is client-side sortable on every numeric column. Filtering by reason or side helps isolate sub-populations (e.g. "show only take_profit longs").
