Going live safely

The disciplined checklist before any real capital — the strict paper→live gate, the GO LIVE dialog and its required ceiling, go-live refusals, measured costs, the testnet harness, wallets and capital slices, phantom recovery, and the decay kill-switch.

Going live means a strategy stops filling inside Forven's simulation and starts sending real orders to an exchange. That is a different category of risk, and Forven treats it as one. This page is the operator's checklist for the moment before real capital: what must be true, what the strict paper → live_graduated gate verifies, what can refuse a go-live, and the controls that keep watching once a strategy is deployed.

This page assumes you have already run a strategy through the gauntlet and proven it in paper — the stage the public site calls "candidate." It covers the transition and the safeguards on the far side.

Forven is a research tool. Results are not predictive, no setting creates an edge, and nothing here is financial advice. The controls below limit downside — they do not guarantee against loss.

Reality: live is unsupported

Live trading is not a supported feature of the open-source build. The supported way to run Forven is paper.

There is no "live mode" switch. A strategy sends real orders once you promote it to the Live stage (live_graduated) with a typed GO LIVE; a Bot Factory bot does so once you arm it live. Those orders go to HyperLiquid testnet by default. Real funds additionally take turning the testnet setting off, FORVEN_ALLOW_MAINNET=1 in the backend's environment, and a HyperLiquid agent wallet.

So the supported path never reaches real capital. Read this page anyway: the gate, the sizing model, and the decay kill-switch are the machinery you would have to understand cold before taking the unsupported, at-your-own-risk step. See execution modes.

The strict paper → live gate

The lifecycle is quick_screen → gauntlet → paper → live_graduated, with a gate at every transition. Paper risks no capital, so by default the door into paper only stops strategies that are broken or clearly losing; the checks against luck and selection bias are recorded there and enforced here. The paper → live gate is the strict one. By default (the Default stance and the Sequential test evidence rule), a strategy in paper must have:

  • Forward time and trades: at least 30 days in paper and 20 closed forward trades, recorded by the current execution engine.
  • Forward evidence that confirms the backtest: a sequential test that reads go. The forward trades must not be significantly worse than the backtest, the backtest and forward evidence combined must clear a bar corrected for how many strategies were in paper (at a 5% false-positive rate), and the forward Sharpe must be positive. Paper return must also be above 0% and paper drawdown below 15%.
  • Historical edge: a profit factor of at least 1.5, and an out-of-sample Sharpe no more than 1.5× in-sample.
  • The full robustness battery, re-checked: walk-forward, Monte-Carlo, cost-stress, and regime-split — not the gauntlet's earlier verdicts taken on trust — plus the walk-forward fold rate, parameter jitter and robustness score that the door only recorded.
  • A deflated Sharpe of at least 0.90, computed on the backtest plus forward trades.
  • The breadth test: the unchanged rule run on 15 coins, with any verdict but Home coin only. A missing run is started from the gate, and the strategy keeps paper trading meanwhile.
  • The baseline hurdle, enforced: walk-forward out-of-sample alpha must remain after removing what buy-and-hold of the same asset and a fixed trend-following rule made over the same days. A failure keeps the strategy in paper; nothing is archived. With fewer than 60 out-of-sample days the result is insufficient evidence and does not block.
  • Complete funding data, and validation data that does not diverge from the live venue by more than 2%.
  • The held-back test, last: one walk-forward on recent data research never saw, run once every other check passes. A pass is required.
  • One coin. A multi-coin paper strategy is held with Multi-coin live review pending until the live order path is reviewed for several coins; it keeps paper trading.

With Live gate evidence rule set to Fixed floors (pre-plan) (Settings → Lab → Paper to Live gates), the forward requirement goes back to at least 14 days and 10 closed paper trades, a paper Sharpe (per-trade t-statistic) of at least 1.0 and a paper profit factor of at least 1.2, and the breadth test isn't required. Under Strict paper, the held-back test, the deflated Sharpe and the robustness checks were already enforced before paper.

The strategy's gate report shows this as Paper -> Live Promotion Gate, and The Forge's peek panel as Paper → live checklist.

Then a human confirms. By default every go-live needs your typed GO LIVE and a per-asset notional ceiling. An Allow automatic go-live setting exists; it is off, and saving it on asks for a typed LIVE. See promotion gates for every threshold and override.

