Alpha Generator, LLM-seeded genetic search
A language model proposes; evolution disposes. We use an LLM as a novelty oracle to seed the first population of quantitative trading signals, then let crossover and elitism do the optimising, keeping every survivor an interpretable expression tree.
Quantitative signal research is usually a tradeoff between two failure modes. Hand-engineered factors are interpretable but slow to discover and biased toward what a human already believes. Black-box learned signals search widely but produce weights no risk committee can read. This inquiry asks whether a language model can give us the breadth of an automated search and the legibility of a hand-written factor, by treating the LLM not as the optimiser, but as the thing that decides where the optimiser starts looking.
Hypothesis
The bottleneck in genetic search over trading signals is not the optimiser. Crossover and mutation are cheap. It is the initial population. A random seed wastes most of its generations climbing out of obviously-bad regions. A human seed is good but narrow. The hypothesis: an LLM, prompted with the operator vocabulary and a description of the market regime, can propose a first generation that is both diverse and plausibly-structured, collapsing the search horizon by an order of magnitude while keeping every candidate a readable expression tree.
Method
The system runs as an autonomous loop with four stages. No manual factor engineering sits in the path.
- Seed. The LLM is given the studio's operator grammar, plus a short brief on the universe and horizon. The grammar covers rank, decay, ts_zscore, cs_neutralize, and friends. It returns ~200 candidate signals as typed expression trees, not free text.
- Validate. Each tree is parsed, type-checked against the operator schema, and rejected if it look-ahead-leaks or references unavailable fields. Invalid trees never reach the simulator.
- Evolve. Surviving trees are scored on a walk-forward backtest. The top decile is carried forward by elitism; the rest of the next generation comes from subtree crossover and small-probability point mutation.
- Re-seed. Every few generations the LLM is shown the current elite set and asked for variations it has not already seen, using it as a novelty oracle to break out of local optima the genetic operators settle into.
Where it stands
Early runs support the central claim: an LLM-seeded population reaches a given out-of-sample Sharpe in materially fewer generations than a random seed, and the re-seeding step measurably reduces the rate at which the search stalls on a single structural motif. The signals it surfaces are not always ones a human would have written, but because they remain expression trees, the surprising ones are exactly the ones worth reading.
The honest caveat: novelty is not edge. A diverse, legible, well-optimised signal can still be overfit to the backtest window. The current focus is the validation harness, making the walk-forward protocol strict enough that a surviving tree has earned its place before a human ever looks at it.
Open questions
- QDoes LLM seeding bias the search toward signals that are describable rather than signals that are good? The two correlate, but not perfectly.
- QWhat is the right cadence for re-seeding? Too often and the LLM dominates; too rarely and the population inbreeds.
- QCan the same loop run with a fully on-premise model? (See R·016, where the inference economics decide whether this stays autonomous or stays affordable.)