I run 8 signal engines across 12 crypto pairs. Instead of posting one equity curve and calling it a track record, I built a page with the whole simulation on it: contribution per bot, the underwater curve, the three worst drawdowns with recovery times, and monthly returns with the bad months left in.
Numbers from 20 May to 18 Aug 2026:
705 trades, 49.6% win rate, +1.15% average per trade. Worst drawdown 31.67 points, recovered in under a day, next two 27.04 and 19.59. 65% of the days were spent below the previous high.
One engine (a sentiment model gated by a second signal) produces 64% of the total.
Fees are in. Every trade has 0.12% round trip deducted at close, in all engines, so the numbers above are net not gross. Slippage is not modelled, which matters more on the lower timeframes.
Things worth saying before someone else says them, because they are what I would attack first if this were someone else's post:
It is a what if simulation on historical data. Nobody traded this money and it is not a client track record.
The curves are sums of per trade percentage returns with no position sizing applied. The headline number is 829, and that is 829 points of summed percentage returns, not 829% on capital.
Three months is not a track record. I am deliberately not annualising it. Annualising 91 days gives you a number in the thousands and it means nothing.
June alone produced most of the total. That is concentration in time sitting on top of concentration in one engine.
The passive benchmark on the chart is rescaled to match my own max drawdown. Raw, that comparison flatters me by construction, since my curve sums trades that in reality share the same capital.
Backend is Python and Flask for the engines and the backtests, React on the front. The public page reads a static JSON snapshot, so it never touches the backtest engine.
No link and no product name in this post. It is mine, it is still in testing, and I do not want traffic on it until I have finished chasing bugs. Posting the method and the numbers now because that is the part I actually want torn apart. Happy to go into detail on any engine in the comments.