← Blog

What a good signal log tells you (and a bad one hides)

When a bot does something surprising, the first question is always the same: why did it take that trade? If your log can’t answer, you’re debugging blind.

A bare log tells you what happened:

14:32:05  ENTRY  ES  LONG  3 @ 5100.50

A good log tells you why:

14:32:05  SIGNAL  ES  LONG  NR7_breakout · vol z=2.1 · OFI+
14:32:06  FILL    ES  3 @ 5100.50  slip +0.5t

That one line — the reason — is the difference between “the bot is broken” and “the bot did exactly what I told it to, and what I told it was wrong.” The setup name, the indicator values that triggered it, the filters that passed: that’s the audit trail your future self needs.

It matters most for the trades that didn’t happen. The strategy you’re proud of is defined as much by what it skips as what it takes. When a textbook setup goes by and the bot stays flat, a good log shows you the filter that vetoed it — a volume z-score that came in at 1.8 instead of 2.0, an order-flow imbalance that flipped. Without that, you’ll “fix” a filter that was working and break the edge.

Three habits pay off:

  1. Name your setups. NR7_breakout beats signal_1.
  2. Log the numbers that fired it, not just the verdict.
  3. Log the vetoes too — a skipped trade with a reason is a data point, not a gap.

ElevateMind streams every signal with its reason to the dashboard, next to the fill and the slippage. The point isn’t to admire the trades that worked. It’s to understand the ones that didn’t — while you can still do something about it.

Activate your code →