My Trading Bot Made Zero Trades in a Month. That Was the Useful Part.
29 September 2026
Trading Strategy Diary, Entry 01
This is a diary, not a promotion. It will publish the flat months and the dead ends on the same terms as anything else. If a month is boring, the entry says so. No P&L that does not exist. The first entry is, by construction, the boring one.
The build
The system I’m paper-testing has two lanes and one human. A local LLM does the research and makes the proposals. A deterministic Python bot does the execution. And I approve before anything real happens, including “real” in a paper account. The reason the LLM never touches the money is the same reason I never approve it in my head: one of them has to be the part that’s easy to audit.
For this month the bot ran on its own machine against the perpetual futures market — 12 perps, live price data, a $10,000 paper account. No live orders. No paper orders, it turns out, either.
The numbers that actually happened
26 days (full run window) paper capital $10,000 in, $10,000 out P&L 0.0% positions opened 0 data live market data, 12 perps
Read that again. A bot built to trade did not trade. Not once. In twenty-six days of live data, the account went from $10,000 to $10,000, and that is the entire equity curve.
The bug that flattered itself
The zero had a cause, and the cause was worth the month’s price. The bot was skipping its own decision windows. Four times it logged a “missed decision” on its 30-minute windows and moved on. From the outside that looked deliberate — the bot had decided those windows weren’t worth trading. It hadn’t been getting round to deciding at all.
So the fix was boring: patch the window, then add a regression test so the decision path is exercised on every run. A bot that silently skips its own decision windows is a bot that reports its own silence as conviction. I would very much rather it tell me it skipped, every time, in a way a test can check.
The arithmetic that matters
Here is the part that explains why the month being empty is not a bug in the strategy — it was the strategy, working. A round trip costs roughly 0.8 percent: the two fees plus the spread it eats getting in and out. The carry side of the trade pays roughly 0.03 percent a day. Divide the cost by the carry and you get about 26 days to break even. One round trip per month. That is the whole problem, and it fits in one line of arithmetic:
~0.8% round-trip cost vs ~0.03% per day carry ≈ 26 days to break even. One round trip per month.

Every extra trade I could have talked myself into that month would have made the number worse. The bot did exactly the right thing, and the right thing produced a flat line. The flat line is the finding.
The call
No-go on real money. Tweak, then four more weeks of paper. And the tweak list is deliberately short, because the first item is not a tuning knob: observability comes before parameter tuning. I want the decision window fully visible — what it evaluated, what it skipped, and why — before I touch any parameter, because the one real failure this month lived in the decision loop, not the strategy. If I can’t see the bot’s “no,” I can’t tell a correct “no” from a silent skip, and the only thing that would force the bot to say which one it was, is the regression test.
What this is, from the inside
This is what “finding an edge” actually looks like from the inside: arithmetic, a bug that hid in plain sight, and a month where the only defensible move was to do nothing and document it. I notice that the content about trading bots I ever see from other people is either a green equity curve or a course. If the edge were a screenshot, it would be the screenshot, not the course. That gap is the tell.
What I’d do differently
I’d have instrumented the decision window before the rest of the stack was finished, because that is where this whole failure was hiding, and I found it the slow way. I’d also published the flat line sooner — it took the whole month of “probably just warm-up” to accept that the flat line was the result, not a delay in it.
Next in the diary: the micro-cap research probes — a different project, a different lane, where three checks were run before any code was written, and one of them was designed to kill the idea.