Argus is the execution end of the platform. It keeps signal generation, portfolio construction, risk and execution in separate services, so adding a strategy never means touching the trading path. It runs against a paper account.
The chain
Strategy sleeves emit portfolio weights. Adapters translate outside systems, including Meridian, into one canonical target format. The portfolio engine aggregates the sleeves into a single book. A central risk layer applies gross and net caps and position limits. The execution service publishes the resulting targets, a QuantConnect client polls them and posts fills back, and the broker integration handles Interactive Brokers.
Each of those is its own service with its own version number, twelve of them at the moment. That is more moving parts than a single script, and it is the reason a new strategy is a new service instead of an edit to the thing that places orders.
Strategies port from QuantConnect unchanged
Argus implements LEAN's interfaces directly. Twenty indicators under LEAN's own class names, the TradeBar, QuoteBar and Slice shapes, consolidators, DateRules and TimeRules, and the portfolio construction hooks.
A strategy written against QuantConnect drops in without a rewrite. I research in QuantConnect and run here, and I do not maintain two versions of the same logic.
Backtest and live read the same data
There are two data views behind one interface, one live and one for backtests, and both serve the same factor surfaces out of Meridian: group scores, risk metrics, IC weights and regime posteriors. The backtest view clamps all of it to the point-in-time boundary.
So a backtest sees what the live sleeve would have seen on that date, because it is reading through the same code path.
Why should I believe a backtest?
That question is behind most of the work here. A backtest is the only evidence I have before real money, and it is very easy to make one say what I want. So a lot of this has gone into trusting the numbers, not into new signals.
Returns credit implied cash dividends each marking day, so income names like REITs and utilities are no longer understated. Walk forward runs are written to the database with a pass, fail or inconclusive verdict and a Monte Carlo 95% drawdown, so there is a record instead of a notebook. Hand picked conviction sleeves are excluded from performance based allocation, because backtesting a basket you chose with hindsight is look-ahead by construction.
My favourite one: index symbols such as the Russell 2000 index itself were sitting in the tradeable universe, and their weekend bars put a phantom Saturday point into the equity marking grid. That alone produced a 117% drawdown that never happened. Excluding index symbols fixed it.
The broker integration
Most of the failure modes in live trading are not strategy failures. Fills are deduplicated on execution id, executions are backfilled after a reconnect, a heartbeat detects a connection that is up but dead, reconnects are gated around the broker's own scheduled resets, calls are rate limited, and the gateway restarts on a schedule before it can rot.
None of that shows up in a backtest. All of it decides whether the system is still trading on Friday.
Where it is now
The stack runs end to end against a paper account. The honest gaps: conviction weighting is merged but not fully integrated into the live allocator, and the parity ports of the QuantConnect strategies are still in progress.