Real win rate, profit factor, Sharpe, and drawdown per scalp signal type, computed fresh on every load from the actual resolved-signal log.
Every signal type currently under test is published here, whether or not it actually works — nothing removed, nothing rounded up. Win rate alone doesn't determine profitability; profit factor and average win against average loss are shown alongside for exactly that reason.
Two different real populations below, never blend them: journal = trades this bot's auto-trader actually executed through a broker (small, real money); signals/backtest = every signal this bot posted and tracked to a real resolved outcome, whether or not it was ever traded (much larger population, same real price data - not a simulation or a re-run against history with different parameters, see PROJECT_DOCUMENTATION.md's backtest_engine.py notes). A stock/crypto win rate from one population can differ from the other without either being wrong - they're not the same sample.
Every real signal type, swing and scalp together — green marks types clearing a 30% win rate, not a claim of profitability by itself, just a visual anchor since profit factor/avg win vs loss (tables below) is what actually determines that.
The min_rr gate checked R:R against a signal's planned entry, so a bracket order filling away from the signal price could realize a materially worse ratio than the gate cleared — confirmed live: GSAT opened at 0.49:1 despite clearing a 1.5 minimum. R:R is now re-tested at submission against a live quote, and a signal whose edge has drifted below the minimum is skipped rather than entered. The ratio each position actually got is also recorded from its real fill, so any residual slippage is measurable instead of only findable by hand.
13 of 43 closed positions (all BTC) exited on a 2-hour hold-time timeout rather than a stop or target. Root cause: crypto signals were labelled "scalp" by default, but their stops and targets are sized from daily ATR — a target sits about two daily ranges away, which two hours cannot reach. Only positions that hit their stop quickly ever resolved, and BTC, the least volatile name in the universe, mostly didn't — so the timer collected BTC. The hold limit is now derived from each position's own geometry, so a multi-day target is given a multi-day horizon instead of being closed at 120 minutes, with a longer backstop still preventing a slot being held indefinitely.
Scale-outs (a partial profit-take followed by the final close of the same position) were counted as two separate closed trades, inflating both trade count and win rate. Now grouped by position — a partial fill shows as a badge on its position's single row, not a second row.
Signal-Level Factor Research and Feature Redundancy on Research Lab were silently checking field names that don't exist in the real data (a stale key list left over from an earlier factor-consolidation change) — every real correlation/bucket read was against the wrong keys. Restored to the real shape and verified against live production data.
Publishing the defects next to the numbers is the point — a performance page that never changes its own methodology isn't being audited.
| Type | Resolved | Win Rate | Profit Factor | Sharpe | Max DD | Avg Win | Avg Loss |
|---|---|---|---|---|---|---|---|
| GAP | 65 /72 logged | 33.8% | 0.71 | -0.13 | 31.5% | +2.50% | -1.94% |
| PM_HIGH | 47 | 29.8% | 0.57 | -0.23 | 21.2% | +1.82% | -1.35% |
| CANDLE | 115 | 26.1% | 0.75 | -0.12 | 24.1% | +2.24% | -1.06% |
| FIB_BOUNCE | 38 | 13.2% | 0.42 | -0.33 | 12.6% | +1.29% | -0.46% |
| VWAP | 87 /107 logged | 12.6% | 0.13 | -1.01 | 59.1% | +1.22% | -1.34% |
| EMA_PULL | 35 | 11.4% | 0.15 | -0.76 | 23.2% | +0.99% | -0.85% |
| HOD_BREAK | 38 | 7.9% | 0.10 | -1.03 | 29.7% | +1.28% | -1.11% |
| MOM | 149 /180 logged | 5.4% | 0.06 | -1.32 | 83.0% | +1.34% | -1.32% |
| BULL_FLAG | 4 | — | — | — | — | — | — |
Sample-size warning applies below 30 resolved trades — treat those numbers as directional, not conclusive. "Resolved" only counts entries with a real recorded exit price — the "/N logged" figure shows how many were logged in total, including any still open or never filled.
| Type | Resolved | Win Rate | Profit Factor | Sharpe | Max DD | Avg Win | Avg Loss |
|---|---|---|---|---|---|---|---|
| SETUP | 78 | 43.6% | 0.64 | -0.17 | 26.6% | +0.88% | -1.12% |
| BREAKOUT | 16 | — | — | — | — | — | — |
Sample-size warning applies below 30 resolved trades — treat those numbers as directional, not conclusive. Rows under 5 show their raw count instead of a colored pill since a single trade can otherwise read as a false 0%/100%. Real swing volume is still thin compared to scalp, so profit factor/Sharpe/drawdown will often show "—" until more trades resolve.
| Type | Resolved | Win Rate |
|---|---|---|
| MOMENTUM | 210 | 62.4% |
| BREAKOUT | 153 | 61.4% |
| ALT_RS | 78 | 52.6% |
| VWAP | 304 | 49.0% |
Sample-size warning applies below 30 resolved trades — treat those numbers as directional, not conclusive. Rows under 5 show their raw count instead of a colored pill since a single trade can otherwise read as a false 0%/100%.