How to read this report. The ML model learned from price history up to 2026-08-13. Trades closed after that date are the forward test: the model had not seen those prices, so this is how it performs on new data, and it is the only part of the report that measures the ML strategy fairly. Trades closed before it are the training period: the model had already seen those prices, so its results there look better than they really are and are shown only for contrast. The conventional strategies (MACD, Heikin-Ashi, Wedge, Ehlers RFS, AEMA, Zero-Lag, Pivot) do not learn from data, so the date matters less for them, but they are shown over the same two periods so every strategy is compared on the same dates. Return basis: net profit ÷ the dollar amount of stock bought at entry.
Order types in this evaluation: every BUY signal is filled market-on-open on the bar after the signal, at that bar’s open. No buy-stop, limit or stop-loss orders: the curves measure the raw strength of the signals, not order handling. Every exit follows the strategy’s own exit rule, also at the next open. Live ML BUY signals are not capped per day (Settings: ML buys/day = 0), so the back-test ML trades are not capped either.
Trades taken by the ML strategy on prices the model had not seen. The conventional strategies are in the tables below. Position sizing: Every trade was sized independently at about $6,994 of stock ($6,754–$7,184; whole shares of a fixed dollar stake), and profits were NOT reinvested: the curve is the plain running sum of each trade's net profit, starting from $0, not a compounding account balance.
| Group | Trades | Symbols | Net profit | Expectancy $ | Expectancy % | Win rate | Avg win | Avg loss | Profit factor | Max DD | Ret / MaxDD | Ulcer | Sharpe | Top-5 share | Sym HHI | Avg days | Max losing streak |
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| All trades | 3,874 | 363 | $1,482,531 | $383 | 5.47% | 63.7% | $732 | $229 | 5.61 | $29,106 | 50.94 | 41.5 | 0.123 | 14.4% | 0.019 | 18.9 | 30 |
| Forward test | 251 | 190 | $74,777 | $298 | 4.26% | 57.0% | $666 | $190 | 4.65 | $2,811 | 26.60 | 1.2 | 0.371 | 20.3% | 0.021 | 19.1 | 7 |
| Training period | 3,623 | 363 | $1,407,754 | $389 | 5.55% | 64.1% | $736 | $232 | 5.68 | $29,106 | 48.37 | 42.9 | 0.121 | 15.2% | 0.020 | 18.9 | 30 |
Every ML trade closed after the model’s training cutoff, in close-date order, starting from $0; the number in parentheses in the legend is the trade count. The conventional strategies are listed in the linked strategy data table but not drawn here: each symbol runs whichever conventional strategy did best on that symbol’s own past, so their lines would be best-of selections on different stocks, not a like-for-like comparison with the model. Position sizing: Every trade was sized independently at about $6,994 of stock ($6,754–$7,184; whole shares of a fixed dollar stake), and profits were NOT reinvested: the curve is the plain running sum of each trade's net profit, starting from $0, not a compounding account balance.
Why the ML line moves in steps: the model scores every symbol on its own, so one market-wide setup can open many positions on the same day, and those positions then rise, fall and exit together — a same-day batch behaves like one large bet, not many independent ones. 18 of the 77 forward-test trades were entered on 2026-09-01 and closed 2026-09-15 to 2026-09-21 (5 winners, net −$1,179): that batch is the flat or falling stretch between trades 49 and 77 on the chart. The live per-day cap on ML buy signals exists to limit this; it is not applied to the back-test trades shown here.
Each path re-draws the same number of trades from the realized forward-test trade profits with replacement (bootstrap) and accumulates them in the drawn order, so it shows the range of outcomes the same edge could have produced in a different sequence. The realized path is drawn on top — it is the ML line from the chart above. Bands are the 5–95% and 25–75% envelopes of the paths at each trade count; the center line is the median. Position sizing: Every trade was sized independently at about $6,994 of stock ($6,754–$7,184; whole shares of a fixed dollar stake), and profits were NOT reinvested: the curve is the plain running sum of each trade's net profit, starting from $0, not a compounding account balance. The resampled paths use the same per-trade dollar profits, so they inherit that sizing: starting from $0 with no compounding, a path's value after k trades is simply the sum of k drawn trade profits.
Read it as: with this trade count and this per-trade distribution, a drawdown around the 95th-percentile figure is ordinary bad luck, not evidence the edge is gone. If the realized path sits above the 90th percentile the live sequence has been luckier than the edge supports; below the 10th, unluckier. Resampling assumes trades are independent and the distribution is stationary, which overstates confidence when trades cluster in one regime or one sector — see the same-day batches noted under the chart above: each batch behaves like one large bet, so the true spread is wider than these bands.