# Forward testing

> Freeze a completed run and re-run it after each settled session, on the same chart and trade list. Start one, read it, and see what updates cost and how a test stops.

Source: https://orbitalaip.com/docs/backtesting/forward-testing

> [!IMPORTANT] Disclaimer
> Backtest results are hypothetical and do not predict future performance. Nothing here is investment advice: Orbital computes the rules you supplied and recommends nothing. Orbital is not a registered investment adviser or broker-dealer. Costs are as modelled by the chosen cost profile and may differ from live trading.

## What a forward test is

A [forward test](https://orbitalaip.com/docs/glossary#forward-test) takes a completed backtest run and keeps running it on new trading days. The run's [version](https://orbitalaip.com/docs/glossary#version), settings, symbols, costs and starting capital are frozen when you start. The forward part uses the backtester's own fills, and nothing is sent to a broker. Paper trading is a Trade deployment; see [Backtest, forward test and paper](https://orbitalaip.com/docs/backtesting/backtest-vs-forward-test-vs-paper).

A strategy has one forward test at a time. Rules and Program strategies can be forward tested; a Signals strategy, which replays rows you supplied, cannot. Chat, agents and the Orbital AI connector cannot start or stop a forward test, or see its card.

## Start a forward test

1. **Open the strategy in Backtesting**
   
   The page opens on a run still in progress, else on the main version's newest completed run. To test a different run, click its period in the **Runs** view. **Forward test…** is offered to project editors and above on a completed run that has a saved version, while no forward test is running.

2. **Click Forward test…**
   
   The **Forward test** dialog states the **Version**, frozen, and the **Settings**, which are the run on screen's.

3. **Click Start forward test**
   
   The header line under the strategy's settings reads **Forward test starts** with the start date, then **the first update lands around noon ET the next day**.

> [!NOTE] One version, frozen
> To move a test to a newer version, stop it and start a new one from that version's completed run. A start from a page opened earlier is refused with **This strategy already has a forward test running. Stop it first.**

## How updates work

The start date is the first session that opens after you click. After each session [settles](https://orbitalaip.com/docs/glossary#settled-session), Orbital's half-hourly check runs the frozen run again with only its end date moved; if the session's data has not reached Orbital yet, the update waits for the next check. Updates land around noon ET, the first on the day after the start date. Friday's session settles on Saturday, so Saturday's update covers Friday.

Every update runs from the first day of the frozen run's period and keeps positions open at the end, so each longer update repeats the shorter one's trades and curve. A later correction to the history, such as a restated split, can still shift the backtest part. Updates run only while the Backtesting app is on in the project and the strategy is not in Trash.

While the test runs, the header line reads **Forward testing since** the start date, then **· waiting for its first update** or **· updated through** the newest settled session. If the latest update could not start, the line adds **The last update could not start:** with the reason, and Orbital tries again at the next check.

Each update is an ordinary run, billed like a run of its window, and it counts toward the workspace's [run limits](https://orbitalaip.com/docs/backtesting/troubleshooting#the-run-quota-is-reached). At most one update per workspace, and four across Orbital, are queued or running at once.

## What the page shows

While the test runs, the strategy page opens on its newest update. The chart shades everything from the start date in a band labelled **Forward · since** the start date, and the **Forward** toggle hides and shows it. The five tiles and **Overall statistics** describe the whole run, backtest part and forward part together.

Between the chart and the tiles, the **Forward test** card isolates the forward part and counts its sessions:

- **Return since start**: the forward part's [return](https://orbitalaip.com/docs/glossary#return) from the close before the start date, beside the [benchmark](https://orbitalaip.com/docs/glossary#benchmark)'s over the same days.

- **Max drawdown**: the deepest fall inside the forward part, or **none**.

- **Against the backtest**: a range bar and a sentence. They show where the backtest's stretches of the same length landed nine times in ten, their median, and whether the forward return is inside that range. A backtest too short for twenty such stretches says so.

**Latest trades** and the **Trades** view tint trades entered on or after the start date, below a divider reading **Forward test started** with the date. The **Runs** view marks updates with a **Forward** chip.

## The live view during the session

For an intraday strategy that the live engine can run, the test also steps through the session minute by minute, with simulated fills. The card gains a **Today** row, the chart a dashed segment after the last settled close, and the trade list **Open** and **Live** rows. The live view is provisional: when the session's settled update lands, the settled curve takes over. It is not billed and does not count toward the run limits.

Besides **Live** during the session and **Closed** between sessions, the **Today** chip can read:

- **Prices only** after **the live data had a gap** or **its program failed on a live bar**. The strategy makes no new decisions, but orders placed earlier can still fill, and stops, targets and time stops still apply.

- **Waiting** for market data, or **Paused** when there is no room: a workspace has at most three live views at once, and Trade's deployments come first. The settled update still runs.

- **Settled only**, with the reason the strategy has no live view, such as **runs on daily bars**, **screened universe** or **fills at the next close**.

## Stop a forward test

1. **Open More actions**
   
   On the strategy page, open the **More actions** menu (⋯).

2. **Click Stop forward test…**
   
   The dialog **Stop the forward test?** says that nothing more is run, and that what the test has done so far stays on this strategy.

3. **Click Stop forward test**
   
   The header line reads **Forward test stopped**, and the card reads **stopped on** the date. **Forward test…** is offered again, and a new test starts from whichever completed run you pick, with a new start date.

## When a test stops itself

A test stops itself when its window outgrows one run or its updates are refused, and a single failed update is retried. See [A forward test stopped](https://orbitalaip.com/docs/backtesting/troubleshooting#a-forward-test-stopped).
