I've been running an evolutionary trading system for 53 days. Here's what actually happened.
The architecture: agents are generated automatically by EvoMark, evaluated in paper trading, and promoted or killed based on performance metrics. Claude Haiku handles strategy narration and kill/promote decisions via a local LLM router. No human intervention in individual trades.
Numbers so far: 123+ agents generated, ~20 alive at any time, 2,292 real trades executed.
The uncomfortable truth: 93% of PnL came from 3 agents. The other 120 existed, consumed compute, and died.
What those 120 failures taught me:
The system evolved toward the metric, not the market. Agents optimized for Sharpe ratio in backtest and learned historical data patterns instead of market behavior. The backtest looked great. Live performance degraded.
The clone problem was worse. My top 3 agents had identical Sharpe scores and traded the same symbol with near-identical logic. I thought I had diversification. I had three copies of the same bet.
The fixes that actually worked:
Added a coherence metric — ratio between backtest win rate and live win rate. Agents that perform well in backtest but degrade in production get flagged and killed regardless of Sharpe.
Anti-clone filter: correlation > 0.7 between agents on the same symbol kills the weaker one automatically.
Symbol quarantine: 5 symbols with negative historical PnL blocked from promotion entirely.
The meta-lesson:
Running 123 experiments simultaneously is only valuable if your selection mechanism is honest. Optimizing for the wrong metric at scale produces 120 expensive failures and 3 lucky survivors.
The 3 survivors weren't smarter. They were evaluated more honestly.
Happy to answer questions on the architecture, the LLM routing layer, or the evolutionary selection mechanism.