Skip to main content
US EQUITIES CLOSED CRYPTO 24/7
HALAL TRADING ROOM Sharia-screened signals
TERMINAL

1711 closed trades · 53.7% win rate · paper trading

Performance

Real win rate, profit factor, Sharpe, and drawdown per scalp signal type, computed fresh on every load from the actual resolved-signal log.

Why this page exists

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.

Research Lab →

Paper trading. Simulated fills against real prices. No money was at risk, so these results carry no slippage or fill risk a live account would face.

Signals tracking now
78

open signals with a live stop and target

Closed trades
1,711

every paper trade resolved and recorded, win or lose — all time, and a different ledger from the signals above

Hit rate
53.7%

over 1,711 closed trades

Average result
+0.65

mean profit per closed trade, in dollars

Cumulative result running total of 1,719 trades with a recorded result, last 365 days · paper trading
⚠️ Data quality checks flagged on the numbers below
WARN58/2702 resolved stock signals are quarantined (incomplete_exit, legacy, excluded from all stats)
WARN433/1413 shadow-scored signals have >50% of factors on neutral-credit fallback
FAIL1 of 67 sealed order-flow archives cannot be decompressed and are silently excluded from every order-flow statistic: order_flow_journal-2026-09-16.jsonl.gz (245339 bytes) - median archive is 4,988,299 bytes
Full detail on Research Lab. Numbers already excluded from win-rate/backtest calculations aren't hidden here again - this banner is about what's still worth treating with caution while a FAIL is active.

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.

closed trades (journal)
1711
win rate (journal)
53.7%
stock win rate (journal)
22.9%n=105
crypto win rate (journal)
55.7%n=1606
stock net P/L (journal)
-19,248-183 per position
crypto net P/L (journal)
+20,366+13 per position
entry slippage (journal, stock)
-5,793 0.26% avg on n=103
share of the stock loss
33%execution, not thesis
scalp signals (backtest, 90d)
879
swing signals (backtest, 90d)
609
stock max loss streak (backtest, 90d)
31
crypto max loss streak (backtest, 90d)
28

By market regime, at entry

Every closed position, grouped by the market regime it was opened in.

Regime at entryAsset PositionsNet P/L Per positionWin rate
Trending crypto 2,103 +15,518 +7 67.5%
Range Bound crypto 626 +6,008 +10 71.2%
Trending stock 82 -10,321 -126 28.0%
Range Bound stock 23 -8,927 -388 4.3%
Unknown crypto 12 -1,160 -97 41.7%

The regime is read from SPY's own trend structure and is applied to every position opened in that window, including crypto — which is a framing, not a claim about the coin. Rows are ordered by population, because a bucket of eight and a bucket of seven hundred are not equally informative. Regime snapshots are taken periodically, so each position takes the most recent reading at or before its entry; anything opened before the first snapshot is counted as unknown rather than assigned to the nearest one.

Win Rate by Signal Type

Every type that has resolved at least one trade, swing and scalp together. The dashed line marks 30%, a visual anchor only.

SETUPswing
34.5%n=87
PM_HIGHscalp
22.2%n=63
MEAN_REVERSIONswing
21.0%n=510
GAPscalp
16.2%n=74
CANDLEscalp
12.0%n=100
VWAPscalp
9.7%n=134
ORBscalp
7.3%n=137
EMA_PULLscalp
3.3%n=30
MOMscalp
0.8%n=258
HOD_BREAKscalp
0.0%n=73

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.

Known Issues

fixed

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.

fixed

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.

fixed

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.

fixed

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.

Scalp — By Signal Type (90d)

