Just closed an architecture block fixing this. Sharing the post-mortem because the lesson generalizes beyond crypto.
**Background** Evolutionary multi-agent crypto trading system. 8 promotion/demotion triggers. Coherence and drawdown thresholds among them. v2 ran 58 days live, +2.37% net, profit factor 1.034, win rate 29.88%. Closed. **The bug** When coherence dropped below threshold (0.30) for a single tick, the agent got demoted to a lower stage. Same with drawdown above 0.20. One bad read → immediate demotion. This isn't a code bug. It's a category-of-decision bug. Coherence and drawdown are continuous noisy signals. They spike. Exchange latency, bad ticks, technical bursts. A single-tick violation often means nothing. Demoting on it = reacting to noise as if it were signal. This was one of four structural issues identified across 266 agents demoted/promoted during the 58 days. **The fix** Temporal hysteresis. The metric must persist in violation for N consecutive ticks before action triggers. COHERENCE_THRESHOLD_CONSECUTIVE = 3 DRAWDOWN_THRESHOLD_CONSECUTIVE = 2 Asymmetric on purpose: - Coherence is noisier → 3 ticks (filters short oscillations) - Drawdown is more physical, false negatives cost more → 2 ticks Discrete-event triggers (pattern detection like falsocampeon) stay one-shot. Different temporal domain. **Almost adopted the wrong framing** My first reasoning was "make T6/T7 consistent with T8, which already accumulates a streak." But T8 is event detection. T6/T7 are signal monitoring. Different rules. The right framing: continuous noisy signals need hysteresis before irreversible action. Period. **What I'm curious about** For those running live algos with signal-based triggers: - How do you handle the noise-filtering threshold (N consecutive)? - Asymmetric thresholds per metric, or single value across triggers? - Bypass-by-severity (immediate action on extreme violation, hysteresis on moderate)? I'm deferring that to a later iteration pending real data calibration. Paper trading next, the system now waits before deciding.
Posted May 12, 2026, 2:40 PM UTC