Docs / Guides

The pipeline

Hand a strategy that passed its gate to a conveyor that takes it, under fixed rules, as far as live-ready.

Every stage between a passing backtest and a live run is already a tool: gate_check, strategy_freeze, holdout_evaluate, trading_deploy. The pipeline strings them together. You submit a candidate once, and a ten-minute tick moves it forward as far as the evidence allows. Nothing is skipped, and every step writes the same ledger rows it would if you called the tool yourself.

The stages#

Stage What happens Leaves by
submitted Waits for a backtest of the spec on the split gate_check passes, or fails and is rejected
confirming Freezing pinned new parameters, so one backtest of the frozen spec runs (one trial) the frozen spec passes its own gate
frozen The one-shot holdout is spent net-positive after costs, or rejected
incubating A paper run on the split's own bars 14 days and 4 fills without a halt, or retired
live_ready You are told. Nothing else happens on its own pipeline_promote
live A live run beside the paper shadow a halt or pipeline_retire

A rejection is final for that spec. Submitting it again would be re-running a test until it says yes, so the pipeline refuses it; register a genuinely different rule instead, which is counted as a new trial.

Using it#

pipeline_submit(strategy_id, split_id, note="the mechanism, in one sentence")
pipeline_status()                 # the board, and the rules in force
pipeline_status(candidate_id)     # one candidate's full history
pipeline_advance(candidate_id)    # take the next step now, not at the next tick

Submit only after gate_check has passed. The pipeline would reject a failing spec anyway, and the rejection closes that spec for good.

The last step is yours#

Two acts put real money in front of the venue, and both are deliberate:

  1. trading_arm switches the account to live, with a per-order and a daily cap. Arming alone moves nothing: a paper run on an armed account stays paper.
  2. pipeline_promote(candidate_id, phrase="PROMOTE TO LIVE", capital_usd=…) starts a live run for a live_ready candidate, with no more than the policy ceiling (default $100).

The paper run keeps running beside the live one, so the live fills always have something to be compared against.

Why paper incubation is not evidence#

Two weeks of paper profit and loss is noise, and the pipeline does not read it as performance. The evidence is the holdout. Incubation catches the mechanical failures a backtest cannot: a spec that never sees the bars it expects, orders below the venue minimum, a drawdown on the first weeks of real prices.

The rules in force#

pipeline_status returns them. The operator of a server can change them.

Rule Default
Holdout spent automatically once the gate passes yes
Paper capital $1,000
Paper drawdown that halts the run 10%
Minimum paper incubation 14 days, 4 fills
Paper return floor at the end of incubation −5%
Largest live promotion $100
Live drawdown that halts the run 10%
A submission with no backtest is dropped after 7 days

Read this page as Markdown: /docs/pipeline.md