TypeResolvedWin Rate Profit FactorSharpeMax DD Avg WinAvg Loss
PM_HIGH 63 /66 logged 22.2% 0.32 -0.50 49.2% +1.75% -1.60%
GAP 74 /75 logged 16.2% 0.35 -0.49 54.6% +3.13% -1.74%
CANDLE 100 /101 logged 12.0% 0.28 -0.61 63.9% +2.94% -1.46%
VWAP 134 /135 logged 9.7% 0.13 -1.00 74.7% +1.55% -1.29%
ORB 137 /154 logged 7.3% 0.03 -1.82 82.2% +0.56% -1.39%
EMA_PULL 30 /32 logged 3.3% 0.05 -1.74 34.4% +2.07% -1.44%
MOM 258 /263 logged 0.8% 0.02 -2.61 92.9% +2.46% -1.05%
HOD_BREAK 73 /76 logged 0.0% — -3.71 65.1% — -1.43%
BULL_FLAG 8 — — — — — —
FIB_BOUNCE 2 — — — — — —
PM_HIGHscalp 22.2%
Resolved63/66
Profit Factor0.32
Sharpe-0.50
Max DD49.2%
Avg Win+1.75%
Avg Loss-1.60%
GAPscalp 16.2%
Resolved74/75
Profit Factor0.35
Sharpe-0.49
Max DD54.6%
Avg Win+3.13%
Avg Loss-1.74%
CANDLEscalp 12.0%
Resolved100/101
Profit Factor0.28
Sharpe-0.61
Max DD63.9%
Avg Win+2.94%
Avg Loss-1.46%
VWAPscalp 9.7%
Resolved134/135
Profit Factor0.13
Sharpe-1.00
Max DD74.7%
Avg Win+1.55%
Avg Loss-1.29%
ORBscalp 7.3%
Resolved137/154
Profit Factor0.03
Sharpe-1.82
Max DD82.2%
Avg Win+0.56%
Avg Loss-1.39%
EMA_PULLscalp 3.3%
Resolved30/32
Profit Factor0.05
Sharpe-1.74
Max DD34.4%
Avg Win+2.07%
Avg Loss-1.44%
MOMscalp 0.8%
Resolved258/263
Profit Factor0.02
Sharpe-2.61
Max DD92.9%
Avg Win+2.46%
Avg Loss-1.05%
HOD_BREAKscalp 0.0%
Resolved73/76
Profit Factor—
Sharpe-3.71
Max DD65.1%
Avg Win—
Avg Loss-1.43%
BULL_FLAGscalp —
Resolved8
Profit Factor—
Sharpe—
Max DD—
Avg Win—
Avg Loss—
FIB_BOUNCEscalp —
Resolved2
Profit Factor—
Sharpe—
Max DD—
Avg Win—
Avg Loss—

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.

Swing — By Signal Type (90d)

TypeResolvedWin Rate Profit FactorSharpeMax DD Avg WinAvg Loss
SETUP 87 /88 logged 34.5% 0.25 -0.45 62.3% +1.04% -2.24%
MEAN_REVERSION 510 /530 logged 21.0% 0.60 -0.14 96.0% +3.57% -1.59%
BREAKOUT 12 — — — — — —
SETUPswing 34.5%
Resolved87/88
Profit Factor0.25
Sharpe-0.45
Max DD62.3%
Avg Win+1.04%
Avg Loss-2.24%
MEAN_REVERSIONswing 21.0%
Resolved510/530
Profit Factor0.60
Sharpe-0.14
Max DD96.0%
Avg Win+3.57%
Avg Loss-1.59%
BREAKOUTswing —
Resolved12
Profit Factor—
Sharpe—
Max DD—
Avg Win—
Avg Loss—

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.

Crypto Backtest

resolved (90d)
4547
win rate (90d)
48.9%
profit factor (90d)
3.03
TypeResolvedWin Rate
ALT_RS 995 56.0%
MOMENTUM 1036 50.2%
BREAKOUT 1003 49.5%
VWAP 1513 43.0%
ALT_RS 56.0%
Resolved995
Win Rate56.0%
MOMENTUM 50.2%
Resolved1036
Win Rate50.2%
BREAKOUT 49.5%
Resolved1003
Win Rate49.5%
VWAP 43.0%
Resolved1513
Win Rate43.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%.

Tell us what's working, what's confusing, or what you want to see next — read by a real person, not a form that goes nowhere.