Post-mortem
Each closed trade is decomposed into a cause — SL caught reversal, entry wrong from start, peer drag, regime mismatch. The data feeds an evolutionary loop: rules that survive the live test are kept, the rest are discarded.
Where the lab stands
Aggregates over every trade closed by the live bots. Win rate, sum of % P&L (not portfolio-compounded), and the window covered.
Wins finish clean. Losses leave money behind.
For every trade we reconstruct the max favorable excursion (best gain reached) and max adverse excursion (deepest drawdown). The asymmetry below is what motivates the break-even stop hypothesis tested on sol_btc_magnet.
Why the trades end the way they do
Rules-based classifier v1 — assigns one cause per trade in priority order. Confidence shown as average across the bucket. unclassified = trade didn't match any clear pattern (yet).
Who's doing what
Each bot's dominant failure (or success) mode. Bots are sorted by cumulative P&L. The BE-stop pill marks bots that have the break-even rule active in live.
| Bot | N | WR | P&L sum | Avg | Top cause |
|---|
Active rules
Each conditional rule activated in live is registered here with its hypothesis and the cohort comparison before vs after activation. With ~1-3 trades/week/bot, a defensible verdict needs roughly 50+ trades post-activation — earlier readings are flagged insufficient or weak.
Break-even stop
Naïve simulation : if every sl_caught_reversal trade had been exited at break-even instead of running into the stop. Caveat below — the realistic backtest in scripts/backtest_be_stop.py shows a smaller (but still positive) delta when accounting for wins cut too early.