Zen Trading logoZen Trading

Engineering · May 21, 2026 · 5 min read

One weight vector, from backtest to broker

Every quant team has lived some version of this story: a strategy looks excellent in research, gets re-implemented for production, and the live track record never resembles the backtest. The usual suspects — lookahead bias, survivorship, fill assumptions — get the blame. But the most common cause is more mundane: the research code and the production code are two different programs, and they disagree in a hundred small ways.

Our infrastructure, FinRL-X, removes the translation step. The weight vector your backtest produces is the same object the execution layer consumes. There is no re-implementation, because there is nothing to re-implement.

Strategies as swappable modules

A strategy in FinRL-X is four decisions, each behind an interface: selection (what universe), allocation (what weights), timing (when to act), and risk (what limits apply). Researchers iterate on any module independently and compose them freely — a reinforcement-learning allocator can sit behind the same risk module as a simple momentum sleeve, and both are tested by the same engine that will trade them.

Because the engine is shared, a backtest is not a simulation of the strategy — it is the strategy, run against history instead of a broker. The day you go live, the only thing that changes is the data feed and the order endpoint.

Risk checks where they belong

Pre-trade risk lives in the execution layer, not in the strategy code. Position limits, drawdown controls, and sanity checks on order size run on every order, regardless of which strategy produced it. Humans oversee allocation and risk; machines handle the loop from signal to order.

This is the same infrastructure behind our fund and our Quant Strategy & Infrastructure subscription. If you want the longer technical treatment, the platform is published — and the dashboards show it running, live.