Architecture
The system is intentionally split into a creative layer and a deterministic layer. LLMs can generate and criticize ideas, but they cannot approve themselves into capital, construct final books, size risk, or report PnL.
┌────────────────────────────────────────────────────────────────────────────┐
│ Layer 1 - LLM research loop │
│ SignalResearcher proposes alpha-signal variants │
│ Adversarial Critic critiques assumptions, leakage risk, and overfit paths │
├────────────────────────────────────────────────────────────────────────────┤
│ Layer 2 - Deterministic execution and risk path │
│ Research significance gates -> Critic null tests -> PM construction │
│ Allocator weights -> PnL and verification │
│ Zero LLM calls in validation, money movement, risk, or accounting │
└────────────────────────────────────────────────────────────────────────────┘Layer 1 - LLM research
SignalResearcher is allowed to be creative. It proposes economically motivated signal variants, states the mechanism, and names expected failure modes. The Adversarial Critic then attacks those proposals before any deterministic gate can admit them.
Layer 2 - Deterministic execution and risk
Research significance tests, Critic null tests, PM portfolio construction, capital allocation, PnL, and walk-forward verification are all deterministic code paths. No LLM sees or changes the money path. Runs are reproducible from synced artifacts.
Deterministic money path
- 1Research significance and internal holdout checks
- 2Dual null validation: signal-shuffle cross-sectional and block-bootstrap time-ordering
- 3Bonferroni family-wise correction over the candidate batch
- 4PM construction under fixed mandates
- 5Allocator weights and realized PnL accounting
The architecture is strongest where it is least magical: language models produce candidates and communication, while validation and capital logic are ordinary code. See the signal gate for the concrete example: all six creative candidates were rejected.