# Run a backtest

> Every field of the Run dialog, the estimate and its checks, the run quotas, progress, cancelling a run, and what a completed run records.

Source: https://orbitalaip.com/docs/backtesting/run-a-backtest

> [!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.

## Open the dialog

1. **Open the strategy in Backtesting**
   
   

2. **Click the run button**
   
   A draft offers **Run first test…**. A strategy with a run offers **Run…**, which opens the dialog on the run on screen.

Every setting starts fresh, unless the dialog opens on a run; then it lists any setting it could not carry over.

## Period

**Period** is a row of presets: **1M**, **3M**, **6M**, **1Y**, **3Y**, **5Y**, **10Y** and **Custom**, each ending on the day you open the dialog. A daily strategy opens on three years and an intraday strategy on six months. **Custom** takes a start and an end date, or you can drag the window on the strip below the presets.

A preset past how far the data reaches, or past how large a run may be, is greyed out and marked **before the tape** or **too large to run**. See [The estimate was refused](https://orbitalaip.com/docs/backtesting/troubleshooting#the-estimate-was-refused).

## The strategy's settings

**This strategy’s settings** appears only when the strategy declares [parameters](https://orbitalaip.com/docs/backtesting/rule-card-strategies#parameters-a-run-can-vary). A number shows its bounds, such as **Between 2 and 200 (whole numbers)**. A value outside its bounds gets an amber ring and the estimate refuses the run. A choice is a list. A bar choice lists [timeframes](https://orbitalaip.com/docs/glossary#timeframe) such as **Daily bars**; an intraday bar moves an untouched period to six months.

## Symbols, capital and benchmark

**Symbols** is the list the run trades, separated by commas or spaces. It opens on the strategy's own [universe](https://orbitalaip.com/docs/glossary#universe); a different list runs without changing the strategy. A static list may name up to 500 symbols. When a screen picks the universe, the field is locked and reads **This strategy’s screen picks its symbols.**

**Starting capital** is in dollars, $100,000 by default and at least $100. **Benchmark** is SPY by default and is **Compared on the same days.**

## Costs and fills

The **Costs and fills** row states the fill rule and the costs; **Change…** opens the controls.

**Slippage (bps)** is 5 by default and 0 is allowed. [Slippage](https://orbitalaip.com/docs/glossary#slippage) applies to market and stop fills; limit fills never slip.

**Whose trading costs** picks the [cost profile](https://orbitalaip.com/docs/glossary#cost-profile), Alpaca by default; [Cost profiles](https://orbitalaip.com/docs/backtesting/cost-profiles#the-four-profiles) describes each one and why Interactive Brokers is refused.

**How orders fill** offers a market order at the next bar's open, the default, **At the next session’s close**, for daily strategies only, or a limit that rests at a price you set. **Size at the fill** sizes each entry at its [fill](https://orbitalaip.com/docs/glossary#fill) price instead of the decision bar's close: always under the session's close, never under a limit. See [When trades happen](https://orbitalaip.com/docs/backtesting/when-trades-happen#daily-strategies).

A limit order adds these controls:

| Control | Choices |
| --- | --- |
| Offset measured in | Percent of the close, the default, or Multiple of ATR |
| Offset | Above -100 and below 100 percent, or within ±100 ATR; 0.25 by default. A positive offset rests a buy below the close and a sell above it. |
| ATR period (bars) | 1 to 500, 14 by default, under Multiple of ATR |
| When a bar reaches your price | Only if the bar trades through the price (recommended), the default, or As soon as the bar touches the price |
| How long it rests | Until the session ends, or A set number of bars, the default |
| Bars | 1 to 100,000, 3 by default, under A set number of bars |

## Which signals become orders

By default every entry the strategy signals becomes an order, and only buying power turns one away. **Take only the best candidates** ranks each bar's candidates instead. **Rank them by** offers the screener's own order, for a universe picked by a screen with a sort, or the score a [program](https://orbitalaip.com/docs/glossary#program) returned. Either needs entries decided on daily bars, and any other pairing is refused with the reason. **New positions per bar**, **Positions held at once** and, under score only, **Minimum score** set the caps; a blank box is no limit, but at least one must be set.

## Account

The **Account** row reads **Cash account** or **Margin account**. A Rules strategy that sells short needs **Margin account** on, or the estimate refuses the run; a Program strategy's short orders on a cash account are rejected during the run instead. With [margin](https://orbitalaip.com/docs/glossary#margin) on, shorts pay 3% a year in borrow, and the requirements are 50% initial and 25% maintenance; see [Margin defaults](https://orbitalaip.com/docs/backtesting/backtest-vs-forward-test-vs-paper#margin-defaults).

**Limit entry allocations** adds **Maximum per stock (%)**, 50 by default, and **Maximum total gross (%)**, 100 by default, with long and short exposure counted together. Each entry's whole-share quantity is reduced at its fill to fit after costs; later price changes do not force exits.

## The estimate

The right side, **This run will replay**, re-sizes the run after every change: **Symbols**, **Sessions**, and the bar count as **Daily bars** or **Minute bars**.

The credits line reads **Credits: pricing TBD**, or **about N credits** or **up to N credits** where backtests are priced. A run over 250,000 member-sessions adds a checkbox to tick first. A run the workspace cannot cover is refused with **Not enough credits for this run**; see [Credits and billing](https://orbitalaip.com/docs/workspace-and-account/credits-and-billing#backtests).

Under **Before it runs**, the data check reads **The data covers the period**. With a saved watchlist as the universe and **Symbols** left as that list, an amber line names any symbol listed too recently to [warm up](https://orbitalaip.com/docs/glossary#warm-up) by the start, and the earliest start that covers them all. See [The estimate was refused](https://orbitalaip.com/docs/backtesting/troubleshooting#the-estimate-was-refused).

The last line before the button, such as **Run #4 of v3** or **Creates v1**, says where the run lands, and is a menu when there are several versions. See [Change notes on runs](https://orbitalaip.com/docs/backtesting/versions#change-notes-on-runs).

Any setting the dialog refuses shows **This run can’t start yet.** above the reason, and **Run backtest** stays disabled.

## Run quotas

A workspace may have 4 runs queued or running and start 200 in any rolling 24 hours, and a launch past either is refused with **Run limit reached**. See [The run quota is reached](https://orbitalaip.com/docs/backtesting/troubleshooting#the-run-quota-is-reached).

## Start and follow the run

1. **Check the estimate and the version line**
   
   Both describe the exact settings the button submits.

2. **Click Run backtest**
   
   A toast reads **Backtest submitted**, and the strategy page shows the run as **Queued**, then **Running**.

The **Progress** card shows the share of sessions walked and, while the pace is steady, the time left. Its foot reads **The run keeps going if you leave.** Whoever started the run gets a [notification](https://orbitalaip.com/docs/alerts-and-notifications/notifications) when the verdict lands.

## Cancel a run

1. **Click Cancel run… on the strategy page**
   
   It shows to project editors and above while a run is queued or running.

2. **Confirm with Cancel run**
   
   The dialog reads **Cancel this run?** and **Nothing is charged for a cancelled run.**

A cancelled run cannot be resumed; its row stays on the **Runs** tab as **Cancelled**.

## What a completed run records

Each run keeps a row on the **Runs** tab, and **Settings of this run** on the **Report** tab records its settings; see [The Runs view](https://orbitalaip.com/docs/backtesting/reading-results#the-runs-view).

Changing the period or any setting runs the same version again; only a change to the strategy's nodes or code creates a new version. See [Versions and configurations](https://orbitalaip.com/docs/backtesting/versions#versions-and-configurations).