Paper P&L is not a proxy for live P&L. Paper fills locally at the cached market price with modeled costs and never touches an exchange. A clean paper record proves the signal logic and risk plumbing; it does not promise live fills at those prices.

Measured costs, not assumed costs

A strategy is validated against assumed fees and slippage. Before real money, you want to know its real fills fit inside those assumptions. Forven's execution-quality watchdog records expected-versus-actual fill skew per trade. The optional Live-graduation recommender uses it: it only recommends a strategy for live when the mean measured round-trip cost sits inside the budget the strategy was validated at, with enough measured fills to trust the number. The recommender ships off, and approving its recommendation records intent only ("Approving only records that you agree. Nothing trades yet…") — going live stays a separate, deliberate step.

Go-live refusals

Some go-lives are refused outright, even when forced or overridden, because the strategy would be refused entries its backtest assumed it could take:

  • Coin and side conflict. Another live strategy already trades the same coin in the same direction. HyperLiquid holds one position per coin per wallet, so the two would refuse each other's entries. The refusal names the other strategy: demote it first.
  • Wallet capacity. A wallet could not hold the margin of every live strategy that routes to it if they all entered at once, within the 80% per-wallet margin cap. The refusal states roughly how much to add to that wallet, or you can keep fewer strategies live on that side.

The reverse direction is guarded too. A strategy holding open live trades cannot leave the Live stage — not to paper, the gauntlet, or the graveyard, even when forced — because only live strategies manage live positions' exits. Close its positions from Live Trades first. A blocked move raises a critical risk alert, and a periodic sweep alerts on any live trade whose strategy is no longer live.

Steps: the pre-flight checklist

Work through this in order. Each step is a thing to confirm, not a thing to rush.

Read the pipeline board. On /pipeline, the strategy's card should show warm-up complete and no blockers at the paper stage other than a pending held-back test, which runs once every other live check passes. Open it in The Forge and confirm walk-forward passed out of sample, the sequential test reads go and the breadth test has a verdict; confirm the held-back test passed before you approve — trust OOS metrics over in-sample.

Review the paper record. On Paper Trades, check the close-reason mix, the per-trade costs, and whether entries and exits look like the strategy you tested rather than a drifted version of it. If the strategy page shows an Execution check panel, its settings no longer match what was validated — use Restore validated settings first.

Set risk limits deliberately. In Settings → Trading, set Max drawdown, Max daily loss, Max risk per trade, and the live position cap. These now apply to real money. See risk controls.

Set up the exchange on testnet first. In Settings → HyperLiquid, add your wallet and API (agent) wallet credentials, keep Hyperliquid testnet on, and confirm the account reads back. See HyperLiquid integration.

Check the testnet harness. The daily testnet execution harness proves the whole live order lifecycle — open, protective stop, trailing tighten, close — against the real testnet. Confirm its last run passed: GET /api/ops/testnet-harness/last.

Decide the ceiling. Each live strategy sizes inside an equal slice of the account. The go-live ceiling is the largest position (USD) it may hold per asset; opens above it are refused, not downsized. Start small — you can change it later on the desk's Details tab or the risk page.

Only then, the unsupported switches for real funds. Turn Settings → HyperLiquid → Hyperliquid testnet off; the save bar asks you to type LIVE under "Save changes that affect real money?". Set FORVEN_ALLOW_MAINNET=1 in the backend's environment (there is no UI control) and use an agent wallet — a master private key is refused on mainnet. All of this is at your own risk. Skip this step to go live on testnet.

Go live. Open Approvals and click Approve (go live) on the strategy's promotion. (Choosing Live from the stage control in the strategy page header also asks for the ceiling and a typed GO LIVE; it records the ceiling and queues that promotion for approval.) The dialog, "Go live with …?", shows the strategy, its market, the Network ("Testnet (no real money)" or "Mainnet (real money)") and, on mainnet, the Mainnet switch ("Armed: orders will be placed" or "Not armed: mainnet orders are refused"). Enter the Per-asset notional ceiling (USD), type GO LIVE, and click Approve and go live.

If a promotion gate blocks the stage-control route, the panel shows why and offers Override gate & promote, which promotes directly (with the ceiling and GO LIVE you entered) and is logged. It does not bypass the go-live refusals above or the mainnet gate.

