For eleven consecutive nights the bot froze at 00:00 UTC — stopped scanning for several minutes, then quietly recovered on its own. No crash, no alert at first; the kind of fault that hides because the system heals before anyone looks.
The cause: the nightly report ran a query against a 17-million-row table with no index for it, and that one query blocked the bot's entire event loop while it ground through — every night, at the same moment the daily reset fired.
The fix was a single database index. The harder part was the eleven nights of measurement it took to characterize the pattern precisely before touching anything — because changing the wrong thing would have produced a clean-looking system built on a misdiagnosis. Every loss gets reported here alongside every win. This was a loss, and now it isn't.
Bot activity — not financial advice.