Every closed trade carries an exit reason. The set is the same in backtest and live; live values are populated by the position-manager based on what the exchange reported.
| Value | Meaning |
|---|---|
| stop loss | Stop price was hit |
| take profit | Take profit price was hit |
signal | A custom exit condition fired |
| trend reversal | trend_detection flipped against the position |
manual | User-initiated close (or detected close at the exchange) |
liquidation | Position liquidated by the exchange |
In backtest
liquidation is rare - the engine doesn't simulate exchange
liquidation precisely (no per-contract margin math). A liquidation
in a backtest is usually a degenerate case.
In live trading, the position-manager's close detection consumes exchange WebSocket events to classify the close. Each venue's adapter publishes the appropriate reason; see Close detection.
Reading the mix
A healthy strategy mix:
- Trend follower: many take profit + trend reversal; few stop loss.
- Mean reversion: many take profit; some stop loss; rare
signal. - Scalp: even split between take profit and stop loss.
Outsized counts of liquidation or manual in a live strategy
suggest something is wrong - investigate.