# Is the strategy live-eligible? (read-only)
Invoke-RestMethod -Uri "http://127.0.0.1:8003/api/lifecycle/strategies/$StrategyId/paper-live-readiness"

# Why not yet, and what would unblock it? (read-only)
Invoke-RestMethod -Uri "http://127.0.0.1:8003/api/lifecycle/strategies/$StrategyId/explain"

What you'll see

After go-live, the strategy's stage reads Live (live_graduated), it appears on Live Trades, and its new trades are tagged execution_type='live'. The top strip shows Live ×N (strategies and bots that can send real orders) in place of Mode: PAPER, next to a TESTNET or MAINNET badge. On the risk page, the live position count starts moving (separately from paper) and the sizing panel shows its slice.

Live capital: pooled, then divided

Live strategies share one real account, so the sizing model matters before you run more than one.

  • Equal capital slices. The account is divided across the live cohort first; each strategy risk-sizes inside equity / N. Promoting another strategy divides risk rather than stacking it, so worst-case portfolio risk stays at max_risk_per_trade of the account. If the wallets could not hold every live strategy's worst case at once, all slices shrink to fit.
  • Global limits still apply. max_concurrent_positions, the portfolio budget, the per-wallet margin cap, and the correlation-weighted exposure cap are checked against the whole live book at every open.
  • Direction books (optional). Longs and shorts can route to separate HyperLiquid sub-accounts; each wallet has its own capacity check.
  • The kill-switch is account-wide. Drawdown is measured across the real account, not per strategy.
  • Mainnet is capped tighter. On mainnet, leverage is capped at 3× and the risk limits can only be tightened — see mainnet locks.

Paper is the opposite: every paper session is an isolated $10,000 container that never pools with live capital, and paper sizes off its own full equity.

Phantom recovery: keeping records honest

Because live positions live on the exchange, local records can drift from exchange truth — an order fills but the write fails, or a record never captures its order ID. Reconciliation runs continuously to fix that:

  • Phantom position — a filled exchange position with no matching trade record. Recovery creates a record; it is not linked to a strategy and may need review. An orphan with no protective stop gets an emergency stop.
  • Pending open reconcile — a trade with no exchange order ID. Its risk slot is freed after 180s, and the exchange-verify path closes a genuinely unfilled trade.
  • Empty reads are confirmed. A single empty position read is never enough to declare live positions closed; the reconciler waits for a second consecutive empty read (reconcile_empty_read_confirm_count, default 2).
  • Startup gate. After a restart, new live entries wait until the daemon confirms the exchange is aligned. Open positions stay protected by their resting stops meanwhile.

Recovery state is on the risk page. A discrepancy count that does not clear on the next cycle is your cue to look closer.

Staying live is conditional

Passing the gate is not a permanent license:

  • Ramp-in. A graduated strategy gets 25% of its size in weeks 1–2, 50% in weeks 3–4, and 100% after — and the ramp only advances if live performance holds up.
  • Decay kill-switch. The decay tracker compares each live strategy's recent Sharpe against its baseline. If it degrades past decay_kill_switch_pct (default 30%), the strategy is retired to archived automatically and stops trading. The retirement is logged on its timeline.
  • Portfolio kill-switch. The account-wide circuit breaker trips at max_drawdown_pct (default 30%) on three consecutive breaching readings, closes every live position, and halts live trading until you reset it. Resetting re-baselines the high-water mark, so treat a reset as an act of judgment.

Caveats

  • Live is unsupported. Paper trading is the supported mode. The steps above describe the unsupported escape hatch; taking it is entirely at your own risk.
  • "Live" defaults to testnet. The Live stage sends real orders, but to HyperLiquid testnet unless you turn testnet off and set FORVEN_ALLOW_MAINNET=1. The desk labels live orders "real money" either way.
  • The HWM must be known. The portfolio kill-switch only fires when the high-water mark is set; it syncs from the account at startup.
  • A failed emergency close needs a human. If a kill-switch sweep cannot close a position after its retries, that position stays open for manual review.
  • Recovered phantom trades are unlinked and may need operator attention.
  • Every number here is an illustrative default, not a recommendation. Tune them to your own risk budget